Übersicht aller UI-Komponenten
Typografie-Klassen für Schriftfamilien, Grössen, Headings, Fliesstext und Gewichte. Keine Props — Nutzung über Tailwind-Klassen.
Comfortaa — Das ist ein Beispieltext
Serif — Das ist ein Beispieltext
Mono — Das ist ein Beispieltext
Tailwind-Skala
Fluide Typografie mit clamp (Mobile → Desktop)
Paragraph — Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Spacing-Klassen von xs bis xxl. Keine Props — Nutzung über Tailwind-Klassen wie p-m oder gap-xl.
Farbklassen inkl. Opacity-Varianten. Keine Props — Nutzung über Tailwind-Klassen wie bg-primary oder text-foreground.
PWA- und Browser-Icons aus public/icons/.
Texteingabefeld mit Label und optionalem Fehlerzustand.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| v-model | string | propsTable.no | '' | Aktueller Eingabewert | |
| label | string | propsTable.no | — | Optionales Feld-Label | |
| placeholder | string | propsTable.no | — | Platzhalter im Eingabefeld | |
| type | string | propsTable.no | 'text' | HTML-Input-Typ | |
| disabled | boolean | propsTable.no | false | Deaktiviert das Eingabefeld | |
| error | boolean | propsTable.no | false | Fehlerzustand mit Icon | |
| autocomplete | string | propsTable.no | — | HTML-autocomplete-Attribut | |
| name | string | propsTable.no | — | HTML-name-Attribut |
Checkbox mit optionalem Label.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| v-model | boolean | propsTable.no | false | Angehakt oder nicht angehakt | |
| label | string | propsTable.no | — | Beschriftung neben der Checkbox | |
| disabled | boolean | propsTable.no | false | Deaktiviert die Checkbox | |
| name | string | propsTable.no | — | HTML-name-Attribut | |
| default (slot) | slot | propsTable.no | — | — | Label-Inhalt, Fallback ist label |
Radio-Button für eine Auswahl innerhalb einer Gruppe.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| v-model | string | propsTable.no | '' | Aktuell ausgewählter Wert der Gruppe | |
| value | string | propsTable.yes | — | — | Wert dieser Radio-Option |
| label | string | propsTable.no | — | Beschriftung neben dem Radio | |
| name | string | propsTable.no | — | HTML-name für die Radio-Gruppe | |
| disabled | boolean | propsTable.no | false | Deaktiviert diese Option | |
| default (slot) | slot | propsTable.no | — | — | Label-Inhalt, Fallback ist label |
Auswahlfeld für Einzel- oder Mehrfachauswahl.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| v-model | string | string[] | propsTable.yes | — | — | Aktuell ausgewählter Wert bzw. Werte |
| options | DropdownOption[] | propsTable.yes | — | — | Auswahloptionen mit value, label und optional disabled |
| label | string | propsTable.no | — | Optionales Feld-Label oberhalb | |
| placeholder | string | propsTable.no | — | Platzhaltertext bei leerer Auswahl | |
| multiple | boolean | propsTable.no | false | Aktiviert Mehrfachauswahl | |
| disabled | boolean | propsTable.no | false | Deaktiviert das Dropdown |
Vertikaler Abstandshalter mit optionaler horizontaler Trennlinie.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| line | boolean | propsTable.no | true | Zeigt die horizontale Trennlinie | |
| spacing | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | propsTable.no | 'xl' | Vertikaler Abstand um den Divider (ohne Linie = Höhe) | |
| mtAuto | boolean | propsTable.no | false | Aktiviert mt-auto (schiebt Divider nach unten in Flex-Layouts) |
Abschnitt oben
Abschnitt unten
Vollbild-Overlay mit schliessbarem Hinweis und optionalem Icon. Über v-model öffnen.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| v-model | boolean | propsTable.no | false | Steuert die Sichtbarkeit des Vollbild-Overlays | |
| showIcon | boolean | propsTable.no | false | Zeigt das Info-Icon links neben dem Inhalt | |
| closeAriaLabel | string | propsTable.yes | — | ARIA-Label für den Schliessen-Button | |
| default (slot) | slot | propsTable.no | — | Dialog-Inhalt |
Tab-Navigation mit Mobile-Select und benannten Slots für Panel-Inhalte.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| v-model | string | propsTable.yes | — | Wert des aktiven Tabs | |
| options | TabOption[] | propsTable.yes | — | — | Tab-Definitionen mit value, label, optional href und disabled |
| ariaLabel | string | propsTable.no | 'Tabs' | ARIA-Label der Desktop-Tab-Navigation | |
| selectAriaLabel | string | propsTable.no | 'Select a tab' | ARIA-Label des mobilen Selects | |
| #[value] (slot) | slot | propsTable.no | — | — | Panel-Inhalt pro Tab, Slot-Name entspricht option.value |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Fortschrittsbalken für eine Reise mit Start-/Zielort und Zug-Indikator.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| start | string | propsTable.yes | — | Startort-Label links unter dem Balken | |
| destination | string | propsTable.yes | — | Zielort-Label rechts unter dem Balken | |
| progress | number | propsTable.yes | — | Fortschritt von 0 bis 100, intern geklemmt | |
| markers | { id: string, progress: number, title: string, types: string[] }[] | propsTable.no | [] | — | Trigger auf der Strecke. Ein Klick öffnet Titel und Inhaltstyp |
Kleines Label/Badge in verschiedenen Farbvarianten.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| variant | 'primary' | 'outline' | 'secondary' | 'dark' | propsTable.no | 'primary' | Farbvariante des Tags | |
| default (slot) | slot | propsTable.no | — | Tag-Text bzw. Inhalt |
Pill-Badge mit Info-Icon und Geschwindigkeitsangabe in km/h. Klick öffnet Bottom-Sheet mit Livegeschwindigkeit und GPX-Distanzen.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| speed | number | propsTable.yes | — | Geschwindigkeit in km/h ab 0, ohne Obergrenze |
Zweifarbiger Lade-Spinner mit Primary- und Secondary-Farbe.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| size | 'sm' | 'md' | 'lg' | propsTable.no | 'md' | Grösse des Spinners |
Farbige Sender-Kanal-Karte mit Titel, Beschreibung, Geschichten-Badge und Info-Link.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| title | string | propsTable.yes | — | Channel-Titel | |
| slug | string | propsTable.yes | — | URL-Slug (Prefix lokalisiert: sender/station/stazione) | |
| description | string | propsTable.no | — | Kurzbeschreibung unter dem Titel | |
| storyCount | number | propsTable.no | 0 | Anzahl Geschichten (Trigger) | |
| variant | 'primary' | 'green' | 'secondary' | 'accent' | propsTable.no | 'primary' | Hintergrundfarbe der Karte | |
| isPartialRoute | boolean | propsTable.no | false | Hinweis, dass der Sender nur einen Teil der Verbindung abdeckt | |
| routeFrom | string | null | propsTable.no | null | Startbahnhof der Teilstrecke | |
| routeTo | string | null | propsTable.no | null | Endbahnhof der Teilstrecke |
Liste von ChannelCards für die Senderauswahl einer Strecke.
Sprachumschalter über @nuxtjs/i18n (de-CH, fr, it, en).
Audio-Wiedergabe mit Wellenform, «Hören»-Badge, Titel, Beschreibung und Transkription. Prop: media: MediaItem (type audio).
Beispiel-Audio für den Trigger an der Kante Fust.
Video- oder Bild-Wiedergabe mit «Schauen»-Badge, Zeitanzeige, Beschreibung und Transkription. Mit Begleitaudio erscheinen Mini-Wellenform und Badge «Hören».
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| media | MediaItem | propsTable.yes | — | — | CMS-Medium mit type video oder image |
| type (Demo) | 'video' | 'image' | propsTable.no | 'video' | Wechselt zwischen Video- und Bild-Mock | |
| @complete | emit | propsTable.no | — | — | Video ended bzw. Bild nach 5s |
Kreuzung Kaufmannstrasse, aufgenommen im Sommer 2024.
Beispiel-Video für die Kreuzung Kaufmannstrasse – Quaderstrasse.
Slideshow-Carousel mit Swipe, Overlay-Indikatoren und Navigationspfeilen, optionalem Begleitaudio (Mini-Wellenform und Badge «Hören»). Ohne Ton erscheint der Hinweis «Kein Audio» neben dem Typ-Badge. Prop: media: MediaItem (type slideshow).
Einfahrt in den Bahnhof Chur, Aufnahme 2024.
Test-Slideshow mit Video, Audio und Bildern für die Quaderstrasse.
Dispatcher für Audio-, Video-, Bild- und Slideshow-Player inkl. MediaFooterSheet. Inhalte ohne Ton (Text, Quiz, Bild ohne Soundtrack, stille Slideshow-Folie) zeigen die Badge «Kein Audio» beim Inhalt. Text und stille Bilder haben zusätzlich «Fertig» nach dem Inhalt.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| media | MediaItem | propsTable.yes | — | — | Beliebiges CMS-Medium (audio/video/image/slideshow) |
| type (Demo) | MediaType | propsTable.no | 'audio' | Wechselt den Demo-Medientyp | |
| @complete | emit | propsTable.no | — | — | Weitergeleitet vom Sub-Player |
Beispiel-Audio für den Trigger an der Kante Fust.
i-Icon zur Quellenangabe eines Trigger- oder Puffer-Inhalts. Öffnet einen Dialog mit dem formatierten Quelltext. Die Caption steht kursiv direkt unter dem Medium und dient zugleich als Alternativtext.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| source | string | null | propsTable.no | null | Quellenangabe als WYSIWYG-HTML; ohne Inhalt bleibt das Icon verborgen | |
| tone | 'on-dark' | 'on-light' | propsTable.no | 'on-dark' | Farbgebung des i-Icons je nach Hintergrund |
Blick über die Quaderstrasse Richtung Altstadt.
Blick über die Quaderstrasse Richtung Altstadt.
Beispiel-Bild entlang der Quaderstrasse.
Oranger Channel-Header mit Titel, Beschreibung, Story-Badge und animierten Punkten.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.value | propsTable.description |
|---|---|---|---|---|---|
| title | string | propsTable.yes | — | Channel-Name als h1 | |
| description | string | null | propsTable.no | null | Kurzbeschreibung unter dem Titel | |
| storyCount | number | propsTable.no | 0 | Anzahl Geschichten im Badge | |
| isPartialRoute | boolean | propsTable.no | false | Hinweis, dass der Sender nur einen Teil der Verbindung abdeckt | |
| routeFrom | string | null | propsTable.no | null | Startbahnhof der Teilstrecke | |
| routeTo | string | null | propsTable.no | null | Endbahnhof der Teilstrecke |
Canale
Über Viadukte und dessen Ingenieurskunst
12 storieTimeline der Trigger-Stationen mit Verbindungslinien und GSAP-Reveal.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.description |
|---|---|---|---|---|
| stations | ChannelStation[] | propsTable.yes | — | Liste mit id, name und optional duration (Sekunden) |
Animierter Lade-Indikator mit pulsierenden Ringen für Channel-Live. Keine Props.
Standort-Pill mit Bahnhofs-Dropdown und Live-Verbindungen via transport.opendata.ch. Verbindungs-Klick speichert Session und navigiert zur Senderauswahl.
| propsTable.prop | propsTable.type | propsTable.required | propsTable.default | propsTable.description |
|---|---|---|---|---|
| stations | StationOption[] | propsTable.yes | — | Bahnhöfe mit trackIds und destinations (id, name, trackId) |