/* Landing page — hero + countdown, objectives, agenda, speaker, audience, benefits, software teaser */
const { useState: useS, useEffect: useE } = React;
function Countdown({ iso }) {
const target = new Date(iso).getTime();
const calc = () => {
const d = Math.max(0, target - Date.now());
return {
done: d <= 0,
days: Math.floor(d / 86400000),
hours: Math.floor(d % 86400000 / 3600000),
mins: Math.floor(d % 3600000 / 60000),
secs: Math.floor(d % 60000 / 1000)
};
};
const [t, setT] = useS(calc);
useE(() => {const id = setInterval(() => setT(calc()), 1000);return () => clearInterval(id);}, []);
const W = window.VTC.WEBINAR;
const pad = (n) => String(n).padStart(2, '0');
return (
● {t.done ? 'Webinar đang diễn ra' : 'Sự kiện bắt đầu sau'}
{[['Ngày', t.days], ['Giờ', t.hours], ['Phút', t.mins], ['Giây', t.secs]].map(([l, n]) =>
)}
Hoàn tất khảo sát cuối webinar → nhận bộ quy trình PDF + tài khoản dùng thử phần mềm.
);
}
function Hero() {
const W = window.VTC.WEBINAR;
return (
{W.title.replace(/^WEBINAR\s+/, 'WEBINAR\n').split('\n').map((line, i) => {i > 0 &&
}{line})}
{W.subtitle}
);
}
function Section({ id, alt, eyebrow, title, lead, children }) {
return (
{(eyebrow || title) &&
{eyebrow &&
{eyebrow}}
{title &&
{title}
}
{lead &&
{lead}
}
}
{children}
);
}
function Objectives() {
return (
{window.VTC.OBJECTIVES.map((o) =>
)}
);
}
function Agenda() {
return (
{window.VTC.AGENDA.map((a, i) =>
{String(i + 1).padStart(2, '0')}
{a.tag}
)}
);
}
function Speaker() {
return (
TS.BS. Trần Đình Minh Huy
Chuyên gia quản lý cận thị tại Việt Nam · Cố vấn chuyên môn VietCanThi
Hơn 15 năm kinh nghiệm nhãn khoa và kiểm soát tiến triển cận thị, đã và đang trực tiếp tư vấn setup mô hình quản lý cận thị cho nhiều phòng khám, bệnh viện & trung tâm mắt. Chia sẻ phác đồ cá nhân hóa điều trị và vận hành số hóa đánh giá theo dõi trong nghiên cứu chuyên sâu & thực hành lâm sàng.
);
}
function Audience() {
return (
{window.VTC.AUDIENCE.map((a, i) =>
{String(i + 1).padStart(2, '0')}
{a.title}
{a.desc}
)}
);
}
function Benefits() {
return (
{window.VTC.BENEFITS.map((b) => {
const clickable = b.title === 'Bộ quy trình setup';
return (
window.flashCond() : undefined}
role={clickable ? 'button' : undefined} tabIndex={clickable ? 0 : undefined}
onKeyDown={clickable ? (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); window.flashCond(); } } : undefined}>
{b.highlight &&
Quà tặng}
{b.title}
{b.desc}
);
})}
);
}
function SoftwareTeaser() {
const feats = [
{ icon: 'layers', t: 'Hồ sơ sinh trắc điện tử', d: 'Lưu OD/OS: Sph/Cyl/Axis, AL, K, cyclo theo từng lần khám.' },
{ icon: 'chart', t: 'Biểu đồ tiến triển AL', d: 'Đường percentile theo tuổi, tốc độ mm/năm trước–sau điều trị.' },
{ icon: 'bell', t: 'Nhắc tái khám tự động', d: 'Lịch hẹn & nhắc lịch qua SMS/Zalo (sắp ra mắt).' }];
return (
[ Ảnh app — đã re-skin navy/amber
biểu đồ percentile AL ]
{feats.map((f) =>
-
{f.t}{f.d}
)}
);
}
function Landing() {
return (
);
}
Object.assign(window, { Landing, Countdown });