Genel düzeltmeler
This commit is contained in:
parent
ef309d0e3f
commit
ddf2eac23e
7 changed files with 82 additions and 92 deletions
|
|
@ -2,7 +2,7 @@
|
|||
"App": {
|
||||
"SelfUrl": "https://kurs-dev-api.sozsoft.com",
|
||||
"ClientUrl": "https://kurs-dev.sozsoft.com",
|
||||
"CorsOrigins": "https://kurs-dev.sozsoft.com",
|
||||
"CorsOrigins": "https://sozsoft.com,https://kurs-dev.sozsoft.com",
|
||||
"RedirectAllowedUrls": "https://kurs-dev.sozsoft.com,https://kurs-dev.sozsoft.com/authentication/callback",
|
||||
"AttachmentsPath": "/etc/api/mail-queue/attachments",
|
||||
"CdnPath": "/etc/api/cdn"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"App": {
|
||||
"SelfUrl": "https://kurs-api.sozsoft.com",
|
||||
"ClientUrl": "https://kurs.sozsoft.com",
|
||||
"CorsOrigins": "https://kurs.sozsoft.com,https://demo.sozsoft.com",
|
||||
"CorsOrigins": "https://sozsoft.com,https://kurs.sozsoft.com,https://demo.sozsoft.com",
|
||||
"RedirectAllowedUrls": "https://kurs.sozsoft.com,https://kurs.sozsoft.com/authentication/callback",
|
||||
"AttachmentsPath": "/etc/api/mail-queue/attachments",
|
||||
"CdnPath": "/etc/api/cdn"
|
||||
|
|
|
|||
|
|
@ -798,7 +798,7 @@ const translations = {
|
|||
"common.message": "Message",
|
||||
"common.address": "Address",
|
||||
"common.city": "City",
|
||||
"common.company": "Company Name",
|
||||
"common.company": "Organization Name",
|
||||
"common.fullName": "Full Name",
|
||||
"common.branchCount": "Number of Branches",
|
||||
"common.userCount": "Number of Users",
|
||||
|
|
|
|||
|
|
@ -1,54 +1,24 @@
|
|||
export const team = {
|
||||
en: [
|
||||
{
|
||||
name: "Özlem Öztürk",
|
||||
name: "Özlem ÖZTÜRK",
|
||||
title: "Founder",
|
||||
imageUrl: "/img/women.png"
|
||||
},
|
||||
{
|
||||
name: "Sefa Öztürk",
|
||||
title: "CTO",
|
||||
imageUrl: "/img/men.png"
|
||||
},
|
||||
{
|
||||
name: "Ahmet Öztürk",
|
||||
title: "Sales Director",
|
||||
imageUrl: "/img/men.png"
|
||||
},
|
||||
{
|
||||
name: "Esra Öztürk",
|
||||
title: "Project Director",
|
||||
imageUrl: "/img/women.png"
|
||||
},
|
||||
{
|
||||
name: "Eva Öztürk",
|
||||
name: "Burak KATAR",
|
||||
title: "Tech Director",
|
||||
imageUrl: "/img/women.png"
|
||||
}
|
||||
],
|
||||
tr: [
|
||||
{
|
||||
name: "Özlem Öztürk",
|
||||
name: "Özlem ÖZTÜRK",
|
||||
title: "Kurucu",
|
||||
imageUrl: "/img/women.png"
|
||||
},
|
||||
{
|
||||
name: "Sefa Öztürk",
|
||||
title: "CTO",
|
||||
imageUrl: "/img/men.png"
|
||||
},
|
||||
{
|
||||
name: "Ahmet Öztürk",
|
||||
title: "Satış Direktörü",
|
||||
imageUrl: "/img/men.png"
|
||||
},
|
||||
{
|
||||
name: "Esra Öztürk",
|
||||
title: "Proje Direktörü",
|
||||
imageUrl: "/img/women.png"
|
||||
},
|
||||
{
|
||||
name: "Eva Öztürk",
|
||||
name: "Burak KATAR",
|
||||
title: "Teknoloji Direktörü",
|
||||
imageUrl: "/img/women.png"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import React from 'react';
|
||||
import { Users, Award, Clock, Globe2 } from 'lucide-react';
|
||||
import { useLanguage } from '../context/LanguageContext';
|
||||
import { team } from '../locales/team';
|
||||
import React from "react";
|
||||
import { Users, Award, Clock, Globe2 } from "lucide-react";
|
||||
import { useLanguage } from "../context/LanguageContext";
|
||||
import { team } from "../locales/team";
|
||||
|
||||
const About: React.FC = () => {
|
||||
const { t, language } = useLanguage();
|
||||
|
|
@ -12,16 +12,18 @@ const About: React.FC = () => {
|
|||
<div className="min-h-screen bg-gray-50">
|
||||
{/* Hero Section */}
|
||||
<div className="relative bg-blue-900 text-white py-12">
|
||||
<div className="absolute inset-0 opacity-20" style={{
|
||||
backgroundImage: 'url("https://images.pexels.com/photos/3183183/pexels-photo-3183183.jpeg?auto=compress&cs=tinysrgb&w=1920")',
|
||||
backgroundSize: 'cover',
|
||||
backgroundPosition: 'center',
|
||||
}}></div>
|
||||
<div
|
||||
className="absolute inset-0 opacity-20"
|
||||
style={{
|
||||
backgroundImage:
|
||||
'url("https://images.pexels.com/photos/3183183/pexels-photo-3183183.jpeg?auto=compress&cs=tinysrgb&w=1920")',
|
||||
backgroundSize: "cover",
|
||||
backgroundPosition: "center",
|
||||
}}
|
||||
></div>
|
||||
<div className="container mx-auto pt-16 px-4 relative">
|
||||
<h1 className="text-5xl font-bold mb-6">{t('about.title')}</h1>
|
||||
<p className="text-xl max-w-3xl">
|
||||
{t('about.subtitle')}
|
||||
</p>
|
||||
<h1 className="text-5xl font-bold mb-6">{t("about.title")}</h1>
|
||||
<p className="text-xl max-w-3xl">{t("about.subtitle")}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -32,22 +34,22 @@ const About: React.FC = () => {
|
|||
<div className="text-center">
|
||||
<Users className="w-12 h-12 text-blue-600 mx-auto mb-4" />
|
||||
<div className="text-4xl font-bold text-gray-900 mb-2">300+</div>
|
||||
<div className="text-gray-600">{t('about.stats.clients')}</div>
|
||||
<div className="text-gray-600">{t("about.stats.clients")}</div>
|
||||
</div>
|
||||
<div className="text-center">
|
||||
<Award className="w-12 h-12 text-blue-600 mx-auto mb-4" />
|
||||
<div className="text-4xl font-bold text-gray-900 mb-2">20+</div>
|
||||
<div className="text-gray-600">{t('about.stats.experience')}</div>
|
||||
<div className="text-gray-600">{t("about.stats.experience")}</div>
|
||||
</div>
|
||||
<div className="text-center">
|
||||
<Clock className="w-12 h-12 text-blue-600 mx-auto mb-4" />
|
||||
<div className="text-4xl font-bold text-gray-900 mb-2">7/24</div>
|
||||
<div className="text-gray-600">{t('about.stats.support')}</div>
|
||||
<div className="text-gray-600">{t("about.stats.support")}</div>
|
||||
</div>
|
||||
<div className="text-center">
|
||||
<Globe2 className="w-12 h-12 text-blue-600 mx-auto mb-4" />
|
||||
<div className="text-4xl font-bold text-gray-900 mb-2">3</div>
|
||||
<div className="text-gray-600">{t('about.stats.countries')}</div>
|
||||
<div className="text-gray-600">{t("about.stats.countries")}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -57,31 +59,34 @@ const About: React.FC = () => {
|
|||
<div className="py-6">
|
||||
<div className="container mx-auto px-4">
|
||||
<div className="mb-6">
|
||||
|
||||
<div className="space-y-6 mx-auto mx-auto text-gray-800 text-lg leading-relaxed">
|
||||
<p className="bg-white p-5 shadow-md border-l-4 border-blue-600">
|
||||
{t('about.description.part1')}
|
||||
{t("about.description.part1")}
|
||||
</p>
|
||||
<p className="italic text-center text-blue-700 font-semibold">
|
||||
{t('about.description.motto')}
|
||||
{t("about.description.motto")}
|
||||
</p>
|
||||
<p className="bg-white p-5 shadow-md border-l-4 border-blue-600">
|
||||
{t('about.description.part2')}
|
||||
{t("about.description.part2")}
|
||||
</p>
|
||||
<p className="text-center text-blue-700 font-medium">
|
||||
{t('about.description.closing')}
|
||||
{t("about.description.closing")}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12">
|
||||
<div className="bg-white p-8 rounded-xl shadow-lg">
|
||||
<h3 className="text-2xl font-bold text-gray-900 mb-4">{t('about.mission')}</h3>
|
||||
<p className="text-gray-700">{t('about.mission.desc')}</p>
|
||||
<h3 className="text-2xl font-bold text-gray-900 mb-4">
|
||||
{t("about.mission")}
|
||||
</h3>
|
||||
<p className="text-gray-700">{t("about.mission.desc")}</p>
|
||||
</div>
|
||||
<div className="bg-white p-8 rounded-xl shadow-lg">
|
||||
<h3 className="text-2xl font-bold text-gray-900 mb-4">{t('about.vision')}</h3>
|
||||
<p className="text-gray-700">{t('about.vision.desc')}</p>
|
||||
<h3 className="text-2xl font-bold text-gray-900 mb-4">
|
||||
{t("about.vision")}
|
||||
</h3>
|
||||
<p className="text-gray-700">{t("about.vision.desc")}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -91,13 +96,19 @@ const About: React.FC = () => {
|
|||
<div className="py-16 bg-white">
|
||||
<div className="container mx-auto px-4">
|
||||
<h2 className="text-3xl font-bold text-gray-900 text-center mb-12">
|
||||
{t('about.team')}
|
||||
{t("about.team")}
|
||||
</h2>
|
||||
<div className="grid grid-cols-1 md:grid-cols-5 gap-8">
|
||||
<div className="flex justify-center gap-8 flex-wrap">
|
||||
{teamData.map((member, index) => (
|
||||
<div key={index} className="text-center">
|
||||
<img src={member.imageUrl} alt={member.name} className="w-32 h-32 rounded-full mx-auto mb-4 object-cover" />
|
||||
<h3 className="text-xl font-semibold text-gray-900">{member.name}</h3>
|
||||
<div key={index} className="text-center w-60">
|
||||
<img
|
||||
src={member.imageUrl}
|
||||
alt={member.name}
|
||||
className="w-32 h-32 rounded-full mx-auto mb-4 object-cover"
|
||||
/>
|
||||
<h3 className="text-xl font-semibold text-gray-900">
|
||||
{member.name}
|
||||
</h3>
|
||||
<p className="text-gray-600">{member.title}</p>
|
||||
</div>
|
||||
))}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import {
|
|||
MessageCircle,
|
||||
} from "lucide-react";
|
||||
import { useLanguage } from "../context/LanguageContext";
|
||||
import { demoService } from "../services/api/demo.service";
|
||||
|
||||
const Contact: React.FC = () => {
|
||||
const { t } = useLanguage();
|
||||
|
|
@ -38,32 +39,20 @@ const Contact: React.FC = () => {
|
|||
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
|
||||
e.preventDefault();
|
||||
|
||||
const apiUrl = `${import.meta.env.VITE_API_URL}/api/app/demo/demo-form`;
|
||||
|
||||
try {
|
||||
const response = await fetch(apiUrl, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify(formData),
|
||||
});
|
||||
await demoService.createDemoForm(formData);
|
||||
|
||||
if (response.ok) {
|
||||
alert("Form başarıyla gönderildi.");
|
||||
setFormData({
|
||||
company: "",
|
||||
fullName: "",
|
||||
email: "",
|
||||
phone: "",
|
||||
address: "",
|
||||
branchCount: "",
|
||||
userCount: "",
|
||||
message: "",
|
||||
});
|
||||
} else {
|
||||
alert("Bir hata oluştu. Lütfen tekrar deneyin.");
|
||||
}
|
||||
alert("Form başarıyla gönderildi.");
|
||||
setFormData({
|
||||
company: "",
|
||||
fullName: "",
|
||||
email: "",
|
||||
phone: "",
|
||||
address: "",
|
||||
branchCount: "",
|
||||
userCount: "",
|
||||
message: "",
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Gönderim hatası:", error);
|
||||
alert("Sunucuya ulaşılamıyor.");
|
||||
|
|
|
|||
20
company/src/services/api/demo.service.ts
Normal file
20
company/src/services/api/demo.service.ts
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import { apiClient } from './config'
|
||||
|
||||
export interface DemoFormRequest {
|
||||
company: string
|
||||
fullName: string
|
||||
email: string
|
||||
phone: string
|
||||
address: string
|
||||
branchCount: string
|
||||
userCount: string
|
||||
message: string
|
||||
}
|
||||
|
||||
class DemoService {
|
||||
async createDemoForm(data: DemoFormRequest): Promise<void> {
|
||||
await apiClient.post('/api/app/demo/demo-form', data)
|
||||
}
|
||||
}
|
||||
|
||||
export const demoService = new DemoService()
|
||||
Loading…
Reference in a new issue