Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
cda2a6d
feat: add issuer specific fip validity to operator pages
MoritzWeber0 Feb 8, 2026
62127a8
feat: use cancel icon
MoritzWeber0 Feb 8, 2026
0bc47c0
refactor: transform to fip-validity shortcodes
MoritzWeber0 Feb 8, 2026
ee72ff8
fix: handle renfe and euskotren
MoritzWeber0 Feb 8, 2026
d279e54
fix: add missing translation key
MoritzWeber0 Feb 8, 2026
5c46947
feat: Add Deutsche Bahn FIP validity
MoritzWeber0 Feb 8, 2026
35788af
fix: change all "fip-coupon-relatives" to unknown
MoritzWeber0 Feb 8, 2026
2e51211
feat: Add FIP validity for SNCF employees
MoritzWeber0 Feb 8, 2026
38b6a9d
feat: align db information to the existing style
MoritzWeber0 Feb 8, 2026
0c1cd07
feat: add information for gb employees
MoritzWeber0 Feb 8, 2026
03d5221
fix: Unify fip relatives text for db
MoritzWeber0 Feb 8, 2026
75f04ae
fix: hide current operator from table
MoritzWeber0 Feb 8, 2026
e79b302
feat: update archetypes
MoritzWeber0 Feb 8, 2026
488c43c
fix: Rename "FIP Freifahrt Angehörige"
MoritzWeber0 Feb 21, 2026
323d131
feat: Use larger buttons for fip validity
MoritzWeber0 Feb 21, 2026
db1cacc
feat: Replace Params with `validity.yaml`
MoritzWeber0 Feb 22, 2026
a6ba438
feat: Add missing operators for DB validity
MoritzWeber0 Feb 22, 2026
4f8c9e2
feat: Add missing operators for GB FIP issuer validity
MoritzWeber0 Feb 22, 2026
11ab9d1
refactor: Move existing validity.yaml to anchors
MoritzWeber0 Feb 22, 2026
dc1a37b
feat: Support markdown in fip validity texts
MoritzWeber0 Feb 22, 2026
d74cb13
feat: Add FIP validity information for issuer CD
MoritzWeber0 Feb 22, 2026
355e064
feat: Add FIP validity information for NS issues cards
MoritzWeber0 Feb 22, 2026
a2beb23
feat: Add validity information for CD relatives
MoritzWeber0 Feb 22, 2026
c2b1665
feat: Add validity information for SNCB
MoritzWeber0 Feb 23, 2026
369eb6a
wip: Use 4-column table for FIP issuance information
MoritzWeber0 Feb 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ repos:
- id: check-xml
exclude: "^layouts/_default/rss.xml$"
- id: check-yaml
exclude: "validity.yaml$"
- id: debug-statements
- id: destroyed-symlinks
- id: end-of-file-fixer
Expand Down
28 changes: 14 additions & 14 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@

### Translations

| Deutsch | Englisch | Französisch |
| ---------------------------- | ------------------------- | ----------------------------------- |
| FIP Freifahrtschein | FIP Coupon | Coupon FIP |
| FIP Globalpreis | FIP Global Fare | Tarif Global FIP |
| FIP 50 Ticket | FIP 50 Ticket | Billet FIP 50 |
| FIP Ausweis | FIP Card | Carte FIP |
| <operator> Ticketschalter | <operator> Ticket Office | Guichet <operator> |
| <operator> Website | <operator> Website | Site Web <operator> |
| <operator> Telefon | <operator> Telephone | Téléphone <operator> |
| <operator> Fahrkartenautomat | <operator> Ticket Machine | Distributeurs de billets <operator> |
| Grenzpunkt | Border Point | Point frontière |
| FIP Rabatt / FIP Ermäßigung | FIP Discount | Remise FIP / Réduction FIP |
| FIP Freifahrt Angehörige | FIP Coupon for relatives | Coupon FIP pour les ayants droit |
| SBB | SBB | CFF |
| Deutsch | Englisch | Französisch |
| ---------------------------------- | ------------------------- | ----------------------------------- |
| FIP Freifahrtschein | FIP Coupon | Coupon FIP |
| FIP Globalpreis | FIP Global Fare | Tarif Global FIP |
| FIP 50 Ticket | FIP 50 Ticket | Billet FIP 50 |
| FIP Ausweis | FIP Card | Carte FIP |
| <operator> Ticketschalter | <operator> Ticket Office | Guichet <operator> |
| <operator> Website | <operator> Website | Site Web <operator> |
| <operator> Telefon | <operator> Telephone | Téléphone <operator> |
| <operator> Fahrkartenautomat | <operator> Ticket Machine | Distributeurs de billets <operator> |
| Grenzpunkt | Border Point | Point frontière |
| FIP Rabatt / FIP Ermäßigung | FIP Discount | Remise FIP / Réduction FIP |
| FIP Freifahrtschein für Angehörige | FIP Coupon for relatives | Coupon FIP pour les ayants droit |
| SBB | SBB | CFF |

