diff --git a/company/src/App.tsx b/company/src/App.tsx
index 3b32f5b5..5c5a475a 100644
--- a/company/src/App.tsx
+++ b/company/src/App.tsx
@@ -1,7 +1,6 @@
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { Toaster } from 'react-hot-toast';
-import Layout from './components/layout/Layout';
import Home from './pages/Home';
import Products from './pages/Products';
import Services from './pages/Services';
@@ -13,6 +12,7 @@ import NotFound from './pages/NotFound';
import { LanguageProvider } from './context/LanguageContext';
import { useState } from 'react';
import Demo from './pages/Demo';
+import Layout from './pages/Layout';
// Create a client
const queryClient = new QueryClient({
diff --git a/company/src/components/home/CallToAction.tsx b/company/src/components/home/CallToAction.tsx
deleted file mode 100644
index 64926d18..00000000
--- a/company/src/components/home/CallToAction.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import React from 'react';
-import { Link } from 'react-router-dom';
-import { useLanguage } from '../../context/LanguageContext';
-
-const CallToAction: React.FC = () => {
- const { t } = useLanguage();
-
- return (
-
-
-
-
- {t('common.getStarted')}
-
-
- {t('common.contact')}
-
-
- {t('common.learnMore')}
-
-
-
-
- );
-};
-
-export default CallToAction;
\ No newline at end of file
diff --git a/company/src/components/home/Features.tsx b/company/src/components/home/Features.tsx
deleted file mode 100644
index 317c30d7..00000000
--- a/company/src/components/home/Features.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import React from 'react';
-import { Zap, Users, BarChart, Calendar, BookOpen, CreditCard, MessageSquare, Phone, Shield } from 'lucide-react';
-import { useLanguage } from '../../context/LanguageContext';
-
-const Features: React.FC = () => {
- const { t } = useLanguage();
-
- const features = [
- {
- icon: ,
- title: t('features.reliable'),
- description: t('features.reliable.desc')
- },
- {
- icon: ,
- title: t('features.rapid'),
- description: t('features.rapid.desc')
- },
- {
- icon: ,
- title: t('features.expert'),
- description: t('features.expert.desc')
- },
- {
- icon: ,
- title: t('features.muhasebe'),
- description: t('features.muhasebe.desc')
- },
- {
- icon: ,
- title: t('features.iletisim'),
- description: t('features.iletisim.desc'),
- },
- {
- icon: ,
- title: t('features.mobil'),
- description: t('features.mobil.desc'),
- },
- {
- icon: ,
- title: t('features.scalable'),
- description: t('features.scalable.desc')
- },
- {
- icon: ,
- title: t('features.guvenlik'),
- description: t('features.guvenlik.desc'),
- }
- ];
-
- return (
-
-
-
-
- {t('features.title')}
-
-
- {t('features.subtitle')}
-
-
-
-
- {features.map((feature, index) => (
-
-
{feature.icon}
-
- {feature.title}
-
-
- {feature.description}
-
-
- ))}
-
-
-
- );
-};
-
-export default Features;
\ No newline at end of file
diff --git a/company/src/components/home/Hero.tsx b/company/src/components/home/Hero.tsx
deleted file mode 100644
index b74c4ab6..00000000
--- a/company/src/components/home/Hero.tsx
+++ /dev/null
@@ -1,69 +0,0 @@
-import React from 'react';
-import { ArrowRight, Code, Globe2, Cpu, Calendar, Users, Shield } from 'lucide-react';
-import { Link } from 'react-router-dom';
-import { useLanguage } from '../../context/LanguageContext';
-
-const Hero: React.FC = () => {
- const { t } = useLanguage();
-
- return (
-
-
-
-
-
-
-
- {t('hero.title')}
-
-
-
- {t('hero.subtitle')}
-
-
-
-
- {t('hero.cta.consultation')}
-
-
-
- {t('hero.cta.discover')}
-
-
-
-
-
-
-
{t('hero.service1.title')}
-
{t('hero.service1.desc')}
-
-
-
-
-
{t('hero.service2.title')}
-
{t('hero.service2.desc')}
-
-
-
-
-
{t('hero.service3.title')}
-
{t('hero.service3.desc')}
-
-
-
-
-
- );
-};
-
-export default Hero;
\ No newline at end of file
diff --git a/company/src/components/home/Solutions.tsx b/company/src/components/home/Solutions.tsx
deleted file mode 100644
index b3b184e7..00000000
--- a/company/src/components/home/Solutions.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-import React from 'react';
-import { Monitor, Smartphone, Server, Database } from 'lucide-react';
-import { useLanguage } from '../../context/LanguageContext';
-
-const Solutions: React.FC = () => {
- const { t } = useLanguage();
-
- const solutions = [
- {
- icon: ,
- title: t('solutions.web.title'),
- description: t('solutions.web.desc'),
- color: 'bg-blue-600'
- },
- {
- icon: ,
- title: t('solutions.mobile.title'),
- description: t('solutions.mobile.desc'),
- color: 'bg-purple-600'
- },
- {
- icon: ,
- title: t('solutions.custom.title'),
- description: t('solutions.custom.desc'),
- color: 'bg-green-600'
- },
- {
- icon: ,
- title: t('solutions.database.title'),
- description: t('solutions.database.desc'),
- color: 'bg-red-600'
- }
- ];
-
- return (
-
-
-
-
- {t('solutions.title')}
-
-
- {t('solutions.subtitle')}
-
-
-
-
- {solutions.map((solution, index) => (
-
-
-
{solution.icon}
-
- {solution.title}
-
-
- {solution.description}
-
-
-
- ))}
-
-
-
- );
-};
-
-export default Solutions;
\ No newline at end of file
diff --git a/company/src/components/layout/Footer.tsx b/company/src/components/layout/Footer.tsx
deleted file mode 100644
index db40cd03..00000000
--- a/company/src/components/layout/Footer.tsx
+++ /dev/null
@@ -1,156 +0,0 @@
-import React from 'react';
-import { Mail, Phone, MapPin, Facebook, Twitter, Linkedin, Instagram } from 'lucide-react';
-import Logo from './Logo';
-import { Link } from 'react-router-dom';
-import { useLanguage } from '../../context/LanguageContext';
-
-const Footer: React.FC = () => {
- const { t } = useLanguage();
- const currentYear = new Date().getFullYear();
-
- return (
-
- );
-};
-
-export default Footer;
diff --git a/company/src/components/layout/Header.tsx b/company/src/components/layout/Header.tsx
deleted file mode 100644
index bba305d7..00000000
--- a/company/src/components/layout/Header.tsx
+++ /dev/null
@@ -1,159 +0,0 @@
-import React, { useState, useEffect } from "react";
-import {
- Menu,
- X,
- Globe,
- Home,
- Info,
- Package,
- Briefcase,
- BookOpen,
- Phone,
-} from "lucide-react";
-import Logo from "./Logo";
-import { Link, useNavigate } from "react-router-dom";
-import { useLanguage } from "../../context/LanguageContext";
-
-interface HeaderProps {
- openDemoModal: () => void;
-}
-
-const Header: React.FC = ({ openDemoModal }) => {
- const [isOpen, setIsOpen] = useState(false);
- const [scrolled, setScrolled] = useState(false);
- const { language, setLanguage, t } = useLanguage();
- const navigate = useNavigate();
-
- useEffect(() => {
- const handleScroll = () => {
- const isScrolled = window.scrollY > 10;
- if (isScrolled !== scrolled) {
- setScrolled(isScrolled);
- }
- };
-
- window.addEventListener("scroll", handleScroll);
- return () => window.removeEventListener("scroll", handleScroll);
- }, [scrolled]);
-
- const toggleMenu = () => setIsOpen(!isOpen);
- const toggleLanguage = () => setLanguage(language === "en" ? "tr" : "en");
-
- const navLinks = [
- { name: t("nav.home"), path: "/", icon: Home },
- { name: t("nav.about"), path: "/about", icon: Info },
- { name: t("nav.products"), path: "/products", icon: Package },
- { name: t("nav.services"), path: "/services", icon: Briefcase },
- { name: t("nav.blog"), path: "/blog", icon: BookOpen },
- { name: t("nav.demo"), action: openDemoModal, icon: Globe },
- { name: t("nav.contact"), path: "/contact", icon: Phone },
- { name: t("nav.giris"), path: import.meta.env.VITE_KURS_URL },
- ];
-
- return (
-
-
-
-
-
-
- {/* Desktop Navigation */}
-
-
- {/* Mobile Menu Button */}
-
-
-
- {/* Mobile Navigation */}
- {isOpen && (
-
-
-
-
-
- )}
-
- );
-};
-
-export default Header;
diff --git a/company/src/components/layout/Layout.tsx b/company/src/components/layout/Layout.tsx
deleted file mode 100644
index 783b6fa0..00000000
--- a/company/src/components/layout/Layout.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React, { useEffect } from 'react';
-import { useLocation } from 'react-router-dom';
-import Header from './Header';
-import Footer from './Footer';
-
-interface LayoutProps {
- children: React.ReactNode;
- openDemoModal: () => void;
-}
-
-const Layout: React.FC = ({ children, openDemoModal }) => {
- const location = useLocation();
-
- useEffect(() => {
- window.scrollTo(0, 0);
- }, [location.pathname]);
-
- return (
-
-
-
- {children}
-
-
-
- );
-};
-
-export default Layout;
diff --git a/company/src/pages/Home.tsx b/company/src/pages/Home.tsx
index 4a32223b..01cc2cac 100644
--- a/company/src/pages/Home.tsx
+++ b/company/src/pages/Home.tsx
@@ -1,18 +1,140 @@
-import React from "react";
-import Hero from "../components/home/Hero";
-import Features from "../components/home/Features";
-import Solutions from "../components/home/Solutions";
-import CallToAction from "../components/home/CallToAction";
+import React from 'react'
+import { Link } from 'react-router-dom'
+import {
+ ArrowRight,
+ Calendar,
+ Users,
+ Shield,
+ Monitor,
+ Smartphone,
+ Server,
+ Database,
+ BarChart,
+ BookOpen,
+ CreditCard,
+ MessageSquare,
+ Phone,
+} from 'lucide-react'
+import { useLanguage } from '../context/LanguageContext'
const Home: React.FC = () => {
+ const { t } = useLanguage()
+
+ const features = [
+ { icon: , title: t('features.reliable'), description: t('features.reliable.desc') },
+ { icon: , title: t('features.rapid'), description: t('features.rapid.desc') },
+ { icon: , title: t('features.expert'), description: t('features.expert.desc') },
+ { icon: , title: t('features.muhasebe'), description: t('features.muhasebe.desc') },
+ { icon: , title: t('features.iletisim'), description: t('features.iletisim.desc') },
+ { icon: , title: t('features.mobil'), description: t('features.mobil.desc') },
+ { icon: , title: t('features.scalable'), description: t('features.scalable.desc') },
+ { icon: , title: t('features.guvenlik'), description: t('features.guvenlik.desc') },
+ ]
+
+ const solutions = [
+ { icon: , title: t('solutions.web.title'), description: t('solutions.web.desc'), color: 'bg-blue-600' },
+ { icon: , title: t('solutions.mobile.title'), description: t('solutions.mobile.desc'), color: 'bg-purple-600' },
+ { icon: , title: t('solutions.custom.title'), description: t('solutions.custom.desc'), color: 'bg-green-600' },
+ { icon: , title: t('solutions.database.title'), description: t('solutions.database.desc'), color: 'bg-red-600' },
+ ]
+
return (
-
-
-
-
-
- );
-};
-export default Home;
+ {/* Hero */}
+
+
+
+
+
+
+
{t('hero.title')}
+
{t('hero.subtitle')}
+
+
+
+ {t('hero.cta.consultation')}
+
+
+ {t('hero.cta.discover')}
+
+
+
+
+
+
+
{t('hero.service1.title')}
+
{t('hero.service1.desc')}
+
+
+
+
{t('hero.service2.title')}
+
{t('hero.service2.desc')}
+
+
+
+
{t('hero.service3.title')}
+
{t('hero.service3.desc')}
+
+
+
+
+
+
+ {/* Features */}
+
+
+
+
{t('features.title')}
+
{t('features.subtitle')}
+
+
+
+ {features.map((feature, i) => (
+
+
{feature.icon}
+
{feature.title}
+
{feature.description}
+
+ ))}
+
+
+
+
+ {/* Solutions */}
+
+
+
+
{t('solutions.title')}
+
{t('solutions.subtitle')}
+
+
+
+ {solutions.map((s, i) => (
+
+
+
{s.icon}
+
{s.title}
+
{s.description}
+
+
+ ))}
+
+
+
+
+ {/* Call to Action */}
+
+
+
{t('common.getStarted')}
+
{t('common.contact')}
+
+ {t('common.learnMore')}
+
+
+
+
+ )
+}
+
+export default Home
diff --git a/company/src/pages/Layout.tsx b/company/src/pages/Layout.tsx
new file mode 100644
index 00000000..2d6003d7
--- /dev/null
+++ b/company/src/pages/Layout.tsx
@@ -0,0 +1,415 @@
+import React, { useEffect, useState } from "react";
+import { useLocation, Link, useNavigate } from "react-router-dom";
+import {
+ Menu,
+ X,
+ Globe,
+ Home,
+ Info,
+ Package,
+ Briefcase,
+ BookOpen,
+ Phone,
+ Facebook,
+ Twitter,
+ Linkedin,
+ Instagram,
+ MapPin,
+ Mail,
+} from "lucide-react";
+import { useLanguage } from "../context/LanguageContext";
+import Logo from "./Logo";
+
+interface LayoutProps {
+ children: React.ReactNode;
+ openDemoModal: () => void;
+}
+
+const Layout: React.FC = ({ children, openDemoModal }) => {
+ const location = useLocation();
+ const { t, language, setLanguage } = useLanguage();
+ const navigate = useNavigate();
+ const [isOpen, setIsOpen] = useState(false);
+ const [scrolled, setScrolled] = useState(false);
+ const currentYear = new Date().getFullYear();
+
+ useEffect(() => {
+ window.scrollTo(0, 0);
+ }, [location.pathname]);
+
+ useEffect(() => {
+ const handleScroll = () => {
+ const isScrolled = window.scrollY > 10;
+ if (isScrolled !== scrolled) {
+ setScrolled(isScrolled);
+ }
+ };
+
+ window.addEventListener("scroll", handleScroll);
+ return () => window.removeEventListener("scroll", handleScroll);
+ }, [scrolled]);
+
+ const toggleMenu = () => setIsOpen(!isOpen);
+ const toggleLanguage = () => setLanguage(language === "en" ? "tr" : "en");
+
+ const navLinks = [
+ { name: t("nav.home"), path: "/", icon: Home },
+ { name: t("nav.about"), path: "/about", icon: Info },
+ { name: t("nav.products"), path: "/products", icon: Package },
+ { name: t("nav.services"), path: "/services", icon: Briefcase },
+ { name: t("nav.blog"), path: "/blog", icon: BookOpen },
+ { name: t("nav.demo"), action: openDemoModal, icon: Globe },
+ { name: t("nav.contact"), path: "/contact", icon: Phone },
+ { name: t("nav.giris"), path: import.meta.env.VITE_KURS_URL },
+ ];
+
+ return (
+
+ {/* HEADER */}
+
+
+
+
+
+
+ {/* Desktop Navigation */}
+
+
+ {/* Mobile Menu Button */}
+
+
+
+ {/* Mobile Navigation */}
+ {isOpen && (
+
+
+
+
+
+ )}
+
+
+
{children}
+
+
+
+ );
+};
+
+export default Layout;
diff --git a/company/src/components/layout/Logo.tsx b/company/src/pages/Logo.tsx
similarity index 100%
rename from company/src/components/layout/Logo.tsx
rename to company/src/pages/Logo.tsx
diff --git a/ui/src/components/layouts/Layouts.tsx b/ui/src/components/layouts/Layouts.tsx
index 1fd2e63b..977efa0d 100644
--- a/ui/src/components/layouts/Layouts.tsx
+++ b/ui/src/components/layouts/Layouts.tsx
@@ -13,6 +13,14 @@ import useAuth from '@/utils/hooks/useAuth'
import useDirection from '@/utils/hooks/useDirection'
import useLocale from '@/utils/hooks/useLocale'
+export type LayoutType =
+ | typeof LAYOUT_TYPE_CLASSIC
+ | typeof LAYOUT_TYPE_MODERN
+ | typeof LAYOUT_TYPE_SIMPLE
+ | typeof LAYOUT_TYPE_STACKED_SIDE
+ | typeof LAYOUT_TYPE_DECKED
+ | typeof LAYOUT_TYPE_BLANK
+
const layouts = {
[LAYOUT_TYPE_CLASSIC]: lazy(() => import('./ClassicLayout')),
[LAYOUT_TYPE_MODERN]: lazy(() => import('./ModernLayout')),
@@ -23,7 +31,7 @@ const layouts = {
}
const Layout = () => {
- const layoutType = useStoreState((state) => state.theme.layout.type)
+ const layoutType = useStoreState((state) => state.theme.layout.type) as LayoutType
const { authenticated } = useAuth()