Ártáblázat

This commit is contained in:
Bognar 2026-01-30 16:51:26 +01:00
parent f3f6c3bd78
commit 49c67013db
10 changed files with 197 additions and 62 deletions

View File

@ -1,6 +1,7 @@
"use client" "use client"
import Navbar from "@/components/navbar" import Navbar from "@/components/navbar"
import Footer from "@/components/footer"
import { ArrowLeft, Facebook, Star, CheckCircle2 } from "lucide-react" import { ArrowLeft, Facebook, Star, CheckCircle2 } from "lucide-react"
import Link from "next/link" import Link from "next/link"
import Image from "next/image" import Image from "next/image"
@ -124,6 +125,7 @@ export default function FacebookGoogleDiscountPage() {
</div> </div>
</div> </div>
</section> </section>
<Footer />
</main> </main>
) )
} }

View File

@ -1,6 +1,7 @@
"use client" "use client"
import Navbar from "@/components/navbar" import Navbar from "@/components/navbar"
import Footer from "@/components/footer"
import { ArrowLeft, CheckCircle2 } from "lucide-react" import { ArrowLeft, CheckCircle2 } from "lucide-react"
import Link from "next/link" import Link from "next/link"
import Script from "next/script" import Script from "next/script"
@ -75,6 +76,7 @@ export default function TikTokDiscountPage() {
</div> </div>
</div> </div>
</section> </section>
<Footer />
</main> </main>
) )
} }

View File