#### Headlines

Expand Down
16 changes: 12 additions & 4 deletions archetypes/operator/index.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,18 @@ operator: "{{ .File.ContentBaseName }}"
Die Ticketkategorien können je nach Betreiber abweichen.
-->

FIP Freifahrtschein: <✅/⛔> \
FIP Freifahrt Angehörige: <✅/⛔> \
FIP 50 Tickets: <✅/⛔> \
FIP Globalpreis: <✅/⛔>
<!--
Verwende die folgenden Shortcodes, um die FIP-Gültigkeit anzuzeigen. Die folgenden Parameter können übergeben werden:
- `type`: fip-coupon, fip-coupon-relatives, fip-reduced-ticket, fip-global-fare, additional
- `status`: valid, invalid, unknown
- `text`: Optionaler benutzerdefinierter Text zur Anzeige
- `disable_dialog`: true/false (Standard: false) - Auf true setzen, um den Dialog zu deaktivieren
-->

{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}
{{< fip-validity type="fip-global-fare" status="valid" >}}

<!--
Wo gelten FIP 50 Tickets/FIP Freifahrtscheine und gibt es Einschränkungen? Welches Ticket wird bei Einreise benötigt (z. B. durchgehendes FIP 50 Ticket oder FIP Freifahrtscheine beider Länder)
Expand Down
16 changes: 12 additions & 4 deletions archetypes/operator/index.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,18 @@ operator: "{{ .File.ContentBaseName }}"
The ticket categories may vary depending on the operator.
-->

FIP Coupon: <✅/⛔> \
FIP Coupon for relatives: <✅/⛔> \
FIP 50 Tickets: <✅/⛔> \
FIP Global Fare: <✅/⛔>
<!--
Use the following shortcodes to display FIP validity. The following parameters can be passed:
- `type`: fip-coupon, fip-coupon-relatives, fip-reduced-ticket, fip-global-fare, additional
- `status`: valid, invalid, unknown
- `text`: Optional custom text to display
- `disable_dialog`: true/false (default: false) - Set to true to disable the dialog
-->

{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}
{{< fip-validity type="fip-global-fare" status="valid" >}}

<!--
Where are FIP 50 Tickets/FIP Coupons valid and are there any restrictions? Which ticket is required for entry (e.g., continuous FIP 50 ticket or FIP Coupons of both countries)?
Expand Down
16 changes: 12 additions & 4 deletions archetypes/operator/index.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,18 @@ operator: "{{ .File.ContentBaseName }}"
Les catégories de billets peuvent varier selon l’opérateur.
-->

Coupon FIP : <✅/⛔> \
Coupon FIP pour les ayants droit : <✅/⛔> \
Billets FIP 50 : <✅/⛔> \
Tarif Global FIP : <✅/⛔>
<!--
Utilisez les shortcodes suivants pour afficher la validité FIP. Les paramètres suivants peuvent être transmis :
- `type` : fip-coupon, fip-coupon-relatives, fip-reduced-ticket, fip-global-fare, additional
- `status` : valid, invalid, unknown
- `text` : Texte personnalisé optionnel à afficher
- `disable_dialog` : true/false (par défaut : false) - Définir sur true pour désactiver la boîte de dialogue
-->

{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}
{{< fip-validity type="fip-global-fare" status="valid" >}}

<!--
Où les Billets FIP 50 / Coupons FIP sont-ils valables et quelles sont les restrictions ? Quel billet est nécessaire pour le voyage (par ex. Billet FIP 50 continu ou Coupons FIP des deux pays) ?
Expand Down
20 changes: 20 additions & 0 deletions assets/sass/_variables.scss
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,18 @@ $tag-colors-dark: (
info: #d1d1d1,
);

