// === WaitlistForm.jsx ===
// Waitlist form — submits email to Formspree.
// Replace FORMSPREE_ID with your form ID from formspree.io/register
// e.g. if your endpoint is https://formspree.io/f/xabc1234 → set FORMSPREE_ID = 'xabc1234'
const FORMSPREE_ID = 'xojywqow';
const FORMSPREE_URL = 'https://formspree.io/f/' + FORMSPREE_ID;
const WaitlistForm = ({ size = 'md', dark = false, fullWidth = false, quizAnswers = null }) => {
const [email, setEmail] = React.useState('');
const [state, setState] = React.useState('idle'); // idle | submitting | success | error
const isBig = size === 'lg';
const inputPad = isBig ? '18px 20px' : '14px 16px';
const btnPad = isBig ? '18px 26px' : '14px 22px';
const fontSize = isBig ? 16 : 15;
const submit = (e) => {
e.preventDefault();
if (!email.includes('@')) return;
setState('submitting');
const payload = {
email,
source: 'US waitlist — coming soon page',
};
if (quizAnswers) {
payload.quiz_q1 = quizAnswers[0];
payload.quiz_q2 = quizAnswers[1];
}
fetch(FORMSPREE_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: JSON.stringify(payload),
})
.then(function(res) { setState(res.ok ? 'success' : 'error'); })
.catch(function() { setState('error'); });
};
if (state === 'success') {
return (
✓
You're on the list.
We'll email you the morning of May 15.
);
}
if (state === 'error') {
return (
Something went wrong. Try again or email
hello@viteezy.com .
setState('idle')} style={{ marginLeft: 10, cursor: 'pointer', background: 'none', border: 'none', color: '#C62828', font: '600 14px/1 "Sofia Pro"', textDecoration: 'underline' }}>Retry
);
}
return (
);
};
window.WaitlistForm = WaitlistForm;
// === Countdown.jsx ===
// Countdown to May 15, 2026 (US public launch).
const Countdown = ({ dark = false, compact = false }) => {
const target = new Date('2026-05-15T09:00:00-04:00').getTime();
const [now, setNow] = React.useState(Date.now());
React.useEffect(() => {
const id = setInterval(() => setNow(Date.now()), 1000);
return () => clearInterval(id);
}, []);
const diff = Math.max(0, target - now);
const days = Math.floor(diff / 86400000);
const hours = Math.floor((diff / 3600000) % 24);
const mins = Math.floor((diff / 60000) % 60);
const secs = Math.floor((diff / 1000) % 60);
const units = [
{ n: days, l: 'days' },
{ n: hours, l: 'hrs' },
{ n: mins, l: 'min' },
{ n: secs, l: 'sec' },
];
const bg = dark ? 'rgba(255,255,255,0.06)' : 'var(--paper-0)';
const border = dark ? 'rgba(255,255,255,0.12)' : 'var(--ink-100)';
const numColor = dark ? '#fff' : 'var(--ink-900)';
const lblColor = dark ? 'rgba(255,255,255,0.6)' : 'var(--ink-500)';
return (
{units.map((u, i) => (
{String(u.n).padStart(2, '0')}
{u.l}
{i < units.length - 1 && (
·
)}
))}
);
};
window.Countdown = Countdown;
// === QuizTease.jsx ===
// Interactive 2-question quiz tease. After completion, captures email + quiz answers
// and submits both to Formspree alongside the waitlist form.
const QUIZ = [
{
q: 'What\u2019s your #1 health goal?',
choices: ['More steady energy', 'Better sleep', 'Stronger immunity', 'Sharper focus'],
},
{
q: 'How often do you feel tired by 3pm?',
choices: ['Every day', 'A few times a week', 'Rarely', 'Never'],
},
];
// Map answer combos to a suggested plan
const PLAN_MAP = {
'More steady energy': { name: 'The Steady Day', supplements: ['B-Complex', 'CoQ10', 'Omega-3', 'Magnesium', 'D3+K2'] },
'Better sleep': { name: 'The Wind-Down', supplements: ['Ashwagandha KSM-66', 'Magnesium', 'Omega-3', 'Vitamin C'] },
'Stronger immunity': { name: 'The Shield', supplements: ['Vitamin C', 'Zinc', 'D3+K2', 'Elderberry', 'Probiotic'] },
'Sharper focus': { name: 'The Clear Head', supplements: ['Lion\'s Mane', 'Omega-3', 'B-Complex', 'Magnesium', 'Ginkgo'] },
};
const QuizTease = () => {
const [step, setStep] = React.useState(0);
const [picks, setPicks] = React.useState([null, null]);
const [pickLabels, setPickLabels] = React.useState([null, null]);
const isDone = picks.every(p => p !== null);
const current = QUIZ[step];
const plan = isDone ? (PLAN_MAP[pickLabels[0]] || PLAN_MAP['More steady energy']) : null;
const pick = (i, label) => {
const nextPicks = [...picks]; nextPicks[step] = i; setPicks(nextPicks);
const nextLabels = [...pickLabels]; nextLabels[step] = label; setPickLabels(nextLabels);
setTimeout(() => {
if (step < QUIZ.length - 1) setStep(step + 1);
}, 180);
};
return (
{/* Progress bar */}
Quiz preview · {Math.min(step + 1, QUIZ.length)} of {QUIZ.length}
{QUIZ.map((_, i) => (
))}
{!isDone ? (
<>
{current.q}
{current.choices.map((c, i) => {
const selected = picks[step] === i;
return (
pick(i, c)} style={{
font: '500 15px/1.3 "Sofia Pro"',
textAlign: 'left',
padding: '16px 18px',
background: selected ? 'var(--viteezy-teal-50)' : '#fff',
color: 'var(--ink-900)',
border: `1px solid ${selected ? 'var(--viteezy-teal-500)' : 'var(--ink-200)'}`,
borderRadius: 12,
cursor: 'pointer',
transition: 'border-color 120ms, background 120ms',
}}>{c}
);
})}
>
) : (
Your preview plan
{plan.name}
{plan.supplements.map(p => (
{p}
))}
{/* Email capture — quiz answers passed through to Formspree */}
Get notified when your personalized plan is ready on May 15:
{ setStep(0); setPicks([null, null]); setPickLabels([null, null]); }} style={{
marginTop: 14,
font: '600 12px/1 "Sofia Pro"',
padding: '8px 14px',
background: 'transparent',
border: '1px solid var(--ink-200)',
borderRadius: 999,
color: 'var(--ink-500)',
cursor: 'pointer',
}}>Retake quiz
)}
);
};
window.QuizTease = QuizTease;
// === Bundles.jsx ===
// Scroll-reveal hook — fades + slides element in when it enters the viewport
const useReveal = () => {
const ref = React.useRef(null);
const [visible, setVisible] = React.useState(false);
React.useEffect(() => {
const el = ref.current;
if (!el) return;
const obs = new IntersectionObserver(([entry]) => {
if (entry.isIntersecting) { setVisible(true); obs.disconnect(); }
}, { threshold: 0.12 });
obs.observe(el);
return () => obs.disconnect();
}, []);
return [ref, visible];
};
// Two product paths: Personalized Sachets (subscription) + Standup Pouches (individual)
const POUCHES = [
{ tag: 'Immunity', title: 'Vitamin D3+K2', desc: 'Supports bone density, immunity and mood. D3 + K2 for optimal absorption.', image: 'assets/product-vitd.png' },
{ tag: 'Omega-3', title: 'Algae-Based Omega-3', desc: 'Algae-derived EPA+DHA. Sustainably sourced, no fishy aftertaste.', image: 'assets/ingredient-fishoil.png' },
{ tag: 'Cleanse', title: 'Detox', desc: 'Spirulina-based daily detox. Binds toxins, supports liver and gut health.', image: 'assets/ingredient-spirulina.png' },
{ tag: 'Recovery', title: 'Sleep', desc: 'Lavender, chamomile and melatonin precursors. Drift off, stay asleep.', image: 'assets/product-sleep.png' },
{ tag: "Men's Health", title: "Men's Vitality", desc: 'Maca root + zinc + B-complex. Stamina, testosterone balance, focus.', image: 'assets/product-maca.jpg' },
{ tag: "Women's Health", title: 'Women Hormone Balance', desc: 'Pomegranate, lavender and adaptogens for cycle balance and calm.', image: 'assets/product-hormone.jpg' },
{ tag: 'Performance', title: 'Energy', desc: 'B-vitamins, CoQ10 and citrus bioflavonoids. Sustained energy, no crash.', image: 'assets/product-energy.jpg' },
{ tag: 'Kids', title: "Children's Multivitamin", desc: 'Vitamin D, B-complex and iron in child-safe doses. Supports growth and focus.', image: 'assets/product-kids.jpg' },
];
const Bundles = () => {
const [refSachet, visibleSachet] = useReveal();
const [refPouch, visiblePouch] = useReveal();
const revealStyle = (visible, delay = 0) => ({
opacity: visible ? 1 : 0,
transform: visible ? 'translateY(0)' : 'translateY(40px)',
transition: `opacity 0.7s ease ${delay}s, transform 0.7s ease ${delay}s`,
});
return (
Two ways to get Viteezy
Personalized sachets orindividual pouches.
{/* Path 1 — Personalized Sachets */}
Subscription
Personalized daily sachets
Take a short quiz. We match you with 1–2 daily sachets with 4–7 supplements each with your name on it. Delivered monthly on a 1–3 month subscription.
{['Quiz-matched to your goals', 'Your name on every sachet', '1, 2 or 3-month plans', 'Adjust or cancel anytime'].map(f => (
✓
{f}
))}
{/* Path 2 — Standup Pouches */}
Buy individually
Standup pouches
Our scientifically developed, custom formulated products — each available as a standalone standup pouch. No quiz required. Buy the ones you know you need.
{/* 4+4 product grid */}
{POUCHES.map((p, i) => (
{ if (el) { const obs = new IntersectionObserver(([e]) => { if (e.isIntersecting) { el.style.opacity = 1; el.style.transform = 'translateY(0)'; obs.disconnect(); } }, { threshold: 0.15 }); obs.observe(el); } }} style={{
borderRadius: 20, overflow: 'hidden',
border: '1px solid var(--ink-100)',
background: 'var(--paper-0)',
opacity: 0, transform: 'translateY(32px)',
transition: `opacity 0.6s ease ${i * 0.08}s, transform 0.6s ease ${i * 0.08}s`,
}}>
{p.tag}
{p.title}
{p.desc}
))}
);
};
window.Bundles = Bundles;
// === Differentiators.jsx ===
// Three-up "why Viteezy" section.
const DIFFS = [
{
n: '01',
t: 'Personalized, not assumed.',
d: 'A 2-minute quiz — built with a expert — maps your goals and lifestyle to 4 to 7 supplements.',
},
{
n: '02',
t: 'Clean ingredients, nothing extra.',
d: 'No artificial fillers, no synthetic binders. Just what the quiz says you need, sourced for absorption.',
},
{
n: '03',
t: 'One sachet a day.',
d: 'Delivered as a monthly roll. No pill organizers. No stacking conflicts. No guessing.',
},
];
const Differentiators = () => (
);
window.Differentiators = Differentiators;
// === SocialProof.jsx ===
// Dutch-origin social proof section.
// US audiences trust European wellness provenance — lean into "from the Netherlands" specifically.
const STATS = [
{ n: '1M+', l: 'daily sachets taken' },
{ n: '30,000+', l: 'Dutch & Belgian subscribers' },
{ n: '4.5★', l: '2,699 reviews' },
{ n: '2019', l: 'founded in Amsterdam, NL' },
];
const SocialProof = () => (
{/* Subtle NL flag stripes as a decorative accent top-right */}
{/* Mini NL flag */}
Made in the Netherlands
Europe's personalized vitamin brand, now coming stateside.
Viteezy started in 2019 out of Bussum, a small town outside Amsterdam. Four years later, more than thirty thousand people across the Netherlands and Belgium take a Viteezy sachet every morning. We're bringing the same personalized plans, clean ingredients, and European wellness standards to the US.
{/* Welcome kit photo — the "what you actually get" moment */}
The welcome kit
Every member gets the same box Dutch subscribers get.
A 30 to 90-day sachet strip personalized to your quiz, a tin box, and a welcome card. Shipped from our US fulfillment center starting May 15.
As featured in Dutch press
{['Quote', 'Volkskrant', 'Elle NL', 'Sprout', 'FD'].map(p => (
{p}
))}
);
window.SocialProof = SocialProof;
// === DutchStory.jsx ===
// Dutch-origin editorial section — the café flyer photo IS the story.
// "Geef €10 korting" (Dutch: "Give €10 off") visible in the photo is genuine proof of EU operation.
const DutchStory = () => (
{/* Left: editorial copy on dark */}
The Dutch story
Four years in the wild,
before your first sachet.
Viteezy started in 2019 in Amsterdam — a small town half an hour from Amsterdam. We spent six years refining the quiz, ingredients, and sourcing in the Netherlands and Belgium before ever considering a US launch.
So when you take the quiz on May 15, you're not a guinea pig. You're the thirty-thousandth-and-first person on a plan that already works.
{[
{ n: '2019', l: 'Founded · Amsterdam, NL' },
{ n: '🇳🇱 🇧🇪', l: 'Nederland & België' },
{ n: 'EU-GMP', l: 'Manufacturing standard' },
].map(s => (
))}
{/* Right: café flyer photo — literal Dutch-language proof */}
);
window.DutchStory = DutchStory;
// === Footer.jsx ===
// === Hero.jsx ===
const Hero = () => (
Loved in the Netherlands · Coming soon to the US
Supplements built
around you.
Personalized daily sachets on subscription, or scientifically formulated single products in standup pouches — two ways to get exactly what your body needs.
✦
Join now and get $5–$15 off your first subscription — first 1,000 members only.
{/* Bento grid: beach lifestyle + placeholder for second upload */}
Member · Lisa, Amsterdam
"I used to forget. Now it's just breakfast."
);
window.Hero = Hero;
// === App.jsx ===
const TWEAKS = /*EDITMODE-BEGIN*/{
"showCountdownStrip": true
}/*EDITMODE-END*/;
const App = () => {
const [tweaks, setTweaks] = React.useState(TWEAKS);
const [editMode, setEditMode] = React.useState(false);
// Tweaks host wiring
React.useEffect(() => {
const handler = (e) => {
if (e.data?.type === '__activate_edit_mode') setEditMode(true);
if (e.data?.type === '__deactivate_edit_mode') setEditMode(false);
};
window.addEventListener('message', handler);
window.parent.postMessage({ type: '__edit_mode_available' }, '*');
return () => window.removeEventListener('message', handler);
}, []);
const updateTweak = (key, value) => {
const next = { ...tweaks, [key]: value };
setTweaks(next);
window.parent.postMessage({ type: '__edit_mode_set_keys', edits: { [key]: value } }, '*');
};
return (
{/* Top notice strip */}
{tweaks.showCountdownStrip && (
Dutch personalized vitamins
·
Landing in the US May 15, 2026 · Waitlist open
)}
{/* Nav */}
{/* Hero */}
{/* Differentiators */}
Why Viteezy
A simpler way to actually take your vitamins.
{/* Dutch story — full-bleed editorial, before bundles */}
{/* Bundles / two-path section */}
{/* Quiz tease */}
The quiz
Built by a expert.
Eighteen questions on lifestyle, goals, and health. Each one mapped to specific, scientifically-grounded recommendations. Try a two-question preview.
{/* Social proof */}
{/* Final waitlist CTA */}
Join the US waitlist
Be the first to take the quiz on May 15.
First 1,000 members on the list get $5–$15 off their first subscription.
{/* Tweaks panel */}
{editMode && (
)}
);
};
ReactDOM.createRoot(document.getElementById('root')).render( );