Font Fix
This commit is contained in:
@@ -8,19 +8,19 @@
|
||||
--background: #050B14;
|
||||
--foreground: #E2E8F0;
|
||||
|
||||
--zsl-bg: #050B14;
|
||||
--zsl-bg: #0A192F;
|
||||
--zsl-text: #E2E8F0;
|
||||
--zsl-primary: #00D4FF;
|
||||
--zsl-accent: #FFAA00;
|
||||
--zsl-card: #0F172A;
|
||||
--zsl-muted: #94A3B8;
|
||||
--zsl-card: #112240;
|
||||
--zsl-muted: #8892b0;
|
||||
}
|
||||
|
||||
@theme inline {
|
||||
--color-background: var(--background);
|
||||
--color-foreground: var(--foreground);
|
||||
--font-sans: var(--font-geist-sans);
|
||||
--font-mono: var(--font-geist-mono);
|
||||
--font-sans: var(--font-inter);
|
||||
--font-mono: var(--font-rajdhani);
|
||||
|
||||
--color-zsl-bg: var(--zsl-bg);
|
||||
--color-zsl-text: var(--zsl-text);
|
||||
@@ -29,9 +29,11 @@
|
||||
--color-zsl-card: var(--zsl-card);
|
||||
--color-zsl-muted: var(--zsl-muted);
|
||||
|
||||
--animate-scroll: scroll 40s linear infinite;
|
||||
--animate-scroll: scroll 60s linear infinite;
|
||||
--animate-pulse-slow: pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||
--animate-grid-move: grid-move 20s linear infinite;
|
||||
--animate-glow: glow 2s ease-in-out infinite alternate;
|
||||
--animate-float: float 6s ease-in-out infinite;
|
||||
|
||||
@keyframes scroll {
|
||||
0% { transform: translateX(0); }
|
||||
@@ -40,7 +42,17 @@
|
||||
|
||||
@keyframes grid-move {
|
||||
0% { background-position: 0 0; }
|
||||
100% { background-position: 50px 50px; }
|
||||
100% { background-position: 40px 40px; }
|
||||
}
|
||||
|
||||
@keyframes glow {
|
||||
0% { box-shadow: 0 0 5px #00D4FF; }
|
||||
100% { box-shadow: 0 0 20px #00D4FF, 0 0 10px #00D4FF; }
|
||||
}
|
||||
|
||||
@keyframes float {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-20px); }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +65,7 @@ body {
|
||||
)
|
||||
rgb(var(--background-start-rgb));
|
||||
overflow-x: hidden;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-family: var(--font-sans);
|
||||
}
|
||||
|
||||
/* Custom Scrollbar */
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import type { Metadata, Viewport } from "next";
|
||||
import { Inter, Orbitron } from "next/font/google";
|
||||
import { Inter, Rajdhani } from "next/font/google";
|
||||
import { Analytics } from '@vercel/analytics/next';
|
||||
import { LocaleProvider } from '@/context/LocaleContext';
|
||||
import React from 'react';
|
||||
import "./globals.css";
|
||||
|
||||
const inter = Inter({ subsets: ["latin"], variable: "--font-inter" });
|
||||
const orbitron = Orbitron({ subsets: ["latin"], variable: "--font-orbitron" });
|
||||
const inter = Inter({ subsets: ["latin", "latin-ext"], variable: "--font-inter" });
|
||||
const rajdhani = Rajdhani({ subsets: ["latin", "latin-ext"], variable: "--font-rajdhani", weight: ["300", "400", "500", "600", "700"] });
|
||||
|
||||
export const viewport: Viewport = {
|
||||
width: 'device-width',
|
||||
@@ -92,7 +92,7 @@ export default function RootLayout({
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
|
||||
</head>
|
||||
<body className={`${inter.variable} ${orbitron.variable} font-sans bg-zsl-bg text-zsl-text`}>
|
||||
<body className={`${inter.variable} ${rajdhani.variable} font-sans bg-zsl-bg text-zsl-text`} suppressHydrationWarning>
|
||||
<LocaleProvider>
|
||||
<a href="#main-content" className="skip-link">
|
||||
Ana i\u00e7eri\u011fe atla
|
||||
|
||||
@@ -15,7 +15,6 @@ import { PartnerLogos } from '@/components/PartnerLogos';
|
||||
import { ScrollAnimation } from '@/components/ScrollAnimation';
|
||||
import { CookieBanner } from '@/components/CookieBanner';
|
||||
import { ProjectModal } from '@/components/ProjectModal';
|
||||
import { LanguageSwitcher } from '@/components/LanguageSwitcher';
|
||||
import { NavPage } from '@/types';
|
||||
|
||||
// Social Links
|
||||
@@ -200,38 +199,6 @@ export default function Home() {
|
||||
color: "accent",
|
||||
desc: "Karmaşık sistem ağlarını ve sunucu yapılarını yöneten mimar.",
|
||||
stats: { network: 98, devops: 94, latency: 1 }
|
||||
},
|
||||
{
|
||||
name: "Fatma Şahiner",
|
||||
handle: "ALGORITHM",
|
||||
role: "Software Developer",
|
||||
color: "primary",
|
||||
desc: "Temiz kod prensipleriyle çalışan güçlü algoritma geliştiricisi.",
|
||||
stats: { java: 90, backend: 95, bugs: 0 }
|
||||
},
|
||||
{
|
||||
name: "Bedirhan Demirhan",
|
||||
handle: "FRONT_LINE",
|
||||
role: "Web Developer",
|
||||
color: "accent",
|
||||
desc: "Modern web teknolojileriyle dinamik arayüzleri inşa eden uzman.",
|
||||
stats: { react: 95, css: 100, speed: 90 }
|
||||
},
|
||||
{
|
||||
name: "Murat Dursun",
|
||||
handle: "PIXEL_FLOW",
|
||||
role: "Web Developer",
|
||||
color: "primary",
|
||||
desc: "Kullanıcı deneyimini kusursuz koda döken web geliştirici.",
|
||||
stats: { ux: 95, code: 92, coffee: 80 }
|
||||
},
|
||||
{
|
||||
name: "Mustafa Çoban",
|
||||
handle: "NET_DEFENDER",
|
||||
role: "Cyber Security Expert",
|
||||
color: "accent",
|
||||
desc: "Ağ güvenliği ve sızma testlerinde uzmanlaşmış siber güvenlik kalkanı.",
|
||||
stats: { defense: 99, pentest: 98, firewall: 100 }
|
||||
}
|
||||
];
|
||||
|
||||
@@ -897,28 +864,26 @@ export default function Home() {
|
||||
))}
|
||||
</div>
|
||||
|
||||
{/* Language Switcher */}
|
||||
<div className="hidden md:block">
|
||||
<LanguageSwitcher />
|
||||
</div>
|
||||
|
||||
{/* Mobile Menu Button */}
|
||||
<div className="md:hidden z-50">
|
||||
<button onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)} className="text-white p-2">
|
||||
{isMobileMenuOpen ? (
|
||||
<svg className="w-8 h-8 text-zsl-primary" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" /></svg>
|
||||
) : (
|
||||
<svg className="w-8 h-8" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 6h16M4 12h16M4 18h16" /></svg>
|
||||
)}
|
||||
</button>
|
||||
<div className="md:hidden flex items-center">
|
||||
<button
|
||||
onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}
|
||||
className="text-white p-2"
|
||||
>
|
||||
{isMobileMenuOpen ? (
|
||||
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" /></svg>
|
||||
) : (
|
||||
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 6h16M4 12h16M4 18h16" /></svg>
|
||||
)}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Mobile Menu Overlay */}
|
||||
{/* Mobile Menu */}
|
||||
{isMobileMenuOpen && (
|
||||
<div className="md:hidden fixed inset-0 bg-zsl-bg/95 backdrop-blur-xl z-40 flex flex-col items-center justify-center space-y-8 animate-in slide-in-from-top-10">
|
||||
{[
|
||||
<div className="md:hidden bg-zsl-bg/95 backdrop-blur-xl border-b border-white/10 absolute w-full left-0 top-24 py-4 px-4 flex flex-col space-y-2">
|
||||
{[
|
||||
{ page: NavPage.HOME, label: 'ANA SAYFA' },
|
||||
{ page: NavPage.SERVICES, label: 'ÇÖZÜMLER' },
|
||||
{ page: NavPage.PROJECTS, label: 'LAB SONUÇLARI' },
|
||||
@@ -926,20 +891,23 @@ export default function Home() {
|
||||
{ page: NavPage.ABOUT, label: 'HİKAYE' },
|
||||
{ page: NavPage.LAB, label: 'AI LAB' },
|
||||
{ page: NavPage.CONTACT, label: 'BAĞLANTI' }
|
||||
].map((item) => (
|
||||
<button
|
||||
].map((item) => (
|
||||
<button
|
||||
key={item.page}
|
||||
onClick={() => handleNavClick(item.page)}
|
||||
className={`text-xl font-mono font-bold tracking-widest ${
|
||||
currentPage === item.page
|
||||
? 'text-zsl-primary border border-zsl-primary px-6 py-2 rounded shadow-[0_0_15px_rgba(0,212,255,0.3)]'
|
||||
: 'text-white hover:text-zsl-primary'
|
||||
onClick={() => {
|
||||
handleNavClick(item.page);
|
||||
setIsMobileMenuOpen(false);
|
||||
}}
|
||||
className={`w-full text-left px-4 py-3 rounded-lg text-sm font-mono font-bold tracking-widest transition-all ${
|
||||
currentPage === item.page
|
||||
? 'text-white bg-white/10'
|
||||
: 'text-slate-400 hover:text-white hover:bg-white/5'
|
||||
}`}
|
||||
>
|
||||
>
|
||||
{item.label}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
</nav>
|
||||
|
||||
|
||||
@@ -139,4 +139,8 @@ export const tr = {
|
||||
},
|
||||
} as const;
|
||||
|
||||
export type TranslationKeys = typeof tr;
|
||||
type RecursiveString<T> = {
|
||||
[K in keyof T]: T[K] extends object ? RecursiveString<T[K]> : string;
|
||||
};
|
||||
|
||||
export type TranslationKeys = RecursiveString<typeof tr>;
|
||||
|
||||
Reference in New Issue
Block a user