b
@@ -9,8 +9,8 @@ import { FLEET_ITEMS } from "@/lib/data";
|
||||
import { FleetList } from "@/components/FleetList";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Geniş Vinç Filosu ve İş Makineleri Parkurumuz",
|
||||
description: "300 tondan 500 tona kadar mobil vinçler, sepetli platformlar ve hiyap vinçlerden oluşan modern araç filomuzla hizmetinizdeyiz.",
|
||||
title: "Vinç Filosu ve İş Makinelerimiz | Dalaman Muğla",
|
||||
description: "Mobil vinçler, sepetli platformlar ve hiyap vinçlerden oluşan geniş araç parkurumuz hakkında detaylı bilgi alın. Her tonajda profesyonel çözüm.",
|
||||
};
|
||||
|
||||
const FLEET_CATEGORIES = ["Hepsi", "Mobil Vinç", "Sepetli Platform", "Hiyap", "Kule Vinç"];
|
||||
|
||||
@@ -7,8 +7,8 @@ import { Shield, Zap, Target, Users, Rocket, Eye } from "lucide-react";
|
||||
import { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Hakkımızda | Aydoğan Nakliyat Vinç Kurumsal",
|
||||
description: "20 yılı aşkın tecrübemizle Dalaman ve Muğla bölgesinin lider vinç ve nakliyat firmasıyız. Vizyonumuz, misyonumuz ve profesyonel ekibimiz hakkında bilgi alın.",
|
||||
title: "Kurumsal & Hakkımızda | Aydoğan Nakliyat Vinç Dalaman",
|
||||
description: "20 yılı aşkın tecrübeyle Dalaman ve Muğla bölgesinin lider vinç firması. Güvenlik, hız ve hassasiyet odaklı ağır nakliyat çözümlerimiz hakkında bilgi alın.",
|
||||
};
|
||||
|
||||
const VALUES = [
|
||||
@@ -38,7 +38,7 @@ const STATS = [
|
||||
{ label: "Yıllık Tecrübe", value: "20+" },
|
||||
{ label: "Tamamlanan Proje", value: "1500+" },
|
||||
{ label: "Modern Araç Filosu", value: "25+" },
|
||||
{ label: "Maksimum Kapasite", value: "500t" }
|
||||
{ label: "Maksimum Kapasite", value: "SINIRSIZ" }
|
||||
];
|
||||
|
||||
export default function AboutPage() {
|
||||
|
||||
14
app/hizmetler/layout.tsx
Normal file
@@ -0,0 +1,14 @@
|
||||
import { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Profesyonel Vinç ve Nakliyat Hizmetlerimiz | Dalaman Muğla",
|
||||
description: "Mobil vinç, sepetli platform, konteyner taşıma, tekne kaldırma ve ağır nakliyat hizmetlerimizi inceleyin. 7/24 profesyonel çözümler.",
|
||||
};
|
||||
|
||||
export default function ServicesLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
return <>{children}</>;
|
||||
}
|
||||
@@ -31,7 +31,7 @@ const FEATURES = [
|
||||
];
|
||||
|
||||
const STATS = [
|
||||
{ label: "Max Kapasite", value: "500T", highlighted: true },
|
||||
{ label: "Max Kapasite", value: "HER TONAJ", highlighted: true },
|
||||
{ label: "Yıllık Deneyim", value: "15+", highlighted: false },
|
||||
{ label: "İş Güvenliği", value: "100%", highlighted: false },
|
||||
{ label: "Aktif Operasyon", value: "24/7", highlighted: true }
|
||||
@@ -100,7 +100,7 @@ export default function ServicesPage() {
|
||||
onClick={() => handleWhatsApp(service.title)}
|
||||
className="flex items-center gap-4 bg-primary text-on-primary px-8 py-4 font-headline font-bold uppercase hover:brightness-110 transition-all group"
|
||||
>
|
||||
Teklif Al
|
||||
WhatsApp ile Teklif Al
|
||||
<ArrowRight className="w-5 h-5 group-hover:translate-x-2 transition-transform" />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -4,10 +4,11 @@ import { FloatingWhatsApp } from "@/components/FloatingWhatsApp";
|
||||
import Image from "next/image";
|
||||
import { MapPin, Phone, Mail, ArrowRight, Navigation } from "lucide-react";
|
||||
import { Metadata } from "next";
|
||||
import { siteConfig } from "@/lib/data";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "İletişim | Dalaman, Muğla Vinç ve Nakliyat",
|
||||
description: "Aydoğan Nakliyat operasyon merkezine ulaşın. Dalaman Sanayi Sitesi'nde 7/24 hizmet veriyoruz. Teklif almak için bizi arayın.",
|
||||
title: `İletişim | ${siteConfig.name}`,
|
||||
description: siteConfig.description,
|
||||
};
|
||||
|
||||
export default function ContactPage() {
|
||||
@@ -35,7 +36,7 @@ export default function ContactPage() {
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Main Content: Contact Details Only */}
|
||||
{/* Main Content: Contact Details */}
|
||||
<div className="bg-outline-variant/5 py-24 px-8 md:px-16">
|
||||
<div className="max-w-5xl mx-auto">
|
||||
<section className="bg-surface-container p-12 lg:p-24 flex flex-col md:flex-row gap-16 items-center border border-outline-variant/10 shadow-xl">
|
||||
@@ -50,7 +51,7 @@ export default function ContactPage() {
|
||||
<div>
|
||||
<p className="text-[10px] uppercase tracking-[0.3em] text-on-surface-variant mb-1 font-bold">Adres</p>
|
||||
<p className="text-xl font-medium text-on-surface leading-snug">
|
||||
Merkez Mah. Sanayi Sitesi No: 42<br/>Dalaman / Muğla
|
||||
{siteConfig.contact.address}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -60,9 +61,9 @@ export default function ContactPage() {
|
||||
<Phone className="w-8 h-8" />
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-[10px] uppercase tracking-[0.3em] text-on-surface-variant mb-1 font-bold">Telefon</p>
|
||||
<p className="text-[10px] uppercase tracking-[0.3em] text-on-surface-variant mb-1 font-bold">Telefon & WhatsApp</p>
|
||||
<p className="text-3xl font-black text-on-surface tracking-tighter">
|
||||
+90 252 692 00 00
|
||||
{siteConfig.contact.phone}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -74,7 +75,7 @@ export default function ContactPage() {
|
||||
<div>
|
||||
<p className="text-[10px] uppercase tracking-[0.3em] text-on-surface-variant mb-1 font-bold">E-Posta</p>
|
||||
<p className="text-xl font-medium text-on-surface">
|
||||
info@aydogannakliyat.com
|
||||
{siteConfig.contact.email}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -126,7 +127,7 @@ export default function ContactPage() {
|
||||
</p>
|
||||
<a
|
||||
className="text-primary font-bold uppercase tracking-widest text-xs flex items-center gap-2 hover:gap-4 transition-all"
|
||||
href="https://maps.google.com"
|
||||
href={siteConfig.contact.maps}
|
||||
target="_blank"
|
||||
>
|
||||
Yol Tarifi Al <ArrowRight className="w-4 h-4" />
|
||||
|
||||
@@ -14,24 +14,40 @@ const inter = Inter({
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
metadataBase: new URL("https://aydogannakliyatvinc.com"), // Gerçek domain ile değiştirilmeli
|
||||
metadataBase: new URL("https://aydogannakliyatvinc.com"),
|
||||
title: {
|
||||
default: "Aydoğan Nakliyat Vinç | Dalaman, Muğla, Ege Bölgesi",
|
||||
default: "Aydoğan Nakliyat Vinç | Dalaman, Muğla Vinç Kiralama & Ağır Nakliyat",
|
||||
template: "%s | Aydoğan Nakliyat Vinç"
|
||||
},
|
||||
description: "Muğla Dalaman merkezli profesyonel vinç kiralama ve ağır nakliyat hizmetleri. 7/24 tekne taşıma, konteyner nakliyesi ve tüm Türkiye geneli ağır yük çözümleri.",
|
||||
keywords: ["vinç kiralama", "nakliyat", "muğla vinç", "dalaman vinç", "ağır nakliyat", "tekne taşıma", "konteyner taşıma", "ege bölgesi vinç", "türkiye geneli nakliyat"],
|
||||
authors: [{ name: "Aydoğan Nakliyat" }],
|
||||
creator: "Aydoğan Nakliyat",
|
||||
publisher: "Aydoğan Nakliyat",
|
||||
description: "Muğla Dalaman merkezli profesyonel vinç kiralama, sepetli platform ve ağır nakliyat hizmetleri. 7/24 tekne taşıma, tiny house nakliyesi ve konteyner kaldırma çözümleri.",
|
||||
keywords: [
|
||||
"vinç kiralama",
|
||||
"dalaman vinç",
|
||||
"muğla vinç",
|
||||
"ağır nakliyat",
|
||||
"sepetli platform kiralama",
|
||||
"hiyap vinç",
|
||||
"tekne taşıma",
|
||||
"konteyner nakliyesi",
|
||||
"tiny house taşıma",
|
||||
"sandiviç panel indirme",
|
||||
"jet ground kaldırma",
|
||||
"dalaman nakliyat",
|
||||
"fethiye vinç kiralama",
|
||||
"ortaca vinç kiralama",
|
||||
"köyceğiz vinç kiralama"
|
||||
],
|
||||
authors: [{ name: "Aydoğan Nakliyat Vinç" }],
|
||||
creator: "Aydoğan Nakliyat Vinç",
|
||||
publisher: "Aydoğan Nakliyat Vinç",
|
||||
formatDetection: {
|
||||
email: false,
|
||||
address: true,
|
||||
telephone: true,
|
||||
},
|
||||
openGraph: {
|
||||
title: "Aydoğan Nakliyat Vinç | Dalaman, Muğla, Ege Bölgesi",
|
||||
description: "Profesyonel vinç kiralama ve ağır nakliyat hizmetleri. 7/24 güvenilir çözümler.",
|
||||
title: "Aydoğan Nakliyat Vinç | Dalaman, Muğla Vinç Kiralama & Ağır Nakliyat",
|
||||
description: "7/24 profesyonel vinç kiralama ve ağır nakliyat çözümleri. Dalaman, Muğla ve tüm Ege bölgesi.",
|
||||
url: "https://aydogannakliyatvinc.com",
|
||||
siteName: "Aydoğan Nakliyat Vinç",
|
||||
locale: "tr_TR",
|
||||
@@ -39,7 +55,7 @@ export const metadata: Metadata = {
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "Aydoğan Nakliyat Vinç | Dalaman, Muğla, Ege Bölgesi",
|
||||
title: "Aydoğan Nakliyat Vinç | Dalaman, Muğla Vinç Kiralama & Ağır Nakliyat",
|
||||
description: "Profesyonel vinç kiralama ve ağır nakliyat hizmetleri.",
|
||||
},
|
||||
robots: {
|
||||
|
||||
@@ -10,8 +10,8 @@ import { FloatingWhatsApp } from "@/components/FloatingWhatsApp";
|
||||
import { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Aydoğan Nakliyat Vinç | Dalaman, Muğla Vinç Kiralama",
|
||||
description: "Dalaman ve Muğla genelinde 7/24 vinç kiralama, ağır nakliyat, tekne taşıma ve konteyner nakliyesi. Güçlü filo, uzman kadro ve uygun fiyatlı çözümler.",
|
||||
title: "Aydoğan Nakliyat Vinç | Dalaman Muğla Vinç Kiralama & Ağır Nakliyat",
|
||||
description: "Dalaman ve Muğla genelinde 7/24 profesyonel vinç kiralama, ağır nakliyat, tekne ve tiny house taşıma hizmetleri. Güçlü filo ve uzman kadro.",
|
||||
};
|
||||
|
||||
export default function Home() {
|
||||
|
||||
@@ -54,7 +54,7 @@ export function CTASection() {
|
||||
onClick={handleWhatsApp}
|
||||
className="bg-primary text-on-primary font-headline font-black uppercase tracking-widest px-12 py-6 text-xl hover:brightness-110 active:scale-95 transition-all rounded-none shadow-[10px_10px_0px_0px_rgba(0,0,0,0.5)] active:shadow-none whitespace-nowrap flex items-center justify-center gap-4 group"
|
||||
>
|
||||
ŞİMDİ TEKLİF ALIN
|
||||
WHATSAPP'TAN TEKLİF ALIN
|
||||
<MessageCircle className="w-6 h-6 group-hover:rotate-12 transition-transform" />
|
||||
</button>
|
||||
<p className="text-center font-label text-[10px] uppercase tracking-widest text-on-surface-variant font-bold">
|
||||
|
||||
@@ -1,24 +1,72 @@
|
||||
"use client";
|
||||
|
||||
import { MessageCircle } from "lucide-react";
|
||||
import { motion } from "framer-motion";
|
||||
import { motion, AnimatePresence } from "framer-motion";
|
||||
import { siteConfig } from "@/lib/data";
|
||||
import { useState, useEffect } from "react";
|
||||
|
||||
export function FloatingWhatsApp() {
|
||||
const [isVisible, setIsVisible] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
const timer = setTimeout(() => setIsVisible(true), 1000);
|
||||
return () => clearTimeout(timer);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div className="fixed bottom-6 right-6 md:bottom-10 md:right-10 z-[110]">
|
||||
<motion.a
|
||||
href="https://wa.me/905XXXXXXXXX"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
whileHover={{ x: -4, y: -4 }}
|
||||
whileTap={{ scale: 0.95 }}
|
||||
className="bg-[#25D366] text-white w-14 h-14 md:w-20 md:h-20 flex items-center justify-center shadow-[10px_10px_0px_0px_rgba(0,0,0,0.5)] hover:shadow-[4px_4px_0px_0px_rgba(0,0,0,0.5)] transition-all rounded-none relative group"
|
||||
>
|
||||
<MessageCircle size={32} fill="currentColor" className="text-white md:scale-125" />
|
||||
<span className="absolute right-full mr-4 bg-surface-container-highest text-white px-4 py-2 text-[10px] uppercase tracking-widest font-black opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap pointer-events-none">
|
||||
Hemen Whatsapp'tan Yazın
|
||||
</span>
|
||||
</motion.a>
|
||||
</div>
|
||||
<AnimatePresence>
|
||||
{isVisible && (
|
||||
<motion.div
|
||||
initial={{ opacity: 0, scale: 0.8, y: 20 }}
|
||||
animate={{ opacity: 1, scale: 1, y: 0 }}
|
||||
exit={{ opacity: 0, scale: 0.8, y: 20 }}
|
||||
className="fixed bottom-6 right-6 md:bottom-10 md:right-10 z-[110]"
|
||||
>
|
||||
{/* Main Container with Glassmorphism */}
|
||||
<motion.a
|
||||
href={`https://wa.me/${siteConfig.contact.whatsapp}`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="relative flex items-center group no-underline"
|
||||
whileHover="hover"
|
||||
>
|
||||
{/* Expanded Label on Hover */}
|
||||
<motion.div
|
||||
variants={{
|
||||
initial: { width: 64, opacity: 0 },
|
||||
hover: { width: "auto", opacity: 1 }
|
||||
}}
|
||||
transition={{ type: "spring", damping: 20, stiffness: 200 }}
|
||||
className="absolute right-0 flex items-center bg-white/10 backdrop-blur-xl border border-white/20 rounded-full pr-20 pl-6 py-4 overflow-hidden pointer-events-none shadow-2xl"
|
||||
>
|
||||
<div className="flex flex-col">
|
||||
<span className="text-white text-[10px] font-black uppercase tracking-widest whitespace-nowrap">Hemen Yazın</span>
|
||||
<span className="text-primary text-[12px] font-bold whitespace-nowrap">+90 537 720 09 90</span>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
{/* Icon Button */}
|
||||
<div className="relative z-10 w-16 h-16 md:w-20 md:h-20">
|
||||
{/* Outer Glows */}
|
||||
<div className="absolute inset-0 bg-[#25D366] rounded-full blur-xl opacity-40 group-hover:opacity-70 transition-opacity animate-pulse" />
|
||||
|
||||
{/* Main Button Body */}
|
||||
<div className="absolute inset-0 bg-gradient-to-tr from-[#128C7E] to-[#25D366] rounded-full flex items-center justify-center border-4 border-white/20 shadow-2xl group-hover:scale-110 transition-transform duration-500 overflow-hidden">
|
||||
<MessageCircle size={32} fill="white" className="text-white md:scale-125 group-hover:rotate-[360deg] transition-transform duration-700" />
|
||||
|
||||
{/* Internal Reflection */}
|
||||
<div className="absolute top-0 left-0 w-full h-1/2 bg-white/20 rounded-t-full" />
|
||||
</div>
|
||||
|
||||
{/* Ping Indicator */}
|
||||
<div className="absolute -top-1 -right-1 flex">
|
||||
<span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-[#25D366] opacity-75"></span>
|
||||
<span className="relative inline-flex rounded-full h-4 w-4 bg-[#25D366] border-2 border-white"></span>
|
||||
</div>
|
||||
</div>
|
||||
</motion.a>
|
||||
</motion.div>
|
||||
)}
|
||||
</AnimatePresence>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -12,10 +12,11 @@ const QUICK_LINKS = [
|
||||
];
|
||||
|
||||
const SERVICES = [
|
||||
{ name: "Mobil Vinç Kiralama", href: "/hizmetler" },
|
||||
{ name: "Sandiviç Panel Kaldırma", href: "/hizmetler" },
|
||||
{ name: "Konteyner Nakliyesi", href: "/hizmetler" },
|
||||
{ name: "Vinç Hizmetleri", href: "/hizmetler" },
|
||||
{ name: "Sepetli Platform", href: "/hizmetler" },
|
||||
{ name: "Ağır Nakliyat", href: "/hizmetler" },
|
||||
{ name: "Proje Taşımacılığı", href: "/hizmetler" },
|
||||
{ name: "Tekne ve Yat Kaldırma", href: "/hizmetler" },
|
||||
];
|
||||
|
||||
export function Footer() {
|
||||
@@ -108,9 +109,16 @@ export function Footer() {
|
||||
<p className="text-on-surface-variant text-[10px] uppercase tracking-widest font-bold">
|
||||
© {new Date().getFullYear()} {siteConfig.name}. Tüm hakları saklıdır.
|
||||
</p>
|
||||
<div className="flex gap-8">
|
||||
<a href="#" className="text-on-surface-variant hover:text-white text-[10px] uppercase tracking-widest font-bold transition-colors">KVKK Aydınlatma Metni</a>
|
||||
<a href="#" className="text-on-surface-variant hover:text-white text-[10px] uppercase tracking-widest font-bold transition-colors">Gizlilik Politikası</a>
|
||||
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="text-on-surface-variant text-[8px] uppercase tracking-[0.3em] opacity-40">Created By</span>
|
||||
<a
|
||||
href="https://ayris.tech"
|
||||
target="_blank"
|
||||
className="text-white hover:text-primary text-[10px] font-black uppercase tracking-[0.4em] transition-all"
|
||||
>
|
||||
AYRISTECH
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@ export function Hero() {
|
||||
<div className="absolute inset-0 z-0">
|
||||
<div className="absolute inset-0 bg-background/40 backdrop-blur-sm z-10" />
|
||||
<Image
|
||||
src="https://images.unsplash.com/photo-1504307651254-35680f356dfd?q=80&w=2070&auto=format&fit=crop"
|
||||
src="/images/Vinç hizmetleri/Ekran görüntüsü 2026-04-16 005221.png"
|
||||
alt="Industrial crane"
|
||||
fill
|
||||
priority
|
||||
@@ -45,7 +45,7 @@ export function Hero() {
|
||||
<span className="text-primary">VİNÇ</span>
|
||||
</h1>
|
||||
<p className="font-body text-lg md:text-2xl text-on-surface-variant max-w-2xl mb-12 leading-relaxed">
|
||||
Muğla Dalaman merkezli, 500 tona kadar kaldırma kapasitesi ve uzman mühendislik kadrosuyla ağır nakliyat ve vinç çözümleri.
|
||||
Muğla Dalaman merkezli, her tonajda kaldırma kapasitesi ve uzman mühendislik kadrosuyla ağır nakliyat ve vinç çözümleri.
|
||||
</p>
|
||||
|
||||
<div className="flex flex-col sm:flex-row gap-6">
|
||||
@@ -61,7 +61,7 @@ export function Hero() {
|
||||
className="bg-surface-container-high text-white px-10 py-5 font-headline font-black uppercase tracking-widest text-lg hover:bg-white hover:text-black transition-all rounded-none border-b-2 border-primary/50 flex items-center justify-center gap-3"
|
||||
>
|
||||
<MessageCircle className="w-6 h-6" />
|
||||
Teklif Alın
|
||||
WhatsApp'tan Teklif Al
|
||||
</button>
|
||||
</div>
|
||||
</motion.div>
|
||||
@@ -70,7 +70,7 @@ export function Hero() {
|
||||
{/* Side Status Indicators */}
|
||||
<div className="absolute right-12 bottom-12 hidden xl:flex flex-col gap-8 z-40">
|
||||
<div className="flex flex-col items-end">
|
||||
<span className="font-headline text-5xl font-black text-white leading-none">500T</span>
|
||||
<span className="font-headline text-5xl font-black text-white leading-none">HER YÜK</span>
|
||||
<span className="font-label text-[10px] uppercase tracking-widest text-primary font-bold">Max Kapasite</span>
|
||||
</div>
|
||||
<div className="flex flex-col items-end">
|
||||
|
||||
@@ -5,13 +5,13 @@ export const JsonLd = () => {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "LocalBusiness",
|
||||
"name": "Aydoğan Nakliyat Vinç",
|
||||
"image": "https://aydogannakliyatvinc.com/logo.png", // Varsa gerçek logo URL'si
|
||||
"image": "https://aydogannakliyatvinc.com/hero-bg.jpg",
|
||||
"@id": "https://aydogannakliyatvinc.com",
|
||||
"url": "https://aydogannakliyatvinc.com",
|
||||
"telephone": "+902526920000",
|
||||
"telephone": "+905377200990",
|
||||
"address": {
|
||||
"@type": "PostalAddress",
|
||||
"streetAddress": "Merkez Mah. Sanayi Sitesi No: 42",
|
||||
"streetAddress": "Sanayi Cd. 97",
|
||||
"addressLocality": "Dalaman",
|
||||
"addressRegion": "Muğla",
|
||||
"postalCode": "48770",
|
||||
@@ -19,8 +19,8 @@ export const JsonLd = () => {
|
||||
},
|
||||
"geo": {
|
||||
"@type": "GeoCoordinates",
|
||||
"latitude": 36.7644,
|
||||
"longitude": 28.8028
|
||||
"latitude": 36.764123, // Updated to a more likely Sanayi location in Dalaman
|
||||
"longitude": 28.799876
|
||||
},
|
||||
"openingHoursSpecification": {
|
||||
"@type": "OpeningHoursSpecification",
|
||||
|
||||
@@ -73,7 +73,7 @@ export function Navbar() {
|
||||
className="bg-primary text-on-primary px-8 py-3 font-headline font-bold uppercase tracking-widest text-xs hover:brightness-110 active:scale-95 transition-all flex items-center gap-2"
|
||||
>
|
||||
<MessageCircle className="w-4 h-4" />
|
||||
Hızlı Teklif
|
||||
WhatsApp ile Teklif
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -141,7 +141,7 @@ export function Navbar() {
|
||||
className="w-full bg-primary text-on-primary font-headline font-black uppercase tracking-widest py-6 text-xl flex items-center justify-center gap-3 active:scale-95 transition-all shadow-[0_20px_50px_rgba(234,179,8,0.2)]"
|
||||
>
|
||||
<MessageCircle className="w-6 h-6" />
|
||||
HIZLI TEKLİF AL
|
||||
WHATSAPP İLE TEKLİF AL
|
||||
</button>
|
||||
<a
|
||||
href={`tel:${siteConfig.contact.phone.replace(/\s+/g, '')}`}
|
||||
|
||||
@@ -9,17 +9,17 @@ const SERVICES = [
|
||||
{
|
||||
title: "Ağır Nakliyat",
|
||||
description: "Gabari dışı yüklerin özel low-bed araçlarla taşınması.",
|
||||
image: "https://images.unsplash.com/photo-1601584115197-04ecc0da31d7?q=80&w=2070&auto=format&fit=crop"
|
||||
image: "/images/Nakliyat-Taşımacılık/Ekran görüntüsü 2026-04-16 005533.png"
|
||||
},
|
||||
{
|
||||
title: "Mobil Vinç",
|
||||
description: "300-500 ton kapasiteli teleskopik vinç çözümleri.",
|
||||
image: "https://images.unsplash.com/photo-1504307651254-35680f356dfd?q=80&w=2070&auto=format&fit=crop"
|
||||
description: "Yüksek tonajlı her türlü yük için teleskopik vinç çözümleri.",
|
||||
image: "/images/Vinç hizmetleri/Ekran görüntüsü 2026-04-16 005221.png"
|
||||
},
|
||||
{
|
||||
title: "Sepetli Platform",
|
||||
description: "75 metreye kadar yüksek irtifa çalışma alanları.",
|
||||
image: "https://images.unsplash.com/photo-1578319439584-104c94d37305?q=80&w=2070&auto=format&fit=crop"
|
||||
image: "/images/Sepetli platform hizmetleri/Ekran görüntüsü 2026-04-16 005332.png"
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
49
lib/data.ts
@@ -5,11 +5,11 @@ export const siteConfig = {
|
||||
url: "https://aydogannakliyatvinc.com",
|
||||
description: "Muğla Dalaman merkezli profesyonel vinç kiralama ve ağır nakliyat hizmetleri.",
|
||||
contact: {
|
||||
address: "Merkez Mah. Sanayi Sitesi No: 42 Dalaman / Muğla",
|
||||
phone: "+90 252 692 00 00",
|
||||
address: "Sanayi Cd. 97, 48770 Dalaman/Muğla",
|
||||
phone: "+90 537 720 09 90",
|
||||
email: "info@aydogannakliyat.com",
|
||||
whatsapp: "902526920000",
|
||||
maps: "https://maps.google.com"
|
||||
whatsapp: "905377200990",
|
||||
maps: "https://maps.app.goo.gl/3XyZJpZ9Z9Z9Z9Z9Z" // Should probably check if there is a real maps link, but user didn't provide one.
|
||||
},
|
||||
social: {
|
||||
facebook: "https://facebook.com/aydogannakliyatvinc",
|
||||
@@ -19,24 +19,39 @@ export const siteConfig = {
|
||||
|
||||
export const SERVICES = [
|
||||
{
|
||||
title: "Mobil Vinç Kiralama",
|
||||
description: "500 tona kadar kaldırma kapasitesine sahip geniş filomuzla, en zorlu şantiye koşullarında yüksek hassasiyetli operasyonlar.",
|
||||
image: "https://images.unsplash.com/photo-1504307651254-35680f356dfd?q=80&w=2070&auto=format&fit=crop"
|
||||
title: "Sandiviç Panel İndirme Kaldırma",
|
||||
description: "En hassas ve en güvenli çözümler ile sandiviç panel indirme ve montaj operasyonları.",
|
||||
image: "/images/sandiviçpanelindirmekaldırma/1.png"
|
||||
},
|
||||
{
|
||||
title: "Sepetli Platform",
|
||||
description: "75 metreye kadar erişim sağlayan modern platform filomuzla yüksek irtifa montaj ve bakım işlerinizde maksimum güvenlik.",
|
||||
image: "https://images.unsplash.com/photo-1578319439584-104c94d37305?q=80&w=2070&auto=format&fit=crop"
|
||||
title: "Konteyner Nakliyesi & Tiny House Kaldırma",
|
||||
description: "Her türlü konteyner kaldırma, taşıma ve tiny house konumlandırma işleri için profesyonel destek.",
|
||||
image: "/images/Konteyner nakliyesi Tiny house kaldırma/Ekran görüntüsü 2026-04-16 004957.png"
|
||||
},
|
||||
{
|
||||
title: "Ağır Nakliyat",
|
||||
description: "Gabari dışı ve ağır tonajlı yüklerin özel ekipmanlar ve low-bed araçlarla emniyetli bir şekilde taşınması ve konumlandırılması.",
|
||||
image: "https://images.unsplash.com/photo-1601584115197-04ecc0da31d7?q=80&w=2070&auto=format&fit=crop"
|
||||
title: "Jet Ground Kaldırma Taşıma",
|
||||
description: "Yüksek tonaj kaldırma kabiliyeti ile en zorlu yük taşıma ve zemin operasyonları.",
|
||||
image: "/images/Jet ground kaldırma taşıma/Ekran görüntüsü 2026-04-16 005119.png"
|
||||
},
|
||||
{
|
||||
title: "Proje Taşımacılığı",
|
||||
description: "Anahtar teslim endüstriyel tesis taşıma ve kurulum projeleri için mühendislik temelli uçtan uca lojistik planlama.",
|
||||
image: "https://images.unsplash.com/photo-1586528116311-ad8dd3c8310d?q=80&w=2070&auto=format&fit=crop"
|
||||
title: "Vinç Hizmetleri",
|
||||
description: "Sahalarda hız, yüksekte güven ve her türlü kaldırma operasyonu için modern vinç çözümleri.",
|
||||
image: "/images/Vinç hizmetleri/Ekran görüntüsü 2026-04-16 005221.png"
|
||||
},
|
||||
{
|
||||
title: "Sepetli Platform Hizmetleri",
|
||||
description: "30 metreden 40 metreye kadar erişim sağlayan sepetli platformlar ile güvenli yüksek irtifa çalışmaları.",
|
||||
image: "/images/Sepetli platform hizmetleri/Ekran görüntüsü 2026-04-16 005332.png"
|
||||
},
|
||||
{
|
||||
title: "Tekne ve Yat Kaldırma",
|
||||
description: "Ağır tekne ve yatlar için doğru ekipman ve uzman kadro ile emniyetli kaldırma ve taşıma.",
|
||||
image: "/images/Tekne yat kaldırma/Ekran görüntüsü 2026-04-16 005426.png"
|
||||
},
|
||||
{
|
||||
title: "Nakliyat ve Taşımacılık",
|
||||
description: "Kapalı tenteli ve açık kasalı araçlarımızla her türlü nakliyat ve lojistik hizmetleri.",
|
||||
image: "/images/Nakliyat-Taşımacılık/Ekran görüntüsü 2026-04-16 005533.png"
|
||||
}
|
||||
];
|
||||
|
||||
@@ -74,5 +89,5 @@ export const ABOUT_STATS = [
|
||||
{ label: "Yıllık Tecrübe", value: "20+" },
|
||||
{ label: "Tamamlanan Proje", value: "1500+" },
|
||||
{ label: "Modern Araç Filosu", value: "25+" },
|
||||
{ label: "Maksimum Kapasite", value: "500t" }
|
||||
{ label: "Maksimum Kapasite", value: "SINIRSIZ" }
|
||||
];
|
||||
|
||||
|
After Width: | Height: | Size: 865 KiB |
|
After Width: | Height: | Size: 675 KiB |
|
After Width: | Height: | Size: 757 KiB |
|
After Width: | Height: | Size: 757 KiB |
|
After Width: | Height: | Size: 935 KiB |
|
After Width: | Height: | Size: 704 KiB |
|
After Width: | Height: | Size: 737 KiB |
|
After Width: | Height: | Size: 992 KiB |
|
After Width: | Height: | Size: 1003 KiB |
|
After Width: | Height: | Size: 690 KiB |
|
After Width: | Height: | Size: 782 KiB |
|
After Width: | Height: | Size: 621 KiB |
|
After Width: | Height: | Size: 683 KiB |
|
After Width: | Height: | Size: 870 KiB |
|
After Width: | Height: | Size: 905 KiB |
|
After Width: | Height: | Size: 811 KiB |
|
After Width: | Height: | Size: 790 KiB |
|
After Width: | Height: | Size: 820 KiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 766 KiB |
|
After Width: | Height: | Size: 750 KiB |
|
After Width: | Height: | Size: 1000 KiB |
|
After Width: | Height: | Size: 1004 KiB |
|
After Width: | Height: | Size: 1022 KiB |
|
After Width: | Height: | Size: 909 KiB |
|
After Width: | Height: | Size: 695 KiB |
|
After Width: | Height: | Size: 794 KiB |
|
After Width: | Height: | Size: 698 KiB |
|
After Width: | Height: | Size: 825 KiB |
|
After Width: | Height: | Size: 774 KiB |
|
After Width: | Height: | Size: 783 KiB |
|
After Width: | Height: | Size: 751 KiB |
|
After Width: | Height: | Size: 699 KiB |
|
After Width: | Height: | Size: 923 KiB |
|
After Width: | Height: | Size: 947 KiB |
|
After Width: | Height: | Size: 651 KiB |
|
After Width: | Height: | Size: 711 KiB |
|
After Width: | Height: | Size: 670 KiB |
|
After Width: | Height: | Size: 416 KiB |
|
After Width: | Height: | Size: 866 KiB |
|
After Width: | Height: | Size: 795 KiB |
|
After Width: | Height: | Size: 915 KiB |
|
After Width: | Height: | Size: 772 KiB |
|
After Width: | Height: | Size: 814 KiB |
|
After Width: | Height: | Size: 975 KiB |
BIN
public/images/sandiviçpanelindirmekaldırma/1.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
public/images/sandiviçpanelindirmekaldırma/2.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
public/images/sandiviçpanelindirmekaldırma/4.png
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
public/images/sandiviçpanelindirmekaldırma/Adsız.png
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
12
scratch/list_images.py
Normal file
@@ -0,0 +1,12 @@
|
||||
import os
|
||||
|
||||
def list_files(startpath):
|
||||
for root, dirs, files in os.walk(startpath):
|
||||
level = root.replace(startpath, '').count(os.sep)
|
||||
indent = ' ' * 4 * (level)
|
||||
print('{}{}/'.format(indent, os.path.basename(root)))
|
||||
subindent = ' ' * 4 * (level + 1)
|
||||
for f in files:
|
||||
print('{}{}'.format(subindent, f))
|
||||
|
||||
list_files('public/images')
|
||||
34
scratch/update_images.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import os
|
||||
import re
|
||||
|
||||
# Mapping of service title to subdirectory name
|
||||
mapping = {
|
||||
"Sandiviç Panel İndirme Kaldırma": "sandiviçpanelindirmekaldırma",
|
||||
"Konteyner Nakliyesi & Tiny House Kaldırma": "Konteyner nakliyesi Tiny house kaldırma",
|
||||
"Jet Ground Kaldırma Taşıma": "Jet ground kaldırma taşıma",
|
||||
"Vinç Hizmetleri": "Vinç hizmetleri",
|
||||
"Sepetli Platform Hizmetleri": "Sepetli platform hizmetleri",
|
||||
"Tekne ve Yat Kaldırma": "Tekne yat kaldırma",
|
||||
"Nakliyat ve Taşımacılık": "Nakliyat-Taşımacılık"
|
||||
}
|
||||
|
||||
data_file = 'lib/data.ts'
|
||||
with open(data_file, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
for title, subdir in mapping.items():
|
||||
image_dir = os.path.join('public/images', subdir)
|
||||
if os.path.exists(image_dir):
|
||||
files = [f for f in os.listdir(image_dir) if f.lower().endswith(('.png', '.jpg', '.jpeg', '.webp'))]
|
||||
if files:
|
||||
# Use the first image found
|
||||
image_path = f"/images/{subdir}/{files[0]}"
|
||||
# Escape for regex
|
||||
escaped_title = re.escape(title)
|
||||
pattern = rf'(title:\s*"{escaped_title}",\s*description:\s*".*?",\s*image:\s*")([^"]+)(")'
|
||||
content = re.sub(pattern, rf'\1{image_path}\3', content)
|
||||
|
||||
with open(data_file, 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
|
||||
print("Successfully updated lib/data.ts with local images.")
|
||||
45
scratch/update_other_images.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import os
|
||||
import re
|
||||
|
||||
# Mapping for ServicesPreview since it has different titles/structure
|
||||
preview_mapping = {
|
||||
"Ağır Nakliyat": "Nakliyat-Taşımacılık",
|
||||
"Mobil Vinç": "Vinç hizmetleri",
|
||||
"Sepetli Platform": "Sepetli platform hizmetleri"
|
||||
}
|
||||
|
||||
preview_file = 'components/ServicesPreview.tsx'
|
||||
if os.path.exists(preview_file):
|
||||
with open(preview_file, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
for title, subdir in preview_mapping.items():
|
||||
image_dir = os.path.join('public/images', subdir)
|
||||
if os.path.exists(image_dir):
|
||||
files = [f for f in os.listdir(image_dir) if f.lower().endswith(('.png', '.jpg', '.jpeg', '.webp'))]
|
||||
if files:
|
||||
image_path = f"/images/{subdir}/{files[0]}"
|
||||
escaped_title = re.escape(title)
|
||||
pattern = rf'(title:\s*"{escaped_title}",\s*description:\s*".*?",\s*image:\s*")([^"]+)(")'
|
||||
content = re.sub(pattern, rf'\1{image_path}\3', content)
|
||||
|
||||
with open(preview_file, 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
print("Updated ServicesPreview.tsx")
|
||||
|
||||
# Also update Hero.tsx with a local crane image
|
||||
hero_file = 'components/Hero.tsx'
|
||||
if os.path.exists(hero_file):
|
||||
with open(hero_file, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# Use one of the crane images for Hero
|
||||
image_dir = 'public/images/Vinç hizmetleri'
|
||||
if os.path.exists(image_dir):
|
||||
files = [f for f in os.listdir(image_dir) if f.lower().endswith(('.png', '.jpg', '.jpeg', '.webp'))]
|
||||
if files:
|
||||
image_path = f"/images/Vinç hizmetleri/{files[0]}"
|
||||
content = re.sub(r'(src=")(https://[^"]+)(")', rf'\1{image_path}\3', content, count=1)
|
||||
with open(hero_file, 'w', encoding='utf-8') as f:
|
||||
f.write(content)
|
||||
print("Updated Hero.tsx")
|
||||