{STUB_APARTMENT.name}
++ ${STUB_APARTMENT.price.toLocaleString()}.00 Per month +
++ Owner: {STUB_APARTMENT.owner.name} +
+Apartment details
+{STUB_APARTMENT.description}
+diff --git a/apps/web/src/app/hotel/[id]/page.tsx b/apps/web/src/app/hotel/[id]/page.tsx new file mode 100644 index 0000000..c617dc7 --- /dev/null +++ b/apps/web/src/app/hotel/[id]/page.tsx @@ -0,0 +1,189 @@ +// TODO: replace with real detail components once merged in frontend-SafeTrust +// Sources: +// frontend-SafeTrust/src/components/hotel/ApartmentDetail.tsx +// frontend-SafeTrust/src/components/hotel/ImageGallery.tsx +// frontend-SafeTrust/src/components/hotel/SuggestionsList.tsx +// frontend-SafeTrust/src/components/hotel/AmenityIcons.tsx +// +// Data source (when wired): +// Apollo query: GET_APARTMENT_BY_ID -> public.apartments (Hasura) + +import Link from 'next/link'; +import type { CSSProperties } from 'react'; + +const STUB_APARTMENT = { + name: 'La sabana sur', + address: '329 Calle santos, paseo colón, San José', + price: 4058, + bedrooms: 2, + bathrooms: 1, + petFriendly: true, + owner: { + name: 'Alberto Casas', + email: 'albertoCasas100@gmail.com', + phone: '+506 64852179', + }, + description: + 'Beautiful apartment in the heart of San José with modern amenities and stunning views.', +}; + +const styles = { + page: { + display: 'flex', + minHeight: '100vh', + backgroundColor: '#fff7ed', + color: '#111827', + } satisfies CSSProperties, + aside: { + width: '18rem', + borderRight: '1px solid #fed7aa', + padding: '1rem', + flexShrink: 0, + display: 'none', + } satisfies CSSProperties, + suggestionCard: { + display: 'flex', + gap: '0.5rem', + padding: '0.5rem', + marginBottom: '0.5rem', + border: '1px solid #fdba74', + borderRadius: '0.75rem', + backgroundColor: '#ffffff', + fontSize: '0.75rem', + } satisfies CSSProperties, + imagePlaceholder: { + backgroundColor: '#fed7aa', + borderRadius: '1rem', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + color: '#9a3412', + } satisfies CSSProperties, + main: { + flex: 1, + maxWidth: '64rem', + padding: '1.5rem', + } satisfies CSSProperties, + gallery: { + display: 'grid', + gridTemplateColumns: '2fr 1fr', + gap: '0.5rem', + marginBottom: '1.5rem', + } satisfies CSSProperties, + thumbs: { + display: 'flex', + flexDirection: 'column', + gap: '0.5rem', + } satisfies CSSProperties, + header: { + display: 'flex', + alignItems: 'flex-start', + justifyContent: 'space-between', + gap: '1rem', + marginBottom: '1rem', + } satisfies CSSProperties, + button: { + display: 'inline-block', + backgroundColor: '#f97316', + color: '#ffffff', + fontWeight: 700, + padding: '0.75rem 1.5rem', + borderRadius: '0.75rem', + } satisfies CSSProperties, + metaRow: { + display: 'flex', + gap: '1rem', + marginBottom: '1rem', + flexWrap: 'wrap', + } satisfies CSSProperties, +} as const; + +export default function ApartmentDetailPage({ + params, +}: { + params: { id: string }; +}) { + return ( +
+ ${STUB_APARTMENT.price.toLocaleString()}.00 Per month +
++ Owner: {STUB_APARTMENT.owner.name} +
+{STUB_APARTMENT.description}
+