Merge version_3 into main #5

Merged
bender merged 3 commits from version_3 into main 2026-03-05 00:14:12 +00:00
3 changed files with 229 additions and 59 deletions

View File

@@ -16,6 +16,19 @@ export default function RootLayout({
}) {
return (
<html lang="en">
<head>
<script
dangerouslySetInnerHTML={{
__html: `
(function() {
const savedLang = localStorage.getItem('site-language') || 'en';
window.__siteLanguage = savedLang;
document.documentElement.lang = savedLang;
})();
`,
}}
/>
</head>
<body className={dmSans.variable}>
{children}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,93 @@
"use client";
import React from "react";
import { Globe } from "lucide-react";
interface LanguageToggleProps {
currentLanguage: 'en' | 'tr';
onLanguageChange: (lang: 'en' | 'tr') => void;
isTransitioning: boolean;
}
export default function LanguageToggle({
currentLanguage,
onLanguageChange,
isTransitioning,
}: LanguageToggleProps) {
return (
<div className="fixed top-6 right-6 z-50 md:top-8 md:right-8">
{/* Glassmorphism Background */}
<div className="absolute inset-0 bg-gradient-to-br from-[#d4af37] to-[#3e2723] opacity-70 rounded-full blur-xl"></div>
{/* Premium Glass Button Container */}
<div className="relative px-4 py-3 rounded-full backdrop-blur-2xl bg-white/10 border border-white/20 shadow-2xl hover:shadow-[0_0_40px_rgba(212,175,55,0.5)] transition-all duration-300 hover:border-[#d4af37]/50">
{/* Toggle Content */}
<div className="flex items-center gap-3">
{/* Language Icon */}
<Globe className="w-5 h-5 text-[#d4af37] animate-pulse" />
{/* Button Container with Smooth Sliding Animation */}
<div className="flex items-center gap-2 bg-white/5 rounded-full p-1 border border-white/10">
{/* TR Button */}
<button
onClick={() => onLanguageChange('tr')}
className={`px-3 py-1.5 rounded-full font-semibold text-sm transition-all duration-300 ${
currentLanguage === 'tr'
? 'bg-gradient-to-r from-[#d4af37] to-[#ffd700] text-[#3e2723] shadow-lg shadow-[#d4af37]/50 scale-105'
: 'text-white/60 hover:text-white/80 hover:bg-white/5'
}`}
disabled={isTransitioning}
aria-label="Switch to Turkish"
>
TR
</button>
{/* EN Button */}
<button
onClick={() => onLanguageChange('en')}
className={`px-3 py-1.5 rounded-full font-semibold text-sm transition-all duration-300 ${
currentLanguage === 'en'
? 'bg-gradient-to-r from-[#d4af37] to-[#ffd700] text-[#3e2723] shadow-lg shadow-[#d4af37]/50 scale-105'
: 'text-white/60 hover:text-white/80 hover:bg-white/5'
}`}
disabled={isTransitioning}
aria-label="Switch to English"
>
EN
</button>
</div>
</div>
{/* Hover Glow Effect */}
<div className="absolute inset-0 rounded-full bg-gradient-to-br from-[#d4af37]/0 via-[#d4af37]/0 to-[#ffd700]/0 opacity-0 group-hover:opacity-100 transition-opacity duration-300 blur-xl pointer-events-none"></div>
</div>
{/* Ambient Glow Background */}
<style jsx>{`
@keyframes glow-pulse {
0%, 100% {
box-shadow: 0 0 20px rgba(212, 175, 55, 0.3);
}
50% {
box-shadow: 0 0 40px rgba(212, 175, 55, 0.6);
}
}
@keyframes slide-in-button {
from {
transform: translateX(20px);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}
.animate-slide-in {
animation: slide-in-button 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
`}</style>
</div>
);
}