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('shower-head', 'Badezimmer mit Dusche', 'Bathroom with shower'), new Feature('toilet', 'Bad und WC getrennt', 'Bathroom and toilet in separate rooms'), new Feature('wifi', 'Schnelles WLAN', 'High-speed WiFi'), new Feature('tv', 'Fernseher', 'TV'), new Feature('microwave', 'Mikrowelle', 'Microwave'), new Feature('microwave', 'Backrohr', 'Oven'), new Feature('bubbles', 'Geschirrspüler', 'Dishwasher'), new Feature('coffee', 'Kaffeemaschine', 'Coffee maker'), new Feature('coffee', 'Wasserkocher', 'Electric water boiler'), new Feature('bed', 'Bettwäsche', 'Bed sheets'), new Feature('layers', 'Handtücher', 'Towels'), new Feature('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('coins', '${apartments[' + index.toString() + '].price.text}'), new Feature('users', '${apartments[' + index.toString() + '].capacity.text}'), new Feature('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('mountain', 'Terrasse mit idyllischem Ausblick', 'Terrace with idyllic view'), new Feature('bed-double', 'Schlafzimmer mit Doppelbett', 'Bedroom with double bed'), new Feature('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('mountain', 'Balkon mit idyllischem Ausblick', 'Balcony with idyllic view'), new Feature('bed-double', 'Schlafzimmer 1 mit Doppelbett', 'Bedroom 1 with double bed'), new Feature('bed-double', 'Schlafzimmer 2 mit Doppelbett & Schlafsofa', 'Bedroom 2 with double bed & sofa bed'), new Feature('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('mountain', 'Balkon mit idyllischem Ausblick', 'Balcony with idyllic view'), new Feature('bed-double', 'Schlafzimmer 1 mit Doppelbett', 'Bedroom 1 with double bed'), new Feature('bed-double', 'Schlafzimmer 2 mit Doppelbett & Schlafsofa', 'Bedroom 2 with double bed & sofa bed'), new Feature('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' ] ) ] }