Skip to content

Commit ded9789

Browse files
feat(faq): add transport strike alert banner for May 18
1 parent a4b848e commit ded9789

2 files changed

Lines changed: 59 additions & 0 deletions

File tree

src/components/faq/FaqPage.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,41 @@ import {
1515
UtensilsCrossed,
1616
Star,
1717
Coffee,
18+
TriangleAlert,
1819
} from 'lucide-react';
1920

21+
/* ── Alert Banner ────────────────────────────────────── */
22+
function AlertBanner({ alert }) {
23+
if (!alert) return null;
24+
25+
return (
26+
<div className='max-w-3xl mx-auto mb-12 bg-amber-50 border border-amber-300 rounded-xl p-6'>
27+
<div className='flex items-center gap-3 mb-3'>
28+
<TriangleAlert className='h-5 w-5 text-amber-600 flex-shrink-0' />
29+
<h2 className='font-bold text-amber-900 text-lg'>{alert.title}</h2>
30+
</div>
31+
<p className='text-amber-800 text-sm mb-4'>{renderRichText(alert.intro)}</p>
32+
{alert.sections.map((section, i) => (
33+
<div key={i} className='mb-3'>
34+
<p className='font-semibold text-amber-900 text-sm mb-1'>{section.label}:</p>
35+
<ul className='space-y-1'>
36+
{section.items.map((item, j) => (
37+
<li key={j} className='text-amber-800 text-sm flex gap-2'>
38+
<span className='mt-0.5 text-amber-500'>-</span>
39+
<span>{renderRichText(item)}</span>
40+
</li>
41+
))}
42+
</ul>
43+
</div>
44+
))}
45+
{alert.closing && (
46+
<p className='mt-4 text-amber-800 text-sm font-medium'>{alert.closing}</p>
47+
)}
48+
</div>
49+
);
50+
}
51+
52+
/* ── FAQ section ─────────────────────────────────────── */
2053
const transportIconMap = { Car, Plane, Train, Bus, MapPin };
2154
const infoIconMap = { Cloud, Landmark, UtensilsCrossed };
2255
const hotelIconMap = { Star, Coffee };
@@ -338,6 +371,9 @@ export default function FaqPage({ data }) {
338371
return (
339372
<div className='bg-gray-50'>
340373
<div className='container mx-auto max-w-7xl px-4 py-16 lg:py-24'>
374+
{/* Alert */}
375+
<AlertBanner alert={data.alert} />
376+
341377
{/* Header */}
342378
<div className='text-center max-w-3xl mx-auto mb-16'>
343379
<span className='text-sm font-bold text-blue-600 uppercase tracking-wider'>

src/config/faq.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,29 @@
44
"title": "FAQ 🍕",
55
"description": "Find answers to the most common questions about Cloud Native Days Italy 2026, and everything you need to plan your visit to Bologna."
66
},
7+
"alert": {
8+
"title": "Transport Strike Alert - Monday, May 18",
9+
"intro": "Quick heads-up: **national strike in Italy on Monday** affecting trains, buses, and airport transit in Bologna.",
10+
"sections": [
11+
{
12+
"label": "Key info",
13+
"items": [
14+
"Trains: [all-day strike](https://www.trenitalia.com/it/informazioni/treni-garantiti-incasodisciopero.html) with [limited service](https://www.trenitalia.com/content/dam/trenitalia/allegati/info/treni-garantiti/TABELLA_A_Treni_garantiti_DPLH.pdf) between 6-9 AM and 6-9 PM",
15+
"Bologna buses: strike during 8:30 AM-4:30 PM and 7:30 PM-EOD",
16+
"Marconi Express: all-day strike, uncertain service"
17+
]
18+
},
19+
{
20+
"label": "Recommendations",
21+
"items": [
22+
"**Arrive early** if traveling Monday",
23+
"Use [Cotabo app](https://www.cotabo.it/) for taxis when in Bologna",
24+
"Build in **extra time**"
25+
]
26+
}
27+
],
28+
"closing": "Already in Bologna on Sunday before 21:00? You're all set."
29+
},
730
"faq": {
831
"label": "Frequently Asked Questions",
932
"eyebrow": "Did you try turning it off and on again?",

0 commit comments

Comments
 (0)