@ -1,6 +1,7 @@
"use client" "use client"
import Navbar from "@/components/navbar" import Navbar from "@/components/navbar"
import Footer from "@/components/footer"
import PricingTable from "@/components/pricing-table" import PricingTable from "@/components/pricing-table"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { Card } from "@/components/ui/card" import { Card } from "@/components/ui/card"
@ -26,6 +27,25 @@ const budapestRows = [
{ persons: "7-8 pax / 1 way", express: "45.000 HUF", private: "52.000 HUF" }, { persons: "7-8 pax / 1 way", express: "45.000 HUF", private: "52.000 HUF" },
] ]
const pozsonyRows = [
{ persons: "1 pax / 1 way", express: "16.000 HUF", private: "29.000 HUF" },
{ persons: "2 pax / 1 way", express: "23.500 HUF", private: "29.000 HUF" },
{ persons: "3 pax / 1 way", express: "26.500 HUF", private: "29.000 HUF" },
{ persons: "4 pax / 1 way", express: "31.000 HUF", private: "35.000 HUF" },
{ persons: "5-6 pax / 1 way", express: "33.000 HUF", private: "37.500 HUF" },
{ persons: "7-8 pax / 1 way", express: "35.000 HUF", private: "39.000 HUF" },
]
const budapestViennaRows = [
{ persons: "1 pax / 1 way", express: "40.000 HUF", private: "60.000 HUF" },
{ persons: "2 pax / 1 way", express: "50.000 HUF", private: "60.000 HUF" },
{ persons: "3 pax / 1 way", express: "55.000 HUF", private: "60.000 HUF" },
{ persons: "4 pax / 1 way", express: "60.000 HUF", private: "70.000 HUF" },
{ persons: "5 pax / 1 way", express: "65.000 HUF", private: "75.000 HUF" },
{ persons: "6 pax / 1 way", express: "65.000 HUF", private: "75.000 HUF" },
{ persons: "7-8 pax / 1 way", express: "70.000 HUF", private: "80.000 HUF" },
]
export default function PricingPage() { export default function PricingPage() {
const { language, t } = useLanguage() const { language, t } = useLanguage()
@ -58,6 +78,49 @@ export default function PricingPage() {
? ["1-3 fő (Mercedes E-class): 40.000 Ft", "4-6 fő (Mercedes Vito / Ford Tourneo Custom): 50.000 Ft"] ? ["1-3 fő (Mercedes E-class): 40.000 Ft", "4-6 fő (Mercedes Vito / Ford Tourneo Custom): 50.000 Ft"]
: ["1-3 pax (Mercedes E-class): 40.000 Ft", "4-6 pax (Mercedes Vito / Ford Tourneo Custom): 50.000 Ft"] : ["1-3 pax (Mercedes E-class): 40.000 Ft", "4-6 pax (Mercedes Vito / Ford Tourneo Custom): 50.000 Ft"]
const specialsPozsony = specials
const specialsBudapestVienna = [
{
name: language === "hu" ? "Családi csomag" : "Family package",
price: "66.000 HUF",
description: language === "hu"
? "max. 4 fő, min. 1 gyermek (0-14 éves), private transzfer, max. 3 normál és 3 kézi poggyász (Teljesítés: személygépjárművel)"
: "max. 4 pax, min. 1 child (0-14 yrs), private transfer, max. 3 standard and 3 hand luggage (Performed by passenger car)"
},
{
name: language === "hu" ? "„Nagy” családi csomag" : "„Large” family package",
price: "72.000 HUF",
description: language === "hu"
? "max. 6 fő, min. 1 gyermek (0-14 éves), private transzfer, max. 6 normál és 6 kézi poggyász (Teljesítés: kisbusszal)"
: "max. 6 pax, min. 1 child (0-14 yrs), private transfer, max. 6 standard and 6 hand luggage (Performed by minibus)"
}
]
const vipInfoBudapestVienna = language === "hu"
? ["1-3 fő (Mercedes E-class): 75.000 Ft", "4-6 fő (Mercedes Vito / Ford Tourneo Custom): 95.000 Ft"]
: ["1-3 pax (Mercedes E-class): 75.000 Ft", "4-6 pax (Mercedes Vito / Ford Tourneo Custom): 95.000 Ft"]
const routeNav = [
{
id: "gyor-becs",
label: language === "hu" ? "Győr Bécs (Schwechat)" : "Győr Vienna (Schwechat)",
},
{
id: "gyor-budapest",
label: language === "hu" ? "Győr Budapest" : "Győr Budapest",
},
{
id: "gyor-pozsony",
label: language === "hu" ? "Győr Pozsony" : "Győr Bratislava",
},
{
id: "budapest-becs",
label: language === "hu" ? "Budapest Bécs (Schwechat)" : "Budapest Vienna (Schwechat)",
},
]
return ( return (
<main className="relative min-h-screen bg-slate-50"> <main className="relative min-h-screen bg-slate-50">
<Navbar darkMode={true} /> <Navbar darkMode={true} />
@ -118,7 +181,26 @@ export default function PricingPage() {
</Button> </Button>
</Card> </Card>
{/* Route Navigation */}
<div className="mb-14">
<div className="text-center text-[10px] font-black uppercase tracking-[0.4em] text-slate-400 mb-4">
{language === "hu" ? "Útvonalak" : "Routes"}
</div>
<div className="flex flex-wrap justify-center gap-3">
{routeNav.map(route => (
<a
key={route.id}
href={`#${route.id}`}
className="px-4 py-2 rounded-full bg-white text-slate-700 text-xs font-bold uppercase tracking-widest border border-slate-100 shadow-sm hover:border-primary hover:text-primary transition-colors"
>
{route.label}
</a>
))}
</div>
</div>
{/* Tables */} {/* Tables */}
<div id="gyor-becs">
<PricingTable <PricingTable
route={language === "hu" ? "GYŐR BÉCS REPTÉR (SCHWECHAT) vagy BÉCS REPTÉR - GYŐR" : "GYŐR VIENNA AIRPORT (SCHWECHAT) or VIENNA AIRPORT - GYŐR"} route={language === "hu" ? "GYŐR BÉCS REPTÉR (SCHWECHAT) vagy BÉCS REPTÉR - GYŐR" : "GYŐR VIENNA AIRPORT (SCHWECHAT) or VIENNA AIRPORT - GYŐR"}
rows={getFaresHub(becsRows)} rows={getFaresHub(becsRows)}
@ -126,7 +208,9 @@ export default function PricingPage() {
vipInfo={vipInfo} vipInfo={vipInfo}
effectiveFrom={`${t.pricing.table.effective}: 2026.01.15`} effectiveFrom={`${t.pricing.table.effective}: 2026.01.15`}
/> />
</div>
<div id="gyor-budapest">
<PricingTable <PricingTable
route={language === "hu" ? "GYŐR BUDAPEST REPTÉR vagy BUDAPEST REPTÉR - GYŐR" : "GYŐR BUDAPEST AIRPORT or BUDAPEST AIRPORT - GYŐR"} route={language === "hu" ? "GYŐR BUDAPEST REPTÉR vagy BUDAPEST REPTÉR - GYŐR" : "GYŐR BUDAPEST AIRPORT or BUDAPEST AIRPORT - GYŐR"}
rows={getFaresHub(budapestRows)} rows={getFaresHub(budapestRows)}
@ -134,7 +218,29 @@ export default function PricingPage() {
vipInfo={vipInfo} vipInfo={vipInfo}
effectiveFrom={`${t.pricing.table.effective}: 2026.01.15`} effectiveFrom={`${t.pricing.table.effective}: 2026.01.15`}
/> />
</div>
<div id="gyor-pozsony">
<PricingTable
route={language === "hu" ? "GYŐR POZSONY REPTÉR vagy POZSONY REPTÉR - GYŐR" : "GYŐR BRATISLAVA AIRPORT or BRATISLAVA AIRPORT - GYŐR"}
rows={getFaresHub(pozsonyRows)}
specials={specialsPozsony}
vipInfo={vipInfo}
effectiveFrom={`${t.pricing.table.effective}: 2026.01.15`}
/>
</div>
<div id="budapest-becs">
<PricingTable
route={language === "hu" ? "BUDAPEST BÉCS REPTÉR (SCHWECHAT) vagy BÉCS REPTÉR (SCHWECHAT) - BUDAPEST" : "BUDAPEST VIENNA AIRPORT (SCHWECHAT) or VIENNA AIRPORT (SCHWECHAT) - BUDAPEST"}
rows={getFaresHub(budapestViennaRows)}
specials={specialsBudapestVienna}
vipInfo={vipInfoBudapestVienna}
effectiveFrom={`${t.pricing.table.effective}: 2026.01.15`}
/>
</div>
{/* Additional Info Cards */} {/* Additional Info Cards */}
<div className="grid grid-cols-1 md:grid-cols-3 gap-8 mt-24"> <div className="grid grid-cols-1 md:grid-cols-3 gap-8 mt-24">
<Card className="p-8 rounded-[2rem] border-none shadow-lg bg-white group hover:-translate-y-2 transition-all duration-300"> <Card className="p-8 rounded-[2rem] border-none shadow-lg bg-white group hover:-translate-y-2 transition-all duration-300">
@ -191,6 +297,7 @@ export default function PricingPage() {
</div> </div>
</div> </div>
</section> </section>
<Footer />
</main> </main>
) )
} }

View File

@ -1,6 +1,7 @@
"use client" "use client"
import Navbar from "@/components/navbar" import Navbar from "@/components/navbar"
import Footer from "@/components/footer"
import { Card } from "@/components/ui/card" import { Card } from "@/components/ui/card"
import { ArrowLeft, Info } from "lucide-react" import { ArrowLeft, Info } from "lucide-react"
import Link from "next/link" import Link from "next/link"
@ -88,6 +89,7 @@ export default function ConditionsPage() {
</div> </div>
</div> </div>
</section> </section>
<Footer />
</main> </main>
) )
} }

View File

@ -1,6 +1,7 @@
"use client" "use client"
import Navbar from "@/components/navbar" import Navbar from "@/components/navbar"
import Footer from "@/components/footer"
import { Card } from "@/components/ui/card" import { Card } from "@/components/ui/card"
import { ArrowLeft, Users, Briefcase, Wind, Wifi, ShieldCheck, ChevronRight } from "lucide-react" import { ArrowLeft, Users, Briefcase, Wind, Wifi, ShieldCheck, ChevronRight } from "lucide-react"
import Link from "next/link" import Link from "next/link"
@ -222,6 +223,7 @@ export default function FleetPage() {
</div> </div>
</div> </div>
</section> </section>
<Footer />
</main> </main>
) )
} }

