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