Dominik Milacher 0dc24c4db7
Some checks failed
Build and deploy updated apps / Build & deploy (push) Failing after 50s
Extend ux layer and overhaul panoramablick-saalbach.at
2025-11-21 21:17:52 +01:00

172 lines
6.0 KiB
TypeScript

class Text {
constructor(
readonly $de: string,
readonly $en: string
) {}
}
class Feature {
readonly label: Text | string
constructor(
readonly icon: string,
readonly de: string,
readonly en?: string
) {
this.label = en ? new Text(de, en) : de
}
}
const features = [
new Feature('lucide:shower-head', 'Badezimmer mit Dusche', 'Bathroom with shower'),
new Feature('lucide:toilet', 'Bad und WC getrennt', 'Bathroom and toilet in separate rooms'),
new Feature('lucide:wifi', 'Schnelles WLAN', 'High-speed WiFi'),
new Feature('lucide:tv', 'Fernseher', 'TV'),
new Feature('lucide:microwave', 'Mikrowelle', 'Microwave'),
new Feature('lucide:microwave', 'Backrohr', 'Oven'),
new Feature('lucide:bubbles', 'Geschirrspüler', 'Dishwasher'),
new Feature('lucide:coffee', 'Kaffeemaschine', 'Coffee maker'),
new Feature('lucide:coffee', 'Wasserkocher', 'Electric water boiler'),
new Feature('lucide:bed', 'Bettwäsche', 'Bed sheets'),
new Feature('lucide:layers', 'Handtücher', 'Towels'),
new Feature('lucide:wind', 'Haarföhn', 'Hairdryer'),
]
class Apartment {
readonly title: string
readonly subtitle: Text
readonly features: Feature[]
constructor(
index: number,
readonly de: string,
readonly en: string,
specifics: Feature[],
readonly images: string[]
) {
this.title = '${apartments[' + index.toString() + '].title}'
this.subtitle = new Text(de, en)
this.features = [
new Feature('lucide:coins', '${apartments[' + index.toString() + '].price.text}'),
new Feature('lucide:users', '${apartments[' + index.toString() + '].capacity.text}'),
new Feature('lucide:scaling', '${apartments[' + index.toString() + '].size} m²'),
...specifics,
...features,
]
}
}
export default {
list: [
new Apartment(
0,
'${apartments[0].size} m² Urlaubsvergnügen! Dieses gemütliche Appartement bietet Ihnen Platz für bis zu ${apartments[0].capacity.to} Personen. Freuen Sie sich auf 1 Schlafzimmer, eine Wohnküche mit ausziehbarer Couch, Badezimmer, eine kleine Terrasse und ein getrenntes WC.',
'${apartments[0].size} m² of holiday comfort! This cozy apartment comfortably accommodates up to ${apartments[0].capacity.to} guests. It features one bedroom, an open-plan kitchen and living area with a pull-out sofa, a bathroom, a small terrace, and a separate toilet.',
[
new Feature(
'lucide:mountain',
'Terrasse mit idyllischem Ausblick',
'Terrace with idyllic view'
),
new Feature('lucide:bed-double', 'Schlafzimmer mit Doppelbett', 'Bedroom with double bed'),
new Feature(
'lucide:sofa',
'Wohnküche mit ausziehbarem Schlafsofa',
'Living/kitchen area with sofa bed'
),
],
[
'/apartments/1/1.webp',
'/apartments/1/2.webp',
'/apartments/1/3.webp',
'/apartments/1/4.webp',
'/apartments/1/5.webp',
'/apartments/1/6.webp',
'/apartments/1/7.webp',
'/apartments/1/8.webp',
'/apartments/1/9.webp',
'/apartments/1/10.webp',
'/apartments/1/11.webp',
]
),
new Apartment(
1,
'Wohnkomfort auf ${apartments[1].size} m²! Dieses großzügige Appartement bietet Ihnen Platz für bis zu ${apartments[1].capacity.to} Personen und bietet 2 Schlafzimmer, eine Wohnküche, Badezimmer, einen Balkon und ein getrenntes WC.',
'Enjoy ${apartments[1].size} m² of comfortable living! This large apartment sleeps up to ${apartments[1].capacity.to} people and includes 2 bedrooms, a combined kitchen and living room, a bathroom, a balcony, and a separate toilet.',
[
new Feature(
'lucide:mountain',
'Balkon mit idyllischem Ausblick',
'Balcony with idyllic view'
),
new Feature(
'lucide:bed-double',
'Schlafzimmer 1 mit Doppelbett',
'Bedroom 1 with double bed'
),
new Feature(
'lucide:bed-double',
'Schlafzimmer 2 mit Doppelbett & Schlafsofa',
'Bedroom 2 with double bed & sofa bed'
),
new Feature('lucide:sofa', 'Wohnküche', 'Living/kitchen area'),
],
[
'/apartments/2/1.webp',
'/apartments/2/2.webp',
'/apartments/2/3.webp',
'/apartments/2/4.webp',
'/apartments/2/5.webp',
'/apartments/2/6.webp',
'/apartments/2/7.webp',
'/apartments/2/8.webp',
'/apartments/2/9.webp',
'/apartments/2/10.webp',
'/apartments/2/11.webp',
'/apartments/2/12.webp',
'/apartments/2/13.webp',
]
),
new Apartment(
2,
'Wohlfühlen auf ${apartments[2].size} m²! Dieses geräumige Appartement bietet Ihnen Platz für bis zu ${apartments[2].capacity.to} Personen und bietet 2 Schlafzimmer, eine Wohnküche, Badezimmer, einen Balkon und ein getrenntes WC.',
'Spacious ${apartments[2].size} m² apartment for up to ${apartments[2].capacity.to} guests, with 2 bedrooms, a living kitchen, bathroom, balcony, and separate toilet.',
[
new Feature(
'lucide:mountain',
'Balkon mit idyllischem Ausblick',
'Balcony with idyllic view'
),
new Feature(
'lucide:bed-double',
'Schlafzimmer 1 mit Doppelbett',
'Bedroom 1 with double bed'
),
new Feature(
'lucide:bed-double',
'Schlafzimmer 2 mit Doppelbett & Schlafsofa',
'Bedroom 2 with double bed & sofa bed'
),
new Feature('lucide:sofa', 'Wohnküche', 'Living/kitchen area'),
],
[
'/apartments/3/1.webp',
'/apartments/3/2.webp',
'/apartments/3/3.webp',
'/apartments/3/4.webp',
'/apartments/3/5.webp',
'/apartments/3/6.webp',
'/apartments/3/7.webp',
'/apartments/3/8.webp',
'/apartments/3/9.webp',
'/apartments/3/10.webp',
'/apartments/3/11.webp',
'/apartments/3/12.webp',
'/apartments/3/13.webp',
'/apartments/3/14.webp',
]
),
],
}