View File

@ -1,6 +1,7 @@
"use client" "use client"
import Navbar from "@/components/navbar" import Navbar from "@/components/navbar"
import Footer from "@/components/footer"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { Card } from "@/components/ui/card" import { Card } from "@/components/ui/card"
import { ArrowLeft, Phone, Mail, MessageSquare, Clock, MapPin, Smartphone } from "lucide-react" import { ArrowLeft, Phone, Mail, MessageSquare, Clock, MapPin, Smartphone } from "lucide-react"
@ -148,6 +149,7 @@ export default function ContactPage() {
</div> </div>
</div> </div>
</section> </section>
<Footer />
</main> </main>
) )
} }

View File

@ -4,6 +4,7 @@ import Navbar from "@/components/navbar"
import Hero from "@/components/hero" import Hero from "@/components/hero"
import FeatureSection from "@/components/feature-section" import FeatureSection from "@/components/feature-section"
import CookieConsent from "@/components/cookie-consent" import CookieConsent from "@/components/cookie-consent"
import Footer from "@/components/footer"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { useLanguage } from "@/lib/language-context" import { useLanguage } from "@/lib/language-context"
import { Card } from "@/components/ui/card" import { Card } from "@/components/ui/card"
@ -256,65 +257,7 @@ export default function Home() {
</div> </div>
</section> </section>
{/* Footer / Final CTA */} <Footer />
<section className="py-16 md:py-20 bg-slate-950 text-white text-center">
<div className="max-w-4xl mx-auto px-6 space-y-12">
<h2 className="text-4xl md:text-6xl font-black tracking-tighter uppercase">{t.footer.ready}</h2>
<p className="text-xl text-slate-400 max-w-xl mx-auto">
{t.footer.description}
</p>
<div className="flex justify-center gap-6">
<Button size="lg" asChild className="rounded-full px-12 h-14 text-sm font-bold uppercase tracking-widest bg-primary hover:bg-primary/90 transition-all shadow-2xl">
<a href="https://app.skyflytravel.hu/public/offers/new" target="_blank" rel="noopener noreferrer">
{t.footer.cta}
</a>
</Button>
</div>
<div className="pt-12 border-t border-white/5 space-y-6">
<div className="flex flex-wrap justify-center gap-x-8 gap-y-2 text-slate-400 text-xs font-bold uppercase tracking-widest">
<a href="/docs/impresszum.pdf" target="_blank" rel="noopener noreferrer" className="hover:text-primary transition-colors">
{t.footer.impressum}
</a>
<a href="/docs/ADATVEDELEMI_SZABALYZAT_ZT.pdf" target="_blank" rel="noopener noreferrer" className="hover:text-primary transition-colors">
{t.footer.privacy}
</a>
</div>
<div className="flex flex-wrap justify-center gap-4">
<a href="https://www.facebook.com/airporttransfer.gyor" target="_blank" rel="noopener noreferrer" aria-label="Facebook" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="/images/social/facebook.png" alt="Facebook" className="w-5 h-5 object-contain" />
</a>
<a href="https://plus.google.com/u/0/115420236176324532133/posts" target="_blank" rel="noopener noreferrer" aria-label="Google Plus" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="/images/social/googleplus.png" alt="Google Plus" className="w-5 h-5 object-contain" />
</a>
<a href="https://x.com/SkyFlyTravel1" target="_blank" rel="noopener noreferrer" aria-label="X (Twitter)" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="/images/social/twitter.png" alt="X (Twitter)" className="w-5 h-5 object-contain" />
</a>
<a href="http://skyflytravel.blogspot.hu/" target="_blank" rel="noopener noreferrer" aria-label="Blogspot" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="/images/social/blogspot.png" alt="Blogspot" className="w-5 h-5 object-contain" />
</a>
<a href="https://www.tiktok.com/@skyflytravel.transfer" target="_blank" rel="noopener noreferrer" aria-label="TikTok" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="https://cdn.simpleicons.org/tiktok/ffffff" alt="TikTok" className="w-5 h-5 object-contain" />
</a>
<a href="https://www.instagram.com/skyfly_travel/" target="_blank" rel="noopener noreferrer" aria-label="Instagram" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="/images/social/instagram.png" alt="Instagram" className="w-5 h-5 object-contain" />
</a>
</div>
<div className="text-slate-600 text-[10px] font-bold uppercase tracking-widest">
© 2026 SkyFly Travel. {t.footer.rights}
</div>
<div className="text-slate-900/10 text-[8px] leading-tight select-none">
reptéri transzfer, transzfer Győr, Budapest, Bécs Schwechat, Pozsony - airport Shuttle - Airport taxi - Reptéri járatok - Repülőtéri transzfer - Budapest reptér - Pozsony repter - Bécs reptér (Vienna Airport) - Transfer Budapest airport - Transfer Vienna Airport Budapest Liszt Ferenc Ferihegy
</div>
<div className="flex flex-col items-center gap-1 text-slate-800 text-[9px] font-bold uppercase tracking-widest pt-2 sm:flex-row sm:justify-center sm:gap-4">
<a href="https://transzfer.lap.hu" target="_blank" rel="noopener noreferrer" className="hover:text-primary transition-colors">transzfer.lap.hu</a>
<span className="opacity-20 hidden sm:inline">|</span>
<a href="https://utasszallitas.lap.hu" target="_blank" rel="noopener noreferrer" className="hover:text-primary transition-colors">utasszallitas.lap.hu</a>
<span className="opacity-20 hidden sm:inline">|</span>
<a href="https://repuloter.lap.hu" target="_blank" rel="noopener noreferrer" className="hover:text-primary transition-colors">repuloter.lap.hu</a>
</div>
</div>
</div>
</section>
<CookieConsent /> <CookieConsent />
</main> </main>

View File

@ -1,6 +1,7 @@
"use client" "use client"
import Navbar from "@/components/navbar" import Navbar from "@/components/navbar"
import Footer from "@/components/footer"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { Card } from "@/components/ui/card" import { Card } from "@/components/ui/card"
import { ArrowLeft, CheckCircle2, Facebook, Phone, Info } from "lucide-react" import { ArrowLeft, CheckCircle2, Facebook, Phone, Info } from "lucide-react"
@ -202,6 +203,7 @@ export default function ServicesPage() {
</div> </div>
</section> </section>
<Footer />
</main> </main>
) )
} }

