diff --git a/app/components/home/AgendaSection.tsx b/app/components/home/AgendaSection.tsx index a271e06..bd1a5a2 100644 --- a/app/components/home/AgendaSection.tsx +++ b/app/components/home/AgendaSection.tsx @@ -1,19 +1,64 @@ -export default function AgendaSection({ - data, -}: { +"use client"; + +type AgendaItem = { + order: string; + time: string; + title: string; + description: string; +}; + +type Props = { data: { id: string; eyebrow: string; title: string; description: string; - items: { order: string; time: string; title: string; description: string }[]; + items: AgendaItem[]; }; -}) { +}; + +const renderFormattedText = (text: string) => { + if (!text) return ""; + + const lines = text.split("\n"); + + return lines.map((line, lineIndex) => { + // Split the line by markdown bold (**bold**) and italic (*italic*) + const parts = line.split(/(\*\*.*?\*\*|\*.*?\*)/g); + + const renderedLine = parts.map((part, partIndex) => { + if (part.startsWith("**") && part.endsWith("**")) { + return ( + + {part.slice(2, -2)} + + ); + } + if (part.startsWith("*") && part.endsWith("*")) { + return ( + + {part.slice(1, -1)} + + ); + } + return part; + }); + + return ( + + {renderedLine} + + ); + }); +}; + +export default function AgendaSection({ data }: Props) { return (
-
+ {/* Section Header */} +
- + {data.eyebrow}

@@ -25,33 +70,102 @@ export default function AgendaSection({

-
- {data.items.map((item) => ( -
-
- - {item.order} - -
-
- - {item.time} - -
-

- {item.title} -

-

- {item.description} -

-
-
- ))} + {/* Timeline Container */} +
+ + {/* Central vertical line */} +
+ + {/* Timeline Items */} +
+ {data.items.map((item, index) => { + const isEven = index % 2 === 0; + return ( +
+ + {/* Timeline Dot (glowing on hover) */} +
+ + {/* Left/Right alternating grid layout */} +
+ + {isEven ? ( + <> + {/* Left: Card (Desktop) / Full content (Mobile) */} +
+
+ + {item.order} + + {/* Mobile-only time badge */} +
+ + {item.time} + +
+

+ {renderFormattedText(item.title)} +

+ {item.description && ( +
+ {renderFormattedText(item.description)} +
+ )} +
+
+ + {/* Right: Time badge (Desktop-only) */} +
+ + {item.time} + +
+ + ) : ( + <> + {/* Left: Time badge (Desktop-only) */} +
+ + {item.time} + +
+ + {/* Right: Card (Desktop) / Full content (Mobile) */} +
+
+ + {item.order} + + {/* Mobile-only time badge */} +
+ + {item.time} + +
+

+ {renderFormattedText(item.title)} +

+ {item.description && ( +
+ {renderFormattedText(item.description)} +
+ )} +
+
+ + )} + +
+
+ ); + })} +
); } - diff --git a/app/components/home/HomePageClient.tsx b/app/components/home/HomePageClient.tsx index c392b7c..5278d25 100644 --- a/app/components/home/HomePageClient.tsx +++ b/app/components/home/HomePageClient.tsx @@ -6,6 +6,7 @@ import VisionSection from "@/app/components/home/VisionSection"; import StatsSection from "@/app/components/home/StatsSection"; import AgendaSection from "@/app/components/home/AgendaSection"; import SpeakerSpotlightSection from "@/app/components/home/SpeakerSpotlightSection"; +import KeyInviteesSection from "@/app/components/home/KeyInviteesSection"; import GallerySection from "@/app/components/home/GallerySection"; import PartnersCarousel from "@/app/components/home/PartnersCarousel"; @@ -19,6 +20,7 @@ export default function HomePageClient() { + diff --git a/app/components/home/KeyInviteesSection.tsx b/app/components/home/KeyInviteesSection.tsx new file mode 100644 index 0000000..377eede --- /dev/null +++ b/app/components/home/KeyInviteesSection.tsx @@ -0,0 +1,127 @@ +"use client"; + +type KeyInviteeItem = { + no: number; + name: string; + designation: string; + organization: string; + category: string; + country: string; +}; + +type Props = { + data: { + id: string; + eyebrow: string; + title: string; + items: KeyInviteeItem[]; + }; +}; + +const getFlagUrl = (country: string) => { + const mapping: Record = { + Vietnam: "vn", + Malaysia: "my", + Indonesia: "id", + Laos: "la", + China: "cn", + }; + const code = mapping[country]; + return code ? `https://flagcdn.com/w40/${code}.png` : null; +}; + +const CountryFlag = ({ country }: { country: string }) => { + const url = getFlagUrl(country); + if (url) { + return ( + // eslint-disable-next-line @next/next/no-img-element + {country} + ); + } + + // Beautiful gold region globe SVG for APAC + if (country === "APAC") { + return ( + + ); + } + + // Global fallback SVG + return ( + + ); +}; + +export default function KeyInviteesSection({ data }: Props) { + return ( +
+ {/* Section Header */} +
+ + {data.eyebrow} + +

+ {data.title} +

+
+
+ + {/* Cards Grid */} +
+ {data.items.map((item) => ( +
+ {/* Background glowing gradient decoration */} +
+ + {/* Top Row: No & Category Badge */} +
+ + #{String(item.no).padStart(2, "0")} + + + {item.category} + +
+ + {/* Middle: Invitee Name & Title */} +
+

+ {item.name} +

+

+ {item.designation} +

+

+ {item.organization} +

+
+ + {/* Bottom Row: Country Info */} +
+
+ + {item.country} +
+
+
+ ))} +
+
+ ); +} diff --git a/app/data/home.json b/app/data/home.json index db1eb3d..069f88b 100644 --- a/app/data/home.json +++ b/app/data/home.json @@ -52,6 +52,85 @@ } ] }, + "keyInvitees": { + "id": "key-invitees", + "eyebrow": "VIP GUESTS", + "title": "Key Invitees", + "items": [ + { + "no": 1, + "name": "Prof Emeritus Dr. Sureswaran Ramadass", + "designation": "Chairman", + "organization": "APAC IPv6 Council", + "category": "NPO", + "country": "APAC" + }, + { + "no": 2, + "name": "Dr Muhammad Asyraf Mohammad Naim", + "designation": "Director for Training & Consultancy", + "organization": "IPv6 Forum Malaysia", + "category": "Forum", + "country": "Malaysia" + }, + { + "no": 3, + "name": "Ms. Vallikkannu Nagappan", + "designation": "Chief Secretary", + "organization": "APAC IPv6 Council", + "category": "NPO", + "country": "APAC" + }, + { + "no": 4, + "name": "Mr. Hong Thang / Mr. Nguyen Truong Giang", + "designation": "Executive", + "organization": "VNNIC", + "category": "Government", + "country": "Vietnam" + }, + { + "no": 5, + "name": "Mr. Bayu Hanantasena", + "designation": "Strategic Advisor to CEO", + "organization": "Indosat", + "category": "ISP", + "country": "Indonesia" + }, + { + "no": 6, + "name": "Saysomvang Souvannavong", + "designation": "Deputy Director", + "organization": "Laos National Internet Centre", + "category": "Government", + "country": "Laos" + }, + { + "no": 7, + "name": "Dr. Will Liu", + "designation": "Head of Europe Datacom Standard and Industry Development", + "organization": "Huawei", + "category": "ISP", + "country": "China" + }, + { + "no": 8, + "name": "Dr. Gopinath Rao", + "designation": "Chair of AI Standards Task Force", + "organization": "MTFSB", + "category": "Government", + "country": "Malaysia" + }, + { + "no": 9, + "name": "Dr. Navaneethan C Arjuman", + "designation": "Global Coordinator", + "organization": "IPv6 Forum Education Certification Logo Programme", + "category": "NPO", + "country": "Global" + } + ] + }, "agenda": { "id": "agenda", "eyebrow": "SCHEDULE", @@ -60,21 +139,93 @@ "items": [ { "order": "01", - "time": "08:30", - "title": "Opening Ceremony", - "description": "Welcome address by MIC Vietnam and regional digital economy leaders." + "time": "8.30 am – 9.00 am", + "title": "Registration & Networking", + "description": "" }, { "order": "02", - "time": "10:00", - "title": "AI in Data Centres", - "description": "How IPv6 enables hyperscale processing and low-latency fabric." + "time": "9.00 am – 9.15 am", + "title": "Arrival of VIPs", + "description": "" }, { "order": "03", - "time": "14:00", - "title": "Forum: Policy & Scale", - "description": "Closed-door discussion for regulators and industry leaders." + "time": "9.15 am – 9.25 am", + "title": "Welcome Address by **Prof Emeritus Dr Sureswaran Ramadass**", + "description": "*Chairman, IPv6 Forum Malaysia*\n*Chairman, APAC IPv6 Council*" + }, + { + "order": "04", + "time": "9.25 am – 9.35 am", + "title": "Officiating Address by **Vietnam Government Official**", + "description": "Opening Ceremony" + }, + { + "order": "05", + "time": "9.35 am – 9.45 am", + "title": "Launch Ceremony **\"ASEAN IPv6-First & IPv6 Enhanced National Implementation Guideline\"**", + "description": "" + }, + { + "order": "06", + "time": "9.45 am – 10.00 am", + "title": "Morning Coffee Break", + "description": "Press Conference + Photos" + }, + { + "order": "07", + "time": "10.00 am – 10.40 am", + "title": "Keynote Address: **\"IPv6 Enhanced, SRv6 & Net5.5G for AI-Native Data Centres\"**", + "description": "Speaker: Dr. Will Liu, Huawei, China" + }, + { + "order": "08", + "time": "10.40 am – 11.10 am", + "title": "**AI, Cybersecurity & Smart Digital Ecosystems**", + "description": "Speaker: Prof. Sureswaran Ramadass, Malaysia\nChairman, IPv6 Forum Malaysia" + }, + { + "order": "09", + "time": "11.10 am – 11.50 am", + "title": "**Building AI-Ready Data Centre Infrastructure in ASEAN**", + "description": "Speaker: Mr. Bayu Hanantasena, Strategic Advisor to CEO, Indosat, Indonesia" + }, + { + "order": "10", + "time": "11.50 am – 12.30 pm", + "title": "Cybersecurity in AI & Cloud Environments: Safeguarding the Digital Future", + "description": "**Speaker from Vietnam ISP/Regulators**" + }, + { + "order": "11", + "time": "12.30 pm – 2.00 pm", + "title": "Lunch", + "description": "" + }, + { + "order": "12", + "time": "2.00 pm – 3.00 pm", + "title": "**Forum**\nAI Regulation & Data Sovereignty", + "description": "**Moderator from Council**\n**Panellists from Gov Officials or ISPs of Indonesia, Malaysia, Vietnam**" + }, + { + "order": "13", + "time": "3.00 pm – 3.15 pm", + "title": "Afternoon Coffee Break", + "description": "" + }, + { + "order": "14", + "time": "3.15 pm – 5.30 pm", + "title": "**TBD by Local partner(SIMS)**", + "description": "" + }, + { + "order": "15", + "time": "5.30 pm", + "title": "Conference Adjourns", + "description": "" } ] }, diff --git a/app/data/home.vi.json b/app/data/home.vi.json index 83119ad..a832ae4 100644 --- a/app/data/home.vi.json +++ b/app/data/home.vi.json @@ -52,6 +52,85 @@ } ] }, + "keyInvitees": { + "id": "key-invitees", + "eyebrow": "KHÁCH MỜI VIP", + "title": "Khách Mời VIP / Key", + "items": [ + { + "no": 1, + "name": "Prof Emeritus Dr. Sureswaran Ramadass", + "designation": "Chairman", + "organization": "APAC IPv6 Council", + "category": "NPO", + "country": "APAC" + }, + { + "no": 2, + "name": "Dr Muhammad Asyraf Mohammad Naim", + "designation": "Director for Training & Consultancy", + "organization": "IPv6 Forum Malaysia", + "category": "Forum", + "country": "Malaysia" + }, + { + "no": 3, + "name": "Ms. Vallikkannu Nagappan", + "designation": "Chief Secretary", + "organization": "APAC IPv6 Council", + "category": "NPO", + "country": "APAC" + }, + { + "no": 4, + "name": "Mr. Hong Thang / Mr. Nguyen Truong Giang", + "designation": "Executive", + "organization": "VNNIC", + "category": "Government", + "country": "Vietnam" + }, + { + "no": 5, + "name": "Mr. Bayu Hanantasena", + "designation": "Strategic Advisor to CEO", + "organization": "Indosat", + "category": "ISP", + "country": "Indonesia" + }, + { + "no": 6, + "name": "Saysomvang Souvannavong", + "designation": "Deputy Director", + "organization": "Laos National Internet Centre", + "category": "Government", + "country": "Laos" + }, + { + "no": 7, + "name": "Dr. Will Liu", + "designation": "Head of Europe Datacom Standard and Industry Development", + "organization": "Huawei", + "category": "ISP", + "country": "China" + }, + { + "no": 8, + "name": "Dr. Gopinath Rao", + "designation": "Chair of AI Standards Task Force", + "organization": "MTFSB", + "category": "Government", + "country": "Malaysia" + }, + { + "no": 9, + "name": "Dr. Navaneethan C Arjuman", + "designation": "Global Coordinator", + "organization": "IPv6 Forum Education Certification Logo Programme", + "category": "NPO", + "country": "Global" + } + ] + }, "agenda": { "id": "agenda", "eyebrow": "LỊCH TRÌNH", @@ -60,21 +139,93 @@ "items": [ { "order": "01", - "time": "08:30", - "title": "Lễ Khai Mạc", - "description": "Phát biểu chào mừng của Bộ TT&TT Việt Nam và các lãnh đạo kinh tế số khu vực." + "time": "8.30 am – 9.00 am", + "title": "Đăng ký & Kết nối", + "description": "" }, { "order": "02", - "time": "10:00", - "title": "AI trong Trung Tâm Dữ Liệu", - "description": "IPv6 hỗ trợ xử lý siêu quy mô và kết cấu độ trễ thấp như thế nào." + "time": "9.00 am – 9.15 am", + "title": "Đón tiếp đại biểu VIP", + "description": "" }, { "order": "03", - "time": "14:00", - "title": "Diễn Đàn: Chính Sách & Quy Mô", - "description": "Thảo luận kín dành cho cơ quan quản lý và lãnh đạo ngành." + "time": "9.15 am – 9.25 am", + "title": "Phát biểu chào mừng bởi **Prof Emeritus Dr Sureswaran Ramadass**", + "description": "*Chairman, IPv6 Forum Malaysia*\n*Chairman, APAC IPv6 Council*" + }, + { + "order": "04", + "time": "9.25 am – 9.35 am", + "title": "Phát biểu khai mạc bởi **Vietnam Government Official**", + "description": "Opening Ceremony" + }, + { + "order": "05", + "time": "9.35 am – 9.45 am", + "title": "Lễ công bố **\"ASEAN IPv6-First & IPv6 Enhanced National Implementation Guideline\"**", + "description": "" + }, + { + "order": "06", + "time": "9.45 am – 10.00 am", + "title": "Nghỉ giải lao sáng", + "description": "Họp báo + Chụp ảnh lưu niệm" + }, + { + "order": "07", + "time": "10.00 am – 10.40 am", + "title": "Bài phát biểu Keynote: **\"Tối ưu hóa IPv6, SRv6 & Net5.5G cho Trung tâm Dữ liệu tích hợp AI\"**", + "description": "Speaker: Dr. Will Liu, Huawei, China" + }, + { + "order": "08", + "time": "10.40 am – 11.10 am", + "title": "**AI, An ninh mạng & Hệ sinh thái số thông minh**", + "description": "Speaker: Prof. Sureswaran Ramadass, Malaysia\nChairman, IPv6 Forum Malaysia" + }, + { + "order": "09", + "time": "11.10 am – 11.50 am", + "title": "**Xây dựng hạ tầng Trung tâm dữ liệu sẵn sàng cho AI tại ASEAN**", + "description": "Speaker: Mr. Bayu Hanantasena, Strategic Advisor to CEO, Indosat, Indonesia" + }, + { + "order": "10", + "time": "11.50 am – 12.30 pm", + "title": "An ninh mạng trong môi trường AI & Điện toán đám mây: Bảo vệ tương lai số", + "description": "**Speaker from Vietnam ISP/Regulators**" + }, + { + "order": "11", + "time": "12.30 pm – 2.00 pm", + "title": "Nghỉ trưa", + "description": "" + }, + { + "order": "12", + "time": "2.00 pm – 3.00 pm", + "title": "**Tọa đàm**\nQuản lý AI & Chủ quyền dữ liệu", + "description": "**Moderator from Council**\n**Panellists from Gov Officials or ISPs of Indonesia, Malaysia, Vietnam**" + }, + { + "order": "13", + "time": "3.00 pm – 3.15 pm", + "title": "Nghỉ giải lao chiều", + "description": "" + }, + { + "order": "14", + "time": "3.15 pm – 5.30 pm", + "title": "**Nội dung do đối tác địa phương quyết định (SIMS)**", + "description": "" + }, + { + "order": "15", + "time": "5.30 pm", + "title": "Bế mạc hội thảo", + "description": "" } ] },