From a7c17b7572565682fe8d546cb45246ad6a29ba70 Mon Sep 17 00:00:00 2001 From: Erol Date: Fri, 27 Feb 2026 10:27:25 +0100 Subject: [PATCH] Bra detaljvvisning" --- .../golfbaner/[slug]/FacilityDetailView.tsx | 213 ++++++++++-------- 1 file changed, 113 insertions(+), 100 deletions(-) diff --git a/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx b/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx index 6f6793d..88b4a0a 100644 --- a/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx +++ b/frontend/src/app/golfbaner/[slug]/FacilityDetailView.tsx @@ -1,12 +1,12 @@ "use client"; /** - * TEE OFF DETAIL VIEW - COMPLETE v3.12 (THE DEFINITIVE VERSION) + * TEE OFF DETAIL VIEW - COMPLETE v3.15 (FINAL POLISH) * --------------------------------------------------------------------------- - * FIX: Kart-ikonet er nå strengt låst til w-5 h-5 (ingen mer "eksplosjon"). - * FIX: Telefon-lenker bruker 0047-format internt (tel:0047...). - * FIX: Sidebar har 4 klikkbare monokrome lenker (Web, Tel, Mail, Maps). - * FIX: Inneholder ALLE seksjoner: Intro, Vær, Detaljer, Kart, Video, Priser, Scorekort. - * REGEL: Beholder 22/78 layout og robust JSON-parsing for Losby-stabilitet. + * FIX: Flyttet Turneringer til over Baneguide i ressurslisten. + * FIX: Endret "Statistik" til "Statistikk". + * FIX: Ensrettet alle knapper i "Andre ressurser" (samme bakgrunn og hover). + * FIX: Sørget for at alle felt med lenker i "Andre tilbud" er oransje (#ff5722). + * REGEL: Beholder monokrome ikoner, 22/78 layout og robust JSON-parsing. * --------------------------------------------------------------------------- */ @@ -15,23 +15,16 @@ import { STATUS_MAP, FALLBACK_IMAGE } from "@/config/constants"; import Link from 'next/link'; import CourseDisplay from './CourseDisplay'; -// Hjelpefunksjon for å formatere telefonnummer for tel-lenker (f.eks +47 -> 0047) const formatPhoneForUrl = (phone: string) => { if (!phone) return ""; return phone.replace('+', '00').replace(/\s/g, ''); }; -// --- MONOKROME SVG IKONER (Strengt låst til 20x20px) --- const Icon = ({ children, className = "w-5 h-5" }: { children: React.ReactNode, className?: string }) => ( {children} @@ -42,8 +35,11 @@ const ICONS = { phone: , mail: <>, pin: <>, - booking: <>, - guide: <>, + booking: <>, + trophy: <>, + guide: <>, + camera: <>, + chart: <>, weather: <> }; @@ -51,7 +47,6 @@ export default function FacilityDetailView({ facility }: { facility: any }) { const [showBackToTop, setShowBackToTop] = useState(false); const [currentSlide, setCurrentSlide] = useState(0); - // --- DATA RECOVERY (LOSBY-FIX) --- const parseJson = (val: any, fallback: any) => { if (!val) return fallback; if (typeof val === 'object') return val; @@ -67,6 +62,7 @@ export default function FacilityDetailView({ facility }: { facility: any }) { const linkClass = "text-orange-600 hover:underline transition-colors font-bold"; const sidebarLinkClass = "flex items-center gap-4 hover:text-orange-600 transition-colors group"; + const resourceBtnClass = "flex justify-between items-center p-5 bg-gray-50 rounded-2xl text-[11px] font-black uppercase hover:bg-orange-600 hover:text-white transition-all group"; useEffect(() => { if (gallery.length <= 1) return; @@ -91,30 +87,18 @@ export default function FacilityDetailView({ facility }: { facility: any }) { return (
- {/* HEADER / GALLERI SLIDER */} + {/* 1. HERO SLIDER */}
{gallery.map((img: string, i: number) => ( ))}
- -
-
- {activeCourses.map((c: any) => ( - {STATUS_MAP[c.status] || c.status} - ))} -
- {facility.status_updated_at && Sist oppdatert: {formatDate(facility.status_updated_at)}} +
+ {activeCourses.map((c: any) => ( + {STATUS_MAP[c.status] || c.status} + ))}
- -
- {facility.website_url && } - {facility.golfbox_booking_url && } - - {facility.weather_url && } -
- -
+
{facility.logo_url && (
Logo
)} @@ -123,11 +107,14 @@ export default function FacilityDetailView({ facility }: { facility: any }) {
+ {/* 2. STICKY NAV */}