69
components/footer.tsx Normal file
View File

@ -0,0 +1,69 @@
"use client"
import { Button } from "@/components/ui/button"
import { useLanguage } from "@/lib/language-context"
export default function Footer() {
const { t } = useLanguage()
return (
<section className="py-16 md:py-20 bg-slate-950 text-white text-center">
<div className="max-w-4xl mx-auto px-6 space-y-12">
<h2 className="text-4xl md:text-6xl font-black tracking-tighter uppercase">{t.footer.ready}</h2>
<p className="text-xl text-slate-400 max-w-xl mx-auto">
{t.footer.description}
</p>
<div className="flex justify-center gap-6">
<Button size="lg" asChild className="rounded-full px-12 h-14 text-sm font-bold uppercase tracking-widest bg-primary hover:bg-primary/90 transition-all shadow-2xl">
<a href="https://app.skyflytravel.hu/public/offers/new" target="_blank" rel="noopener noreferrer">
{t.footer.cta}
</a>
</Button>
</div>
<div className="pt-12 border-t border-white/5 space-y-6">
<div className="flex flex-wrap justify-center gap-x-8 gap-y-2 text-slate-400 text-xs font-bold uppercase tracking-widest">
<a href="/docs/impresszum.pdf" target="_blank" rel="noopener noreferrer" className="hover:text-primary transition-colors">
{t.footer.impressum}
</a>
<a href="/docs/ADATVEDELEMI_SZABALYZAT_ZT.pdf" target="_blank" rel="noopener noreferrer" className="hover:text-primary transition-colors">
{t.footer.privacy}
</a>
</div>
<div className="flex flex-wrap justify-center gap-4">
<a href="https://www.facebook.com/airporttransfer.gyor" target="_blank" rel="noopener noreferrer" aria-label="Facebook" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="/images/social/facebook.png" alt="Facebook" className="w-5 h-5 object-contain" />
</a>
<a href="https://plus.google.com/u/0/115420236176324532133/posts" target="_blank" rel="noopener noreferrer" aria-label="Google Plus" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="/images/social/googleplus.png" alt="Google Plus" className="w-5 h-5 object-contain" />
</a>
<a href="https://x.com/SkyFlyTravel1" target="_blank" rel="noopener noreferrer" aria-label="X (Twitter)" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="/images/social/twitter.png" alt="X (Twitter)" className="w-5 h-5 object-contain" />
</a>
<a href="http://skyflytravel.blogspot.hu/" target="_blank" rel="noopener noreferrer" aria-label="Blogspot" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="/images/social/blogspot.png" alt="Blogspot" className="w-5 h-5 object-contain" />
</a>
<a href="https://www.tiktok.com/@skyflytravel.transfer" target="_blank" rel="noopener noreferrer" aria-label="TikTok" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="https://cdn.simpleicons.org/tiktok/ffffff" alt="TikTok" className="w-5 h-5 object-contain" />
</a>
<a href="https://www.instagram.com/skyfly_travel/" target="_blank" rel="noopener noreferrer" aria-label="Instagram" className="opacity-80 hover:opacity-100 transition-opacity">
<img src="/images/social/instagram.png" alt="Instagram" className="w-5 h-5 object-contain" />
</a>
</div>
<div className="text-slate-600 text-[10px] font-bold uppercase tracking-widest">
© 2026 SkyFly Travel. {t.footer.rights}
</div>
<div className="text-slate-900/10 text-[8px] leading-tight select-none">
reptéri transzfer, transzfer GyÅr, Budapest, ©cs Schwechat, Pozsony - airport Shuttle - Airport taxi - Reptéri ¡ratok - Repü©ri transzfer - Budapest reptér - Pozsony repter - ©cs reptér (Vienna Airport) - Transfer Budapest airport - Transfer Vienna Airport Budapest Liszt Ferenc Ferihegy
</div>
<div className="flex flex-col items-center gap-1 text-slate-800 text-[9px] font-bold uppercase tracking-widest pt-2 sm:flex-row sm:justify-center sm:gap-4">
<a href="https://transzfer.lap.hu" target="_blank" rel="noopener noreferrer" className="hover:text-primary transition-colors">transzfer.lap.hu</a>
<span className="opacity-20 hidden sm:inline">|</span>
<a href="https://utasszallitas.lap.hu" target="_blank" rel="noopener noreferrer" className="hover:text-primary transition-colors">utasszallitas.lap.hu</a>
<span className="opacity-20 hidden sm:inline">|</span>
<a href="https://repuloter.lap.hu" target="_blank" rel="noopener noreferrer" className="hover:text-primary transition-colors">repuloter.lap.hu</a>
</div>
</div>
</div>
</section>
)
}

View File

@ -39,7 +39,11 @@ const PricingTable = ({
{/* Route Header matching FeatureSection style */} {/* Route Header matching FeatureSection style */}
<div className="space-y-2 mb-8"> <div className="space-y-2 mb-8">
<h3 className="text-5xl md:text-7xl font-black uppercase tracking-tighter opacity-10 text-primary"> <h3 className="text-5xl md:text-7xl font-black uppercase tracking-tighter opacity-10 text-primary">
{route.includes("BÉCS") || route.includes("VIENNA") ? "VIENNA" : "BUDAPEST"} {route.includes("POZSONY") || route.includes("BRATISLAVA")
? "BRATISLAVA"
: (route.includes("BÉCS") || route.includes("VIENNA"))
? "VIENNA"
: "BUDAPEST"}
</h3> </h3>
<h2 className="text-2xl md:text-3xl font-black tracking-tight -mt-8 md:-mt-10 ml-1 text-slate-900 max-w-2xl uppercase"> <h2 className="text-2xl md:text-3xl font-black tracking-tight -mt-8 md:-mt-10 ml-1 text-slate-900 max-w-2xl uppercase">
{route} {route}