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', ] ), ], }