update: accommodation pricing and confirmation email

- Commons Hub nightly rates: shared €39.20→€39.90, double €50.20→€50.90
- Herrnhof prices now stored as 7-night totals (×7) for correct checkout
- Confirmation email: food text updated, Herrnhof link removed, added office@commons-hub.at for accommodation questions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-03-09 10:41:14 -07:00
parent 28f1c6bb81
commit 4b78d357c0
4 changed files with 35 additions and 35 deletions

View File

@ -16,13 +16,13 @@ const TICKET_PRICE = 80 // €80 early bird
// Accommodation prices per person for 7 nights
const ACCOMMODATION_PRICES: Record<string, { label: string; price: number }> = {
"ch-multi": { label: "Bed in shared room (Commons Hub)", price: 274.40 },
"ch-double": { label: "Bed in double room (Commons Hub)", price: 351.40 },
"hh-single": { label: "Single room (Herrnhof)", price: 95 },
"hh-double-separate": { label: "Double room, separate beds (Herrnhof)", price: 60 },
"hh-double-shared": { label: "Double room, shared double bed (Herrnhof)", price: 50 },
"hh-triple": { label: "Triple room (Herrnhof)", price: 50 },
"hh-daybed": { label: "Daybed or extra bed in living room (Herrnhof)", price: 40 },
"ch-multi": { label: "Bed in shared room (Commons Hub)", price: 279.30 },
"ch-double": { label: "Bed in double room (Commons Hub)", price: 356.30 },
"hh-single": { label: "Single room (Herrnhof)", price: 665 },
"hh-double-separate": { label: "Double room, separate beds (Herrnhof)", price: 420 },
"hh-double-shared": { label: "Double room, shared double bed (Herrnhof)", price: 350 },
"hh-triple": { label: "Triple room (Herrnhof)", price: 350 },
"hh-daybed": { label: "Daybed or extra bed in living room (Herrnhof)", price: 280 },
}
// Public base URL

View File

