// search-page.jsx — /search page (desktop + mobile) // // Pattern: a clear search-hero, a filter chip row, a result-rich list, // load-more at the bottom. Reuses Header / Footer / page-frame styling. // Demo data only — visual mock, not functional. const SEARCH_QUERY = "gotthard"; const SEARCH_RESULTS = [ { kind: 'Angebot', bg: 'bg-mountain-sunset', title: 'Gotthard-Rundfahrt', body: 'Legendäre Passroute über den historischen Gotthard — Geschichte, Panorama und Abenteuer in einer Tour. Inkl. Tremola und Hospiz.', crumb: 'Angebot · Saisonale Angebote', date: null, }, { kind: 'Linie', bg: 'bg-alps', title: 'Linie 401 · Flüelen – Göschenen', body: 'Die Hauptachse durch das Reusstal bis zum Gotthardportal. Verkehrt täglich im Halbstundentakt.', crumb: 'Fahrplan · Linien', date: null, }, { kind: 'News', bg: 'bg-mountain-day', title: 'Sonderfahrten Gotthard-Hospiz im August', body: 'Während der Sommerferien führen wir zusätzliche Wochenend-Sonderfahrten zum Hospiz durch — auf Wunsch mit Führung.', crumb: 'Aktuelles · News', date: '23. Juni 2025', }, { kind: 'Seite', bg: 'bg-bus-night', title: 'Spezialbillette & Kombi-Angebote', body: 'Kombi-Tickets mit Urner Seilbahnen, Skigebieten und Partner-Transportunternehmen — auch für die Gotthard-Route.', crumb: 'Angebot · Tickets', date: null, }, { kind: 'FAQ', bg: 'bg-mountain-day', title: 'Bis wann fährt der Bus über den Gotthardpass?', body: 'Der Busbetrieb über den Gotthardpass ist saisonal. Die Strecke ist in der Regel von Juni bis Oktober befahrbar — abhängig von den Schneeverhältnissen.', crumb: 'Häufige Fragen', date: null, }, { kind: 'Angebot', bg: 'bg-lake', title: 'Tellbus — Schnellbus durch den Seelisbergtunnel', body: 'Schnellbusverbindung Altdorf – Luzern. Fahrzeit knapp 45 Minuten, direkt vom Bahnhof — eine schnelle Alternative zur Gotthardachse.', crumb: 'Angebot · Tellbus', date: null, }, ]; const SEARCH_FILTERS = [ {label: 'Alle', count: 23, active: true}, {label: 'Angebot', count: 8}, {label: 'Linien', count: 4}, {label: 'Fahrplan', count: 3}, {label: 'News', count: 5}, {label: 'Seiten', count: 3}, ]; // ───────── Result row (desktop) ───────── function SearchResultRow({r}) { return ( {/* Thumb / kind chip */}
{r.kind === 'Linie' && r.line ? (
{r.line}
) : r.kind === 'FAQ' && !r.bg ? (
?
) : (
)}
{/* Body */}
{r.kind} {r.crumb} {r.date && <> {r.date} }

{highlight(r.title, SEARCH_QUERY)}

{highlight(r.body, SEARCH_QUERY)}

{/* Affordance arrow */}
); } // Word-highlight helper — wraps the query in a function highlight(text, q) { if (!q) return text; const re = new RegExp(`(${q.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'gi'); const parts = text.split(re); return parts.map((p, i) => re.test(p) ? {p} : {p} ); } // ───────── Desktop SearchPage ───────── function SearchPage() { return (
{/* Search hero — calm light surface, big input */}

Suche

{/* Search input — pill-shaped, large */}
e.preventDefault()} style={{ display: 'flex', alignItems: 'center', gap: 12, background: 'white', border: '1.5px solid var(--gray-900)', borderRadius: 999, padding: '8px 8px 8px 26px', maxWidth: 760, boxShadow: 'var(--shadow-card)', }}>
{/* Result count + sort */}
23 Resultate für „{SEARCH_QUERY}"
{/* Filter row */}
{SEARCH_FILTERS.map(f => ( ))}
{/* Results list */}
{SEARCH_RESULTS.map((r, i) => )}
{/* Helpful suggestions block */}

Beliebte Suchen

{['Fahrplan', 'Klausenpass', 'Linie 401', 'Tellbus', 'Abo', 'FAIRTIQ'].map(t => ( {t} ))}

Direkt zu

    {[ {icon: , label: 'Online-Fahrplan'}, {icon: , label: 'Linien & Karte'}, {icon: , label: 'Aktuelle Störungen'}, {icon: , label: 'Tickets & Tarife'}, ].map(l => (
  • {l.icon} {l.label}
  • ))}

Nicht gefunden?

Unser Team beantwortet Ihre Fragen gerne persönlich — telefonisch oder per Mail.

Kontakt aufnehmen
); } // ───────── Mobile SearchPage ───────── function MSearchPage() { return (
{/* Search hero */}

Suche

e.preventDefault()} style={{ display: 'flex', alignItems: 'center', gap: 8, background: 'white', border: '1.5px solid var(--gray-900)', borderRadius: 999, padding: '6px 6px 6px 18px', }}>
23 Resultate für „{SEARCH_QUERY}"
{/* Filter chips — horizontal scroll */}
{SEARCH_FILTERS.map(f => ( ))}
{/* Results — compact mobile cards */}
{SEARCH_RESULTS.map((r, i) => ( {r.kind === 'Linie' && r.line ? (
{r.line}
) : r.kind === 'FAQ' && !r.bg ? (
?
) : (
{/* Helpful blocks (stacked) */}

Beliebte Suchen

{['Fahrplan', 'Klausenpass', 'Linie 401', 'Tellbus', 'Abo'].map(t => ( {t} ))}

Nicht gefunden?

Unser Team beantwortet Ihre Fragen gerne persönlich — telefonisch oder per Mail.

Kontakt aufnehmen
); } Object.assign(window, { SearchPage, MSearchPage });