1
- import { FaSolidHotel } from 'solid-icons/fa' ;
2
- import { FaRegularComments } from 'solid-icons/fa' ;
1
+ import { FaSolidComments , FaSolidHotel , FaSolidLink } from 'solid-icons/fa' ;
2
+ import { FaSolidMapLocationDot } from 'solid-icons/fa'
3
+ import { For } from 'solid-js' ;
3
4
import PageLayout from '~/components/PageLayout' ;
4
5
5
6
export default function Hotels ( ) {
7
+ // Sorted by confirmation date
8
+ const hotelDeals = [
9
+ {
10
+ name : "The Yarn" ,
11
+ additionalInformation : "Breakfast is included." ,
12
+ prices : [ ] ,
13
+ travelTime : "Travel time by train can be as low as 30 minutes." ,
14
+ website : "https://theyarn.ch/" ,
15
+ mapUrl : "https://maps.app.goo.gl/6a5Cfi281uYqgtpu5" ,
16
+ bookingInfo : "Book via email at corporate@theyarn.ch, mentioning you are attending the NixCon conference." ,
17
+ imagePath : "/the-yarn-rates.png" ,
18
+ imageAlt : "The Yarn Hotel Room Rates"
19
+ } ,
20
+ {
21
+ name : "Hotel Swiss Star" ,
22
+ additionalInformation : "" ,
23
+ prices : [
24
+ "Single room incl. breakfast CHF 150.00/night" ,
25
+ "Double room incl. breakfast CHF 190.00/night"
26
+ ] ,
27
+ travelTime : "Travel time by train to OST is about 28 minutes." ,
28
+ website : "https://www.hotel-swiss-star.ch" ,
29
+ mapUrl : "https://maps.app.goo.gl/RDurEWjULhBkgX3M7" ,
30
+ bookingInfo : "Book directly on the hotel website using promo code \"NixCon\"."
31
+ } ,
32
+ ] ;
33
+
6
34
return (
7
35
< PageLayout >
8
36
< div class = "flex flex-col items-center gap-5" >
@@ -11,64 +39,97 @@ export default function Hotels() {
11
39
Hotel Recommendations
12
40
</ h1 >
13
41
14
- < div class = "p-6 bg-white/10 backdrop-blur-lg rounded-xl border border-white/20 w-full" >
15
- < p class = "text-center text-lg mb-4" >
16
- We're in the process of reaching out to hotels and will publish a list of accommodations with potential discounts or NixCon reserved rooms soon.
17
- </ p >
18
-
19
- < div class = "flex justify-center mt-6" >
20
- < a
21
- href = "https://matrix.to/#/#nixcon-accommodation:nixos.org"
22
- target = "_blank"
23
- rel = "noopener noreferrer"
24
- class = "px-4 py-2 bg-white/20 hover:bg-white/30 transition-colors rounded-lg text-white font-medium flex items-center gap-2"
25
- >
26
- < FaRegularComments />
27
- Join our Matrix room to coordinate accommodation
28
- </ a >
29
- </ div >
30
- </ div >
31
-
32
- { /* Hotel Listings - Empty for now, ready to be populated */ }
33
- < div class = "w-full space-y-6 hidden" >
34
- { /* Template for hotel entries */ }
35
- { /*
42
+ { /* Hotel Listings */ }
43
+ < div class = "w-full space-y-6" >
44
+ < For each = { hotelDeals } >
45
+ { ( hotel ) => (
36
46
< div class = "p-6 bg-white/10 backdrop-blur-lg rounded-xl border border-white/20 hover:bg-white/15 transition-colors" >
37
- <h3 class="text-2xl font-bold mb-2">[Hotel Name]</h3>
38
- <p class="text-lg mb-2">[Star Rating]</p>
39
- <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-4">
40
- <p><span class="font-semibold">Distance to venue:</span> [Distance]</p>
41
- <p><span class="font-semibold">Price range:</span> [Price]</p>
42
- <p><span class="font-semibold">Availability:</span> [Rooms left]</p>
43
- </div>
47
+ < h3 class = "text-2xl font-bold mb-2" > { hotel . name } </ h3 >
48
+
44
49
< p class = "mb-4" >
45
- [Hotel description and special offers for NixCon attendees]
50
+ { hotel . additionalInformation }
46
51
</ p >
52
+
53
+ { hotel . prices . length > 0 && (
54
+ < div class = "mb-4" >
55
+ < p class = "font-semibold mb-1" > Prices:</ p >
56
+ < ul class = "list-disc pl-5" >
57
+ < For each = { hotel . prices } >
58
+ { ( price ) => < li > { price } </ li > }
59
+ </ For >
60
+ </ ul >
61
+ </ div >
62
+ ) }
63
+
64
+ < p class = "mb-4" > { hotel . travelTime } </ p >
65
+
66
+ { hotel . bookingInfo && (
67
+ < p class = "mb-4 font-medium bg-white/10 p-2 rounded" >
68
+ < span class = "font-bold" > Booking:</ span > { hotel . bookingInfo }
69
+ </ p >
70
+ ) }
71
+
72
+ { hotel . imagePath && (
73
+ < details class = "mb-4 bg-white/5 rounded-lg overflow-hidden" >
74
+ < summary class = "p-3 cursor-pointer hover:bg-white/10 transition-colors font-medium" >
75
+ View Room Rates
76
+ </ summary >
77
+ < div class = "p-3" >
78
+ < img
79
+ src = { hotel . imagePath }
80
+ alt = { hotel . imageAlt }
81
+ class = "w-full max-w-2xl mx-auto rounded-lg border border-white/20"
82
+ />
83
+ </ div >
84
+ </ details >
85
+ ) }
86
+
47
87
< div class = "flex flex-wrap gap-4" >
48
88
< a
49
- href="[Website URL]"
89
+ href = { hotel . website }
50
90
target = "_blank"
51
91
rel = "noopener noreferrer"
52
- class="px-4 py-2 bg-white/20 hover:bg-white/30 transition-colors rounded-lg text-white font-medium"
92
+ class = "px-4 py-2 bg-white/20 hover:bg-white/30 transition-colors rounded-lg text-white font-medium flex items-center gap-2 "
53
93
>
54
- Visit Website
94
+ < FaSolidLink /> Visit Website
55
95
</ a >
56
96
< a
57
- href="[Map URL]"
97
+ href = { hotel . mapUrl }
58
98
target = "_blank"
59
99
rel = "noopener noreferrer"
60
- class="px-4 py-2 bg-white/20 hover:bg-white/30 transition-colors rounded-lg text-white font-medium"
100
+ class = "px-4 py-2 bg-white/20 hover:bg-white/30 transition-colors rounded-lg text-white font-medium flex items-center gap-2 "
61
101
>
62
- View on Map
102
+ < FaSolidMapLocationDot /> View on Map
63
103
</ a >
64
104
</ div >
65
105
</ div >
66
- */ }
106
+ ) }
107
+ </ For >
67
108
</ div >
68
109
69
- < p class = "text-center mt-6" >
70
- For assistance with accommodation, please contact < a href = "mailto:nixcon@nixos.org" class = "underline hover:text-white/80" > nixcon@nixos.org</ a >
71
- </ p >
110
+ < div class = "mt-6 text-center" >
111
+ < h3 class = "text-xl font-bold mb-4" > Need Accommodation Assistance?</ h3 >
112
+
113
+ < div class = "flex flex-col justify-center items-center gap-4" >
114
+ < a
115
+ href = "https://matrix.to/#/#nixcon-accommodation:nixos.org"
116
+ target = "_blank"
117
+ rel = "noopener noreferrer"
118
+ class = "px-4 py-2 bg-white/20 hover:bg-white/30 transition-colors rounded-lg text-white font-medium flex items-center gap-2"
119
+ >
120
+ < FaSolidComments />
121
+ Join our Matrix room to coordinate accommodation
122
+ </ a >
123
+
124
+ < a
125
+ href = "mailto:nixcon@nixos.org"
126
+ class = "px-4 py-2 bg-white/20 hover:bg-white/30 transition-colors rounded-lg text-white font-medium flex items-center gap-2"
127
+ >
128
+ < FaSolidLink />
129
+ Contact us at nixcon@nixos.org
130
+ </ a >
131
+ </ div >
132
+ </ div >
72
133
</ div >
73
134
</ PageLayout >
74
135
) ;
0 commit comments