@ -31,13 +31,13 @@ export default function RegisterPage() {
const baseTicketPrice = 80 // Early bird price €80
const accommodationPrices: Record<string, { label: string; price: number }> = {
"ch-multi": { label: "Bed in shared room (Commons Hub)", price: 274.40 },
"ch-double": { label: "Bed in double room (Commons Hub)", price: 351.40 },
"hh-single": { label: "Single room (Herrnhof)", price: 95 },
"hh-double-separate": { label: "Double room, separate beds (Herrnhof)", price: 60 },
"hh-double-shared": { label: "Double room, shared double bed (Herrnhof)", price: 50 },
"hh-triple": { label: "Triple room, one single + one shared double bed (Herrnhof)", price: 50 },
"hh-daybed": { label: "Daybed or extra bed in living room (Herrnhof)", price: 40 },
"ch-multi": { label: "Bed in shared room (Commons Hub)", price: 279.30 },
"ch-double": { label: "Bed in double room (Commons Hub)", price: 356.30 },
"hh-single": { label: "Single room (Herrnhof)", price: 665 },
"hh-double-separate": { label: "Double room, separate beds (Herrnhof)", price: 420 },
"hh-double-shared": { label: "Double room, shared double bed (Herrnhof)", price: 350 },
"hh-triple": { label: "Triple room, one single + one shared double bed (Herrnhof)", price: 350 },
"hh-daybed": { label: "Daybed or extra bed in living room (Herrnhof)", price: 280 },
}
const accommodationPrice = accommodationPrices[accommodationType]?.price ?? 0
@ -203,13 +203,13 @@ export default function RegisterPage() {
<div className="flex items-center space-x-2">
<RadioGroupItem value="ch-multi" id="ch-multi" />
<Label htmlFor="ch-multi" className="font-normal cursor-pointer text-sm">
Bed in shared room 274.40 (39.20/night)
Bed in shared room 279.30 (39.90/night)
</Label>
</div>
<div className="flex items-center space-x-2">
<RadioGroupItem value="ch-double" id="ch-double" />
<Label htmlFor="ch-double" className="font-normal cursor-pointer text-sm">
Bed in double room 351.40 (50.20/night)
Bed in double room 356.30 (50.90/night)
</Label>
</div>
</RadioGroup>
@ -228,31 +228,31 @@ export default function RegisterPage() {
<div className="flex items-center space-x-2">
<RadioGroupItem value="hh-single" id="hh-single" />
<Label htmlFor="hh-single" className="font-normal cursor-pointer text-sm">
Single room 95
Single room 665 (95/night)
</Label>
</div>
<div className="flex items-center space-x-2">
<RadioGroupItem value="hh-double-separate" id="hh-double-separate" />
<Label htmlFor="hh-double-separate" className="font-normal cursor-pointer text-sm">
Double room (separate beds) 60/person
Double room (separate beds) 420 (60/night per person)
</Label>
</div>
<div className="flex items-center space-x-2">
<RadioGroupItem value="hh-double-shared" id="hh-double-shared" />
<Label htmlFor="hh-double-shared" className="font-normal cursor-pointer text-sm">
Double room (shared double bed) 50/person
Double room (shared double bed) 350 (50/night per person)
</Label>
</div>
<div className="flex items-center space-x-2">
<RadioGroupItem value="hh-triple" id="hh-triple" />
<Label htmlFor="hh-triple" className="font-normal cursor-pointer text-sm">
Triple room (one single, one shared double bed) 50/person
Triple room (one single, one shared double bed) 350 (50/night per person)
</Label>
</div>
<div className="flex items-center space-x-2">
<RadioGroupItem value="hh-daybed" id="hh-daybed" />
<Label htmlFor="hh-daybed" className="font-normal cursor-pointer text-sm">
Daybed or extra bed in living room 40/person
Daybed or extra bed in living room 280 (40/night per person)
</Label>
</div>
</RadioGroup>

View File

@ -103,17 +103,17 @@ export default function FinancialTransparencyPage() {
<div className="space-y-3 mb-6">
<div className="bg-muted/50 p-6 rounded-lg">
<div className="flex items-baseline gap-3 mb-2">
<span className="text-3xl font-bold">274.40</span>
<span className="text-3xl font-bold">279.30</span>
<span className="text-muted-foreground">per person / 7 nights</span>
</div>
<p className="text-sm text-muted-foreground">Bed in shared room (39.20/night)</p>
<p className="text-sm text-muted-foreground">Bed in shared room (39.90/night)</p>
</div>
<div className="bg-muted/50 p-6 rounded-lg">
<div className="flex items-baseline gap-3 mb-2">
<span className="text-3xl font-bold">351.40</span>
<span className="text-3xl font-bold">356.30</span>
<span className="text-muted-foreground">per person / 7 nights</span>
</div>
<p className="text-sm text-muted-foreground">Bed in double room (50.20/night)</p>
<p className="text-sm text-muted-foreground">Bed in double room (50.90/night)</p>
</div>
</div>
@ -126,31 +126,31 @@ export default function FinancialTransparencyPage() {
<div className="bg-muted/50 p-4 rounded-lg">
<div className="flex justify-between items-baseline">
<span className="text-sm font-medium">Single room</span>
<span className="text-lg font-bold">95</span>
<span className="text-lg font-bold">665<span className="text-sm font-normal text-muted-foreground"> (95/night)</span></span>
</div>
</div>
<div className="bg-muted/50 p-4 rounded-lg">
<div className="flex justify-between items-baseline">
<span className="text-sm font-medium">Double room (separate beds)</span>
<span className="text-lg font-bold">60<span className="text-sm font-normal text-muted-foreground">/person</span></span>
<span className="text-lg font-bold">420<span className="text-sm font-normal text-muted-foreground">/person (60/night)</span></span>
</div>
</div>
<div className="bg-muted/50 p-4 rounded-lg">
<div className="flex justify-between items-baseline">
<span className="text-sm font-medium">Double room (shared double bed)</span>
<span className="text-lg font-bold">50<span className="text-sm font-normal text-muted-foreground">/person</span></span>
<span className="text-lg font-bold">350<span className="text-sm font-normal text-muted-foreground">/person (50/night)</span></span>
</div>
</div>
<div className="bg-muted/50 p-4 rounded-lg">
<div className="flex justify-between items-baseline">
<span className="text-sm font-medium">Triple room (one single, one shared double bed)</span>
<span className="text-lg font-bold">50<span className="text-sm font-normal text-muted-foreground">/person</span></span>
<span className="text-lg font-bold">350<span className="text-sm font-normal text-muted-foreground">/person (50/night)</span></span>
</div>
</div>
<div className="bg-muted/50 p-4 rounded-lg">
<div className="flex justify-between items-baseline">
<span className="text-sm font-medium">Daybed or extra bed in living room</span>
<span className="text-lg font-bold">40<span className="text-sm font-normal text-muted-foreground">/person</span></span>
<span className="text-lg font-bold">280<span className="text-sm font-normal text-muted-foreground">/person (40/night)</span></span>
</div>
</div>
<p className="text-xs text-muted-foreground">
@ -201,7 +201,7 @@ export default function FinancialTransparencyPage() {
</div>
<div className="flex justify-between items-center py-3 border-b border-border">
<span className="font-medium">Accommodation (7 nights, shared room)</span>
<span className="text-lg font-semibold">274.40</span>
<span className="text-lg font-semibold">279.30</span>
</div>
<div className="flex justify-between items-center py-3 border-b border-border">
<span className="font-medium">Food</span>
@ -209,13 +209,13 @@ export default function FinancialTransparencyPage() {
</div>
<div className="flex justify-between items-center py-4 bg-primary/10 -mx-6 px-6 mt-4">
<span className="font-bold text-lg">Total (Early bird, excl. food)</span>
<span className="text-2xl font-bold text-primary">354.40</span>
<span className="text-2xl font-bold text-primary">359.30</span>
</div>
</div>
<p className="text-sm text-muted-foreground italic pt-4">
*With regular pricing (120 ticket), total would be 394.40. With late pricing (150 ticket), total
would be 424.40. Herrnhof Villa accommodation starts from 40/person for the week.
*With regular pricing (120 ticket), total would be 399.30. With late pricing (150 ticket), total
would be 429.30. Herrnhof Villa accommodation starts from 280/person for the week (40/night).
</p>
</CardContent>
</Card>

View File

@ -66,7 +66,7 @@ export async function sendPaymentConfirmation(
</div>
<h3 style="color: #92400e;">Food &amp; Accommodation</h3>
<p>We'll follow up separately via email with food options and pricing. If you haven't yet decided on accommodation, there's still time! The <strong>Commons Hub</strong> (our main venue with 30 on-site beds) and the nearby <strong><a href="https://herrnhof.at" style="color: #f59e0b;">Herrnhof Villa</a></strong> are the most convenient options &mdash; right in the heart of the gathering. Other nearby options are also available; check the <a href="https://cryptocommonsgather.ing/directions" style="color: #f59e0b;">Directions page</a> for details.</p>
<p>Information about food arrangements coming in a subsequent email. If you haven't yet decided on accommodation, there's still time! The <strong>Commons Hub</strong> (our main venue with 30 on-site beds) and the nearby <strong>Herrnhof Villa</strong> are the most convenient options &mdash; right in the heart of the gathering. Other nearby options are also available; check the <a href="https://cryptocommonsgather.ing/directions" style="color: #f59e0b;">Directions page</a> for details. Email <a href="mailto:office@commons-hub.at" style="color: #f59e0b;">office@commons-hub.at</a> for any questions about accommodation.</p>
<h3 style="color: #92400e;">What's Next?</h3>
<ul style="line-height: 1.8;">