- Add /services with Spa-only and Gym-only offerings, filters, add/remove selection - Selection panel with subtotal and mailto request; mobile sticky bar when items selected - ShitayeLogoLoader + route loading.tsx with breathe/ring animations in globals.css - Home: replace full services grid with promo strip linking to /services - Nav/footer point to /services; include logo assets and map-related components Made-with: Cursor
109 lines
3.3 KiB
TypeScript
109 lines
3.3 KiB
TypeScript
/**
|
||
* Bookable Spa & Gym offerings for the dedicated /services page (mock pricing).
|
||
*/
|
||
export type SpaGymKind = "spa" | "gym";
|
||
|
||
export type SpaGymService = {
|
||
id: string;
|
||
kind: SpaGymKind;
|
||
title: string;
|
||
description: string;
|
||
duration: string;
|
||
priceUsd: number;
|
||
/** Shown on card badge, e.g. "per session" */
|
||
priceNote: string;
|
||
image: string;
|
||
};
|
||
|
||
export const spaGymFilterIds = ["all", "spa", "gym"] as const;
|
||
export type SpaGymFilterId = (typeof spaGymFilterIds)[number];
|
||
|
||
export const spaGymFilters: { id: SpaGymFilterId; label: string }[] = [
|
||
{ id: "all", label: "All" },
|
||
{ id: "spa", label: "Spa" },
|
||
{ id: "gym", label: "Gym" },
|
||
];
|
||
|
||
export const spaGymServices: SpaGymService[] = [
|
||
{
|
||
id: "gym-day-pass",
|
||
kind: "gym",
|
||
title: "Fitness day pass",
|
||
description: "Full access to cardio, weights, and stretch zones for one calendar day.",
|
||
duration: "All day · 6:00 — 22:00",
|
||
priceUsd: 18,
|
||
priceNote: "per guest / day",
|
||
image: "https://images.unsplash.com/photo-1534438327276-14e5300c3a48?w=900&q=80",
|
||
},
|
||
{
|
||
id: "gym-pt",
|
||
kind: "gym",
|
||
title: "Personal training",
|
||
description: "One-on-one session tailored to your goals — form, intensity, and recovery.",
|
||
duration: "45 minutes",
|
||
priceUsd: 55,
|
||
priceNote: "per session",
|
||
image: "https://images.unsplash.com/photo-1571019614242-c5c5dee9f50b?w=900&q=80",
|
||
},
|
||
{
|
||
id: "gym-hiit",
|
||
kind: "gym",
|
||
title: "Small-group HIIT",
|
||
description: "High-energy class in our studio — limited spots, hotel guests priority.",
|
||
duration: "50 minutes",
|
||
priceUsd: 28,
|
||
priceNote: "per class",
|
||
image: "https://images.unsplash.com/photo-1517836357463-d25dfeac3438?w=900&q=80",
|
||
},
|
||
{
|
||
id: "spa-swedish",
|
||
kind: "spa",
|
||
title: "Signature Swedish massage",
|
||
description: "Long, flowing strokes to ease travel tension and improve circulation.",
|
||
duration: "60 minutes",
|
||
priceUsd: 85,
|
||
priceNote: "per treatment",
|
||
image: "https://images.unsplash.com/photo-1544161515-4ab6ce6db874?w=900&q=80",
|
||
},
|
||
{
|
||
id: "spa-deep",
|
||
kind: "spa",
|
||
title: "Deep tissue therapy",
|
||
description: "Targeted work for shoulders, back, and legs after long flights.",
|
||
duration: "90 minutes",
|
||
priceUsd: 125,
|
||
priceNote: "per treatment",
|
||
image: "https://images.unsplash.com/photo-1600334129128-0c9b275703e6?w=900&q=80",
|
||
},
|
||
{
|
||
id: "spa-express",
|
||
kind: "spa",
|
||
title: "Express back & neck",
|
||
description: "Focused relief when you’re between meetings — clothes-on option.",
|
||
duration: "30 minutes",
|
||
priceUsd: 52,
|
||
priceNote: "per treatment",
|
||
image: "https://images.unsplash.com/photo-1519823551278-64ac92734fb1?w=900&q=80",
|
||
},
|
||
{
|
||
id: "spa-aroma",
|
||
kind: "spa",
|
||
title: "Aromatherapy ritual",
|
||
description: "Custom oil blend, warm compress, and full-body massage sequence.",
|
||
duration: "75 minutes",
|
||
priceUsd: 98,
|
||
priceNote: "per treatment",
|
||
image: "https://images.unsplash.com/photo-1540555700478-4be289fbecef?w=900&q=80",
|
||
},
|
||
{
|
||
id: "spa-couples",
|
||
kind: "spa",
|
||
title: "Couples’ suite ritual",
|
||
description: "Side-by-side massage in our private suite — sparkling water included.",
|
||
duration: "90 minutes",
|
||
priceUsd: 220,
|
||
priceNote: "per couple",
|
||
image: "https://images.unsplash.com/photo-1600334089648-b0d9d3028eb2?w=900&q=80",
|
||
},
|
||
];
|