This commit is contained in:
AyrisAI
2026-07-11 16:23:11 +03:00
parent 0a2ab83028
commit 17915cd3d5
7 changed files with 79 additions and 133 deletions
+3
View File
@@ -125,6 +125,7 @@ export default function HomeClient({ lang, dict }: { lang: string; dict: any })
alt="Moy Group Hero" alt="Moy Group Hero"
fill fill
priority priority
sizes="100vw"
className="object-cover object-center" className="object-cover object-center"
/> />
<div className="absolute inset-0 bg-gradient-to-b from-black/50 via-black/30 to-black/60" /> <div className="absolute inset-0 bg-gradient-to-b from-black/50 via-black/30 to-black/60" />
@@ -302,6 +303,7 @@ export default function HomeClient({ lang, dict }: { lang: string; dict: any })
src={venue.img} src={venue.img}
alt={venue.title} alt={venue.title}
fill fill
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 55vw, 50vw"
className="object-cover transition-transform duration-700 group-hover:scale-105" className="object-cover transition-transform duration-700 group-hover:scale-105"
/> />
<div className={`absolute inset-0 bg-gradient-to-t ${venue.color} to-transparent opacity-50`} /> <div className={`absolute inset-0 bg-gradient-to-t ${venue.color} to-transparent opacity-50`} />
@@ -392,6 +394,7 @@ export default function HomeClient({ lang, dict }: { lang: string; dict: any })
src="https://images.unsplash.com/photo-1507525428034-b723cf961d3e?auto=format&fit=crop&q=60&w=1600" src="https://images.unsplash.com/photo-1507525428034-b723cf961d3e?auto=format&fit=crop&q=60&w=1600"
alt="Moy Group CTA Background" alt="Moy Group CTA Background"
fill fill
sizes="100vw"
className="object-cover object-center" className="object-cover object-center"
/> />
</div> </div>
+1
View File
@@ -88,6 +88,7 @@ export default function GaleriClient({ lang, dict }: { lang: string; dict: any }
src={img.src} src={img.src}
alt={img.title} alt={img.title}
fill fill
sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw"
className="object-cover transition-transform duration-700 group-hover:scale-110" className="object-cover transition-transform duration-700 group-hover:scale-110"
/> />
<div className="absolute inset-0 bg-[var(--color-moy-dark)]/0 group-hover:bg-[var(--color-moy-dark)]/50 transition-all duration-300 flex flex-col items-center justify-center gap-3"> <div className="absolute inset-0 bg-[var(--color-moy-dark)]/0 group-hover:bg-[var(--color-moy-dark)]/50 transition-all duration-300 flex flex-col items-center justify-center gap-3">
+3 -1
View File
@@ -5,6 +5,7 @@ import Footer from "../components/Footer";
import { MotionProvider } from "../components/MotionProvider"; import { MotionProvider } from "../components/MotionProvider";
import "../globals.css"; import "../globals.css";
import { Locale, getDictionary } from "../dictionaries"; import { Locale, getDictionary } from "../dictionaries";
import Script from "next/script";
const cormorant = Cormorant_Garamond({ const cormorant = Cormorant_Garamond({
variable: "--font-cormorant", variable: "--font-cormorant",
@@ -59,10 +60,11 @@ export default async function RootLayout({
<html <html
lang={locale} lang={locale}
className={`${cormorant.variable} ${montserrat.variable} h-full antialiased`} className={`${cormorant.variable} ${montserrat.variable} h-full antialiased`}
data-scroll-behavior="smooth"
> >
<head> <head>
{/* VPS Panel Analytics */} {/* VPS Panel Analytics */}
<script defer src="https://panel.ayris.tech/api/analytics/script" data-domain="moygroup.com.tr"></script> <Script defer src="https://panel.ayris.tech/api/analytics/script" data-domain="moygroup.com.tr" />
<script <script
type="application/ld+json" type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
+1
View File
@@ -49,6 +49,7 @@ export function ImageCard({ src, alt, title, subtitle, badge, className }: Image
src={src} src={src}
alt={alt} alt={alt}
fill fill
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
className="object-cover transition-transform duration-700 group-hover:scale-105" className="object-cover transition-transform duration-700 group-hover:scale-105"
/> />
<div className="absolute inset-0 bg-gradient-to-t from-black/50 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-400" /> <div className="absolute inset-0 bg-gradient-to-t from-black/50 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-400" />
+24 -3
View File
@@ -1,11 +1,32 @@
import { MetadataRoute } from 'next'
import type { MetadataRoute } from 'next';
const PROTECTED = ['/admin/', '/api/'];
export default function robots(): MetadataRoute.Robots { export default function robots(): MetadataRoute.Robots {
return { return {
rules: { rules: [
{
userAgent: '*', userAgent: '*',
allow: '/', allow: '/',
disallow: PROTECTED,
}, },
// AI arama / citation botları
{ userAgent: 'OAI-SearchBot', allow: '/', disallow: PROTECTED },
{ userAgent: 'ChatGPT-User', allow: '/', disallow: PROTECTED },
{ userAgent: 'PerplexityBot', allow: '/', disallow: PROTECTED },
{ userAgent: 'Perplexity-User', allow: '/', disallow: PROTECTED },
{ userAgent: 'Claude-SearchBot', allow: '/', disallow: PROTECTED },
{ userAgent: 'Claude-User', allow: '/', disallow: PROTECTED },
// Training crawler'ları engelle
{ userAgent: 'GPTBot', disallow: '/' },
{ userAgent: 'ClaudeBot', disallow: '/' },
{ userAgent: 'Google-Extended', disallow: '/' },
{ userAgent: 'CCBot', disallow: '/' },
{ userAgent: 'Bytespider', disallow: '/' }, // ByteDance/TikTok
{ userAgent: 'Meta-ExternalAgent', disallow: '/' }, // Meta training
],
sitemap: 'https://moygroup.com.tr/sitemap.xml', sitemap: 'https://moygroup.com.tr/sitemap.xml',
} };
} }
+42 -10
View File
@@ -1,24 +1,56 @@
import { MetadataRoute } from 'next' import type { MetadataRoute } from 'next';
import { i18n } from './dictionaries' import { i18n } from './dictionaries';
import fs from 'fs';
import path from 'path';
export default function sitemap(): MetadataRoute.Sitemap { export default function sitemap(): MetadataRoute.Sitemap {
const baseUrl = 'https://moygroup.com.tr' const baseUrl = 'https://moygroup.com.tr';
// Public pages defined in the project // Dynamically scan the app/[lang] folder for pages
const pages = ['', '/kurumsal', '/galeri', '/iletisim', '/menu', '/sss'] const langDir = path.join(process.cwd(), 'app/[lang]');
let subfolders: string[] = [];
const sitemapEntries: MetadataRoute.Sitemap = [] try {
if (fs.existsSync(langDir)) {
subfolders = fs.readdirSync(langDir).filter((file) => {
const filePath = path.join(langDir, file);
if (fs.statSync(filePath).isDirectory()) {
// Only include folders that contain a page.tsx file
return fs.existsSync(path.join(filePath, 'page.tsx'));
}
return false;
});
}
} catch (error) {
console.error('Error reading directories for sitemap:', error);
}
// Base page paths: home page ('') + dynamic folders
const pages = ['', ...subfolders.map((folder) => `/${folder}`)];
const sitemapEntries: MetadataRoute.Sitemap = [];
for (const locale of i18n.locales) {
for (const page of pages) { for (const page of pages) {
// Generate language alternates for this page
const alternatesLanguages: Record<string, string> = {};
for (const locale of i18n.locales) {
alternatesLanguages[locale] = `${baseUrl}/${locale}${page}`;
}
// Add entries for all locales, providing localized alternates for each
for (const locale of i18n.locales) {
sitemapEntries.push({ sitemapEntries.push({
url: `${baseUrl}/${locale}${page}`, url: `${baseUrl}/${locale}${page}`,
lastModified: new Date(), lastModified: new Date(),
changeFrequency: page === '' ? 'weekly' : 'monthly', changeFrequency: page === '' ? 'weekly' : 'monthly',
priority: page === '' ? 1 : 0.8, priority: page === '' ? 1.0 : 0.8,
}) alternates: {
languages: alternatesLanguages,
},
});
} }
} }
return sitemapEntries return sitemapEntries;
} }
-114
View File
@@ -615,9 +615,6 @@
"cpu": [ "cpu": [
"arm" "arm"
], ],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later", "license": "LGPL-3.0-or-later",
"optional": true, "optional": true,
"os": [ "os": [
@@ -634,9 +631,6 @@
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later", "license": "LGPL-3.0-or-later",
"optional": true, "optional": true,
"os": [ "os": [
@@ -653,9 +647,6 @@
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later", "license": "LGPL-3.0-or-later",
"optional": true, "optional": true,
"os": [ "os": [
@@ -672,9 +663,6 @@
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later", "license": "LGPL-3.0-or-later",
"optional": true, "optional": true,
"os": [ "os": [
@@ -691,9 +679,6 @@
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later", "license": "LGPL-3.0-or-later",
"optional": true, "optional": true,
"os": [ "os": [
@@ -710,9 +695,6 @@
"cpu": [ "cpu": [
"x64" "x64"
], ],
"libc": [
"glibc"
],
"license": "LGPL-3.0-or-later", "license": "LGPL-3.0-or-later",
"optional": true, "optional": true,
"os": [ "os": [
@@ -729,9 +711,6 @@
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"libc": [
"musl"
],
"license": "LGPL-3.0-or-later", "license": "LGPL-3.0-or-later",
"optional": true, "optional": true,
"os": [ "os": [
@@ -748,9 +727,6 @@
"cpu": [ "cpu": [
"x64" "x64"
], ],
"libc": [
"musl"
],
"license": "LGPL-3.0-or-later", "license": "LGPL-3.0-or-later",
"optional": true, "optional": true,
"os": [ "os": [
@@ -767,9 +743,6 @@
"cpu": [ "cpu": [
"arm" "arm"
], ],
"libc": [
"glibc"
],
"license": "Apache-2.0", "license": "Apache-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -792,9 +765,6 @@
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"libc": [
"glibc"
],
"license": "Apache-2.0", "license": "Apache-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -817,9 +787,6 @@
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
"libc": [
"glibc"
],
"license": "Apache-2.0", "license": "Apache-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -842,9 +809,6 @@
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
"libc": [
"glibc"
],
"license": "Apache-2.0", "license": "Apache-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -867,9 +831,6 @@
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
"libc": [
"glibc"
],
"license": "Apache-2.0", "license": "Apache-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -892,9 +853,6 @@
"cpu": [ "cpu": [
"x64" "x64"
], ],
"libc": [
"glibc"
],
"license": "Apache-2.0", "license": "Apache-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -917,9 +875,6 @@
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"libc": [
"musl"
],
"license": "Apache-2.0", "license": "Apache-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -942,9 +897,6 @@
"cpu": [ "cpu": [
"x64" "x64"
], ],
"libc": [
"musl"
],
"license": "Apache-2.0", "license": "Apache-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1160,9 +1112,6 @@
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1179,9 +1128,6 @@
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1198,9 +1144,6 @@
"cpu": [ "cpu": [
"x64" "x64"
], ],
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1217,9 +1160,6 @@
"cpu": [ "cpu": [
"x64" "x64"
], ],
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1458,9 +1398,6 @@
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1478,9 +1415,6 @@
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1498,9 +1432,6 @@
"x64" "x64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -1518,9 +1449,6 @@
"x64" "x64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2071,9 +1999,6 @@
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2088,9 +2013,6 @@
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2105,9 +2027,6 @@
"loong64" "loong64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2122,9 +2041,6 @@
"loong64" "loong64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2139,9 +2055,6 @@
"ppc64" "ppc64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2156,9 +2069,6 @@
"riscv64" "riscv64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2173,9 +2083,6 @@
"riscv64" "riscv64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2190,9 +2097,6 @@
"s390x" "s390x"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2207,9 +2111,6 @@
"x64" "x64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -2224,9 +2125,6 @@
"x64" "x64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MIT", "license": "MIT",
"optional": true, "optional": true,
"os": [ "os": [
@@ -4899,9 +4797,6 @@
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MPL-2.0", "license": "MPL-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -4923,9 +4818,6 @@
"arm64" "arm64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MPL-2.0", "license": "MPL-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -4947,9 +4839,6 @@
"x64" "x64"
], ],
"dev": true, "dev": true,
"libc": [
"glibc"
],
"license": "MPL-2.0", "license": "MPL-2.0",
"optional": true, "optional": true,
"os": [ "os": [
@@ -4971,9 +4860,6 @@
"x64" "x64"
], ],
"dev": true, "dev": true,
"libc": [
"musl"
],
"license": "MPL-2.0", "license": "MPL-2.0",
"optional": true, "optional": true,
"os": [ "os": [