$fip-validity-colors: (
valid: map-get($tag-colors, success),
invalid: map-get($tag-colors, error),
unknown: map-get($tag-colors, info),
);

$fip-validity-colors-dark: (
valid: map-get($tag-colors-dark, success),
invalid: map-get($tag-colors-dark, error),
unknown: map-get($tag-colors-dark, info),
);

$highlight-colors: (
tip: #116278,
inofficial: #42454a,
Expand Down Expand Up @@ -60,6 +72,10 @@ html {
--color-success: #096640;
--color-error: #ad1731;

@each $name, $color in $fip-validity-colors {
--fip-validity-#{$name}: #{$color};
}

@each $name, $color in $tag-colors {
--tag-#{$name}-bg: #{mix(white, $color, 90%)};
--tag-#{$name}-color: #{$color};
Expand Down Expand Up @@ -101,6 +117,10 @@ html[data-theme="dark"] {
--color-success: #2ea44f;
--color-error: #f85149;

@each $name, $color in $fip-validity-colors-dark {
--fip-validity-#{$name}: #{$color};
}

@each $name, $color in $tag-colors-dark {
--tag-#{$name}-bg: #{mix(black, $color, 65%)};
--tag-#{$name}-color: #{$color};
Expand Down
5 changes: 5 additions & 0 deletions assets/sass/button.scss
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,9 @@
&__internal {
border: none;
}

&:disabled {
cursor: not-allowed;
pointer-events: none;
}
}
43 changes: 43 additions & 0 deletions assets/sass/fip-validity.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
.o-fip-validity {
display: flex;
align-items: center;
gap: 0.5rem;

@each $status in valid, invalid, unknown {
&--#{$status} {
color: var(--fip-validity-#{$status});
}
}

> .a-button {
font-size: 1.7rem;
}

&-dialog-value {
display: flex;
align-items: center;
gap: 0.4rem;
min-width: 150px;
flex-direction: column;
text-align: center;
}

&__table {
table-layout: fixed;
margin-left: 0;

@media (min-width: $breakpoint-lg) {
table-layout: fixed;
width: 100%;
}

> thead > tr > th,
> tbody > tr > td {
text-align: center;

&:first-child {
width: 150px;
}
}
}
}
1 change: 1 addition & 0 deletions assets/sass/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,4 @@
@import "floatImage.scss";
@import "teamMember.scss";
@import "dialog.scss";
@import "fip-validity.scss";
6 changes: 3 additions & 3 deletions content/operator/bdz/index.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ Die Balgarski Darschawni Schelesnizi (BDŽ) ist die staatliche Eisenbahngesellsc

## Gültigkeit FIP Tickets

FIP Freifahrtschein: ✅ \
FIP Freifahrt Angehörige: ✅ \
FIP 50 Tickets: ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

FIP Freifahrtscheine und FIP 50 Tickets sind auf Verbindungen der BDŽ gültig. Bei grenzüberschreitenden Fahrten muss entweder ein durchgängiges FIP 50 Ticket oder FIP Freifahrtscheine beider Länder vorhanden sein.

Expand Down
6 changes: 3 additions & 3 deletions content/operator/bdz/index.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ Balgarski Darschawni Schelesnizi (BDŽ) is the state railway company of [Bulgari

## Validity of FIP Tickets

FIP Coupon: ✅ \
FIP Coupon for relatives: ✅ \
FIP 50 Ticket: ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

FIP Coupons and FIP 50 Tickets are valid on BDŽ services. For cross-border journeys, either a continuous FIP 50 Ticket or FIP Coupons for both countries are required.

Expand Down
6 changes: 3 additions & 3 deletions content/operator/bdz/index.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ Balgarski Darschawni Schelesnizi (BDŽ) est la compagnie ferroviaire nationale d

## Validité des Billets FIP

Coupon FIP : ✅ \
Coupon FIP pour les ayants droit : ✅ \
Billet FIP 50 : ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

Les Coupons FIP et les Billets FIP 50 sont valables sur les services BDŽ. Pour les trajets transfrontaliers, un Billet FIP 50 continu ou des Coupons FIP valables dans chaque pays sont nécessaires.

Expand Down
8 changes: 4 additions & 4 deletions content/operator/bls/index.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ Auf ihrer Website bietet die BLS eine [Übersichtskarte der Strecken](https://ww
- Die Nutzung aller Züge (außer Autozüge), Busse und Schiffe ist mit FIP möglich.
- Es besteht keine Reservierungspflicht.

## Gültigkeit FIP-Tickets
## Gültigkeit FIP Tickets

FIP Freifahrtschein: ✅ \
FIP Freifahrt Angehörige: ✅ \
FIP 50 Tickets: ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

## Zugkategorien und Reservierungen

Expand Down
6 changes: 3 additions & 3 deletions content/operator/bls/index.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ The BLS offers a [network map of its routes](https://www.bls.ch/-/media/bls/pdf/

## Validity of FIP Tickets

FIP Coupon: ✅ \
FIP Coupon for relatives: ✅ \
FIP 50 Tickets: ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

## Train Categories and Reservations

Expand Down
8 changes: 4 additions & 4 deletions content/operator/bls/index.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ Sur son site web, la BLS propose une [carte schématique des lignes](https://www
- L'utilisation de tous les trains (sauf les trains motorail), bus et bateaux avec FIP est possible.
- Il n'y a pas d'obligation de réservation.

## Validité des billets FIP
## Validité des Billets FIP

Coupon FIP : ✅ \
Coupon FIP pour les ayants droit : ✅ \
Billets FIP 50 : ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

## Catégories de trains et réservations

Expand Down
6 changes: 3 additions & 3 deletions content/operator/bsb/index.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ Hierbei gelten FIP Ermäßigungen bei den folgenden Betreibern:

## Gültigkeit FIP Tickets

FIP Freifahrtschein: ✅ \
FIP Freifahrt Angehörige: ⛔ \
FIP 50 Tickets: ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

## Kategorien und Reservierungen

Expand Down
6 changes: 3 additions & 3 deletions content/operator/bsb/index.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ FIP discounts apply with the following operators:

## Validity of FIP Tickets

FIP Coupon: ✅ \
FIP Coupon for relatives: ⛔ \
FIP 50 Tickets: ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

## Train Categories and Reservations

Expand Down
6 changes: 3 additions & 3 deletions content/operator/bsb/index.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ Les remises FIP sont valables auprès des opérateurs suivants :

## Validité des Billets FIP

Coupon FIP : ✅ \
Coupon FIP pour les ayants droit : ⛔ \
Billets FIP 50 : ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

## Catégories de trains et réservations

Expand Down
6 changes: 3 additions & 3 deletions content/operator/cd/index.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ Die České dráhy (ČD) ist die staatliche Eisenbahngesellschaft der [Tschechis

## Gültigkeit FIP Tickets

FIP Freifahrtschein: ✅ \
FIP Freifahrt Angehörige: ⛔ \
FIP 50 Tickets: ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

FIP Freifahrtscheine und FIP 50 Tickets sind auf Verbindungen der ČD gültig. Bei grenzüberschreitenden Fahrten muss entweder ein durchgängiges FIP 50 Ticket oder FIP Freifahrtscheine beider Länder vorhanden sein.

Expand Down
6 changes: 3 additions & 3 deletions content/operator/cd/index.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ operator: "cd"

## Validity of FIP Tickets

FIP Coupon: ✅ \
FIP Coupon for relatives: ⛔ \
FIP 50 Ticket: ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

FIP Coupons and FIP 50 Tickets are valid on ČD services. For cross-border journeys, either a continuous FIP 50 Ticket or FIP Coupons for both countries are required.

Expand Down
6 changes: 3 additions & 3 deletions content/operator/cd/index.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ operator: "cd"

## Validité des Billets FIP

Coupon FIP : ✅ \
Coupon FIP pour les ayants droit : ⛔ \
Billet FIP 50 : ✅
{{< fip-validity type="fip-coupon" status="valid" >}}
{{< fip-validity type="fip-coupon-relatives" status="unknown" >}}
{{< fip-validity type="fip-reduced-ticket" status="valid" >}}

Les Coupons FIP et les Billets FIP 50 sont valables sur les services ČD. Pour les trajets transfrontaliers, un Billet FIP 50 continu ou des Coupons FIP valables dans chaque pays sont nécessaires.

Expand Down
Loading
Loading