From cd26c9c36b8e84d4166109649b31fb78f5e7921e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Tue, 18 Nov 2025 21:27:17 +0300 Subject: [PATCH] =?UTF-8?q?Ana=20sayfa=20d=C3=BCzenlemesi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/views/public/Home.tsx | 221 +++++++++++++++++++++++++++-------- 1 file changed, 172 insertions(+), 49 deletions(-) diff --git a/ui/src/views/public/Home.tsx b/ui/src/views/public/Home.tsx index b292481f..5f36740b 100644 --- a/ui/src/views/public/Home.tsx +++ b/ui/src/views/public/Home.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React, { useState, useEffect } from 'react' import { Link } from 'react-router-dom' import { FaArrowRight, @@ -13,7 +13,9 @@ import { FaBookOpen, FaCreditCard, FaRegComment, - FaPhone + FaPhone, + FaChevronLeft, + FaChevronRight } from 'react-icons/fa'; import { useLocalization } from '@/utils/hooks/useLocalization' import { ROUTES_ENUM } from '@/routes/route.constant' @@ -21,6 +23,88 @@ import { Helmet } from 'react-helmet' const Home: React.FC = () => { const { translate } = useLocalization() + const [currentSlide, setCurrentSlide] = useState(0) + + const slides = [ + { + title: "Türkiye'nin Lider Dil Kursu Yazılımı", + subtitle: "Dil eğitimi kurumlarınız için özel olarak tasarlanmış, kapsamlı ve kolay kullanımlı yazılım çözümü", + services: [ + { + icon: , + title: translate('::Public.hero.service1.title'), + desc: translate('::Public.hero.service1.desc') + }, + { + icon: , + title: translate('::Public.hero.service2.title'), + desc: translate('::Public.hero.service2.desc') + }, + { + icon: , + title: translate('::Public.hero.service3.title'), + desc: translate('::Public.hero.service3.desc') + } + ] + }, + { + title: "Yeni Nesil ERP Platformu", + subtitle: "İşletmenizi dijital dönüşüme hazırlayan, entegre ve ölçeklenebilir kurumsal kaynak planlama sistemi", + services: [ + { + icon: , + title: "İş Zekası", + desc: "Gelişmiş raporlama ve analitik araçlar" + }, + { + icon: , + title: "Finans Yönetimi", + desc: "Tam entegre muhasebe ve finans modülü" + }, + { + icon: , + title: "Veri Güvenliği", + desc: "Kurumsal düzeyde veri koruma" + } + ] + }, + { + title: "Low Code Platform", + subtitle: "Kod yazmadan hızlı uygulama geliştirin, iş süreçlerinizi kolayca dijitalleştirin", + services: [ + { + icon: , + title: "Görsel Tasarım", + desc: "Sürükle-bırak ile uygulama geliştirme" + }, + { + icon: , + title: "Otomatik API", + desc: "Otomatik oluşturulan RESTful servisler" + }, + { + icon: , + title: "Çoklu Platform", + desc: "Web, mobil ve desktop uygulamalar" + } + ] + } + ] + + useEffect(() => { + const timer = setInterval(() => { + setCurrentSlide((prev) => (prev + 1) % slides.length) + }, 5000) + return () => clearInterval(timer) + }, []) + + const nextSlide = () => { + setCurrentSlide((prev) => (prev + 1) % slides.length) + } + + const prevSlide = () => { + setCurrentSlide((prev) => (prev - 1 + slides.length) % slides.length) + } const features = [ { @@ -100,8 +184,8 @@ const Home: React.FC = () => { defaultTitle="Erp Platform" > - {/* Hero */} -
+ {/* Hero Carousel */} +
{ }} >
-
-
-

- {translate('::Public.hero.title')} -

-

- {translate('::Public.hero.subtitle')} -

+ {/* Carousel Content */} +
+ {slides.map((slide, index) => ( +
+
+
+

+ {slide.title} +

+

+ {slide.subtitle} +

-
- - {translate('::Public.hero.cta.consultation')}{' '} - - - - {translate('::Public.hero.cta.discover')} - -
+
+ + {translate('::Public.hero.cta.consultation')}{' '} + + + + {translate('::Public.hero.cta.discover')} + +
-
-
- -

- {translate('::Public.hero.service1.title')} -

-

{translate('::Public.hero.service1.desc')}

-
-
- -

- {translate('::Public.hero.service2.title')} -

-

{translate('::Public.hero.service2.desc')}

-
-
- -

- {translate('::Public.hero.service3.title')} -

-

{translate('::Public.hero.service3.desc')}

+
+ {slide.services.map((service, i) => ( +
+ {service.icon} +

+ {service.title} +

+

{service.desc}

+
+ ))} +
+
-
+ ))} +
+ + {/* Navigation Buttons */} + + + + {/* Slide Indicators */} +
+ {slides.map((_, index) => ( +