This commit is contained in:
Sedat ÖZTÜRK 2025-05-15 16:26:14 +03:00
parent bbf298c472
commit eda2e18ec9
6 changed files with 181 additions and 248 deletions

View file

@ -7,7 +7,6 @@ import Services from './pages/Services';
import About from './pages/About'; import About from './pages/About';
import Blog from './pages/Blog'; import Blog from './pages/Blog';
import Contact from './pages/Contact'; import Contact from './pages/Contact';
import Demo from './pages/Demo';
import BlogDetail from './pages/BlogDetail'; import BlogDetail from './pages/BlogDetail';
import { LanguageProvider } from './context/LanguageContext'; import { LanguageProvider } from './context/LanguageContext';
@ -23,7 +22,6 @@ function App() {
<Route path="/about" element={<About />} /> <Route path="/about" element={<About />} />
<Route path="/blog" element={<Blog />} /> <Route path="/blog" element={<Blog />} />
<Route path="/contact" element={<Contact />} /> <Route path="/contact" element={<Contact />} />
<Route path="/demo" element={<Demo />} />
<Route path="/blog/:id" element={<BlogDetail />} /> <Route path="/blog/:id" element={<BlogDetail />} />
</Routes> </Routes>
</Layout> </Layout>

View file

@ -17,7 +17,7 @@ const Hero: React.FC = () => {
<div className="relative container mx-auto px-4 pt-32 pb-16"> <div className="relative container mx-auto px-4 pt-32 pb-16">
<div className="max-w-4xl mx-auto text-center text-white"> <div className="max-w-4xl mx-auto text-center text-white">
<h1 className="text-5xl md:text-7xl font-bold mb-6 leading-tight"> <h1 className="text-5xl md:text-6xl font-bold mb-6 leading-tight">
{t('hero.title')} {t('hero.title')}
</h1> </h1>

View file

@ -25,13 +25,13 @@ const Header: React.FC = () => {
const toggleLanguage = () => setLanguage(language === "en" ? "tr" : "en"); const toggleLanguage = () => setLanguage(language === "en" ? "tr" : "en");
const navLinks = [ const navLinks = [
{ name: t('nav.home'), path: "/" }, { name: t("nav.home"), path: "/" },
{ name: t('nav.about'), path: "/about" }, { name: t("nav.about"), path: "/about" },
{ name: t('nav.products'), path: "/products" }, { name: t("nav.products"), path: "/products" },
{ name: t('nav.services'), path: "/services" }, { name: t("nav.services"), path: "/services" },
{ name: t('nav.demo'), path: "/demo" }, { name: t("nav.blog"), path: "/blog" },
{ name: t('nav.blog'), path: "/blog" }, { name: t("nav.contact"), path: "/contact" },
{ name: t('nav.contact'), path: "/contact" }, { name: t("nav.demo"), path: "https://kurs.sozsoft.com" },
]; ];
return ( return (
@ -53,11 +53,14 @@ const Header: React.FC = () => {
<Link <Link
key={link.path} key={link.path}
to={link.path} to={link.path}
className="font-medium text-sm text-white hover:text-blue-400 transition-colors" className={`font-medium text-sm text-white hover:text-blue-400 transition-colors ${
link.name === "Demo" ? "bg-blue-600 rounded px-2 py-1" : ""
}`}
> >
{link.name} {link.name}
</Link> </Link>
))} ))}
<button <button
onClick={toggleLanguage} onClick={toggleLanguage}
className="flex items-center space-x-1 font-medium text-sm text-white hover:text-blue-400 transition-colors" className="flex items-center space-x-1 font-medium text-sm text-white hover:text-blue-400 transition-colors"
@ -86,12 +89,15 @@ const Header: React.FC = () => {
<Link <Link
key={link.path} key={link.path}
to={link.path} to={link.path}
className="font-medium text-white hover:text-blue-400 transition-colors" className={`font-medium text-white hover:text-blue-400 transition-colors ${
link.name === "Demo" ? "bg-blue-600 rounded px-2 py-1" : ""
}`}
onClick={toggleMenu} onClick={toggleMenu}
> >
{link.name} {link.name}
</Link> </Link>
))} ))}
<button <button
onClick={toggleLanguage} onClick={toggleLanguage}
className="flex items-center space-x-1 font-medium text-white hover:text-blue-400 transition-colors" className="flex items-center space-x-1 font-medium text-white hover:text-blue-400 transition-colors"
@ -107,4 +113,4 @@ const Header: React.FC = () => {
); );
}; };
export default Header; export default Header;

View file

@ -39,7 +39,7 @@ const Contact: React.FC = () => {
<div className="container mx-auto px-4"> <div className="container mx-auto px-4">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12"> <div className="grid grid-cols-1 lg:grid-cols-2 gap-12">
{/* Contact Information */} {/* Contact Information */}
<div className="space-y-8"> <div className="space-y-4">
<div className="bg-white rounded-xl shadow-lg p-8"> <div className="bg-white rounded-xl shadow-lg p-8">
<h2 className="text-2xl font-bold text-gray-900 mb-6"> <h2 className="text-2xl font-bold text-gray-900 mb-6">
{t("contact.info.title")} {t("contact.info.title")}
@ -48,9 +48,6 @@ const Contact: React.FC = () => {
<div className="flex items-start space-x-4"> <div className="flex items-start space-x-4">
<MapPin className="w-6 h-6 text-blue-600 flex-shrink-0 mt-1" /> <MapPin className="w-6 h-6 text-blue-600 flex-shrink-0 mt-1" />
<div> <div>
<h3 className="font-semibold text-gray-900">
{t("contact.address")}
</h3>
<p className="text-gray-600"> <p className="text-gray-600">
{t("contact.address.full")} {t("contact.address.full")}
</p> </p>
@ -59,18 +56,12 @@ const Contact: React.FC = () => {
<div className="flex items-start space-x-4"> <div className="flex items-start space-x-4">
<Phone className="w-6 h-6 text-blue-600 flex-shrink-0" /> <Phone className="w-6 h-6 text-blue-600 flex-shrink-0" />
<div> <div>
<h3 className="font-semibold text-gray-900">
{t("contact.phone")}
</h3>
<p className="text-gray-600">+90 (544) 769 7 638</p> <p className="text-gray-600">+90 (544) 769 7 638</p>
</div> </div>
</div> </div>
<div className="flex items-start space-x-4"> <div className="flex items-start space-x-4">
<Mail className="w-6 h-6 text-blue-600 flex-shrink-0" /> <Mail className="w-6 h-6 text-blue-600 flex-shrink-0" />
<div> <div>
<h3 className="font-semibold text-gray-900">
{t("contact.email")}
</h3>
<p className="text-gray-600"> <p className="text-gray-600">
<a <a
href="mailto:destek@sozsoft.com" href="mailto:destek@sozsoft.com"
@ -79,53 +70,49 @@ const Contact: React.FC = () => {
destek@sozsoft.com destek@sozsoft.com
</a> </a>
</p> </p>
<p className="text-gray-600">
<a
href="mailto:kariyer@sozsoft.com"
className="hover:underline text-blue-600"
>
kariyer@sozsoft.com
</a>
</p>
</div> </div>
</div> </div>
<div className="flex items-start space-x-4"> <div className="flex items-start space-x-4">
<Building className="w-6 h-6 text-blue-600 flex-shrink-0" /> <Building className="w-6 h-6 text-blue-600 flex-shrink-0" />
<div> <div>
<h3 className="font-semibold text-gray-900">
{t("contact.taxOffice")}
</h3>
<p className="text-gray-600">Kozyatağı</p> <p className="text-gray-600">Kozyatağı</p>
</div> </div>
</div> </div>
<div className="flex items-start space-x-4"> <div className="flex items-start space-x-4">
<FileText className="w-6 h-6 text-blue-600 flex-shrink-0" /> <FileText className="w-6 h-6 text-blue-600 flex-shrink-0" />
<div> <div>
<h3 className="font-semibold text-gray-900">
{t("contact.taxNumber")}
</h3>
<p className="text-gray-600">32374982750</p> <p className="text-gray-600">32374982750</p>
</div> </div>
</div> </div>
<div className="flex items-start space-x-4">
<Globe className="w-6 h-6 text-blue-600 flex-shrink-0" />
<div>
<h3 className="font-semibold text-gray-900">
<a
href="http://www.sozsoft.com"
className="text-blue-600 hover:underline"
>
http://www.sozsoft.com
</a>
</h3>
</div>
</div>
</div> </div>
</div> </div>
</div>
{/* Bank Information */} <div className="bg-white rounded-xl shadow-lg p-8">
<div className="space-y-8"> <h2 className="text-2xl font-bold text-gray-900 mb-6">
{t("contact.bank.title")}
</h2>
<div className="space-y-4">
<img
src="/img/enpara.svg"
alt="Enpara Logo"
className="w-24 object-contain mt-1 flex-shrink-0"
/>
<div>
<h3 className="font-semibold text-gray-900">
Özlem Öztürk
</h3>
<p className="text-gray-600">
03663 / Enpara
<br />
73941177
<br />
TR65 0011 1000 0000 0073 9411 77
</p>
</div>
</div>
</div>
{/* Bank Information */}
<div className="bg-white rounded-xl shadow-lg p-8"> <div className="bg-white rounded-xl shadow-lg p-8">
<h2 className="text-2xl font-bold text-gray-900 mb-6"> <h2 className="text-2xl font-bold text-gray-900 mb-6">
{t("contact.workHours")} {t("contact.workHours")}
@ -155,32 +142,145 @@ const Contact: React.FC = () => {
</div> </div>
</div> </div>
</div> </div>
</div>
<div className="space-y-8">
<div className="bg-white rounded-xl shadow-lg p-8"> <div className="bg-white rounded-xl shadow-lg p-8">
<h2 className="text-2xl font-bold text-gray-900 mb-6"> <h2 className="text-2xl font-bold text-gray-900 mb-6">
{t("contact.bank.title")} {t("demo.form.title")}
</h2> </h2>
<div className="space-y-4"> <form className="space-y-6">
<img <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
src="/img/enpara.svg" <div>
alt="Enpara Logo" <label
className="w-24 object-contain mt-1 flex-shrink-0" htmlFor="company"
/> className="block text-sm font-medium text-gray-700 mb-2"
<div> >
<h3 className="font-semibold text-gray-900"> {t("common.company") || "Şirket Adı"}
Özlem Öztürk </label>
</h3> <input
<p className="text-gray-600"> type="text"
03663 / Enpara id="company"
<br /> name="company"
73941177 className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
<br /> />
TR65 0011 1000 0000 0073 9411 77 </div>
</p> <div>
<label
htmlFor="fullName"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.fullName") || "Adınız Soyadınız"}
</label>
<input
type="text"
id="fullName"
name="fullName"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
</div> </div>
</div>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label
htmlFor="email"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.email")}
</label>
<input
type="email"
id="email"
name="email"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
<div>
<label
htmlFor="phone"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.phone")}
</label>
<input
type="tel"
id="phone"
name="phone"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
</div>
<div>
<label
htmlFor="address"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.address")}
</label>
<input
type="text"
id="address"
name="address"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label
htmlFor="branchCount"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.branchCount") || "Şube Adedi"}
</label>
<input
type="number"
id="branchCount"
name="branchCount"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
<div>
<label
htmlFor="userCount"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.userCount") || "Kullanıcı Adedi"}
</label>
<input
type="number"
id="userCount"
name="userCount"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
</div>
<div>
<label
htmlFor="message"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.message")}
</label>
<textarea
id="message"
name="message"
rows="10"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
<button
type="submit"
className="w-full bg-blue-600 text-white py-3 px-6 rounded-lg hover:bg-blue-700 transition-colors font-semibold"
>
{t("common.send")}
</button>
</form>
</div>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,169 +0,0 @@
import React from "react";
import { useLanguage } from "../context/LanguageContext";
const Demo: React.FC = () => {
const { t } = useLanguage();
return (
<div className="min-h-screen bg-gray-50">
<div className="relative bg-blue-900 text-white py-24">
<div
className="absolute inset-0 opacity-20"
style={{
backgroundImage:
'url("https://images.pexels.com/photos/3183155/pexels-photo-3183155.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("demo.form.title")}</h1>
<p className="text-xl max-w-3xl">{t("demo.subtitle")}</p>
</div>
</div>
<div className="py-16">
<div className="container mx-auto px-4">
<div className="bg-white rounded-xl shadow-lg p-8">
<h2 className="text-2xl font-bold text-gray-900 mb-6">
{t("demo.form.title")}
</h2>
<form className="space-y-6">
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label
htmlFor="company"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.company") || "Şirket Adı"}
</label>
<input
type="text"
id="company"
name="company"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
<div>
<label
htmlFor="fullName"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.fullName") || "Adınız Soyadınız"}
</label>
<input
type="text"
id="fullName"
name="fullName"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label
htmlFor="email"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.email")}
</label>
<input
type="email"
id="email"
name="email"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
<div>
<label
htmlFor="phone"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.phone")}
</label>
<input
type="tel"
id="phone"
name="phone"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
</div>
<div>
<label
htmlFor="address"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.address")}
</label>
<input
type="text"
id="address"
name="address"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<label
htmlFor="branchCount"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.branchCount") || "Şube Adedi"}
</label>
<input
type="number"
id="branchCount"
name="branchCount"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
<div>
<label
htmlFor="userCount"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.userCount") || "Kullanıcı Adedi"}
</label>
<input
type="number"
id="userCount"
name="userCount"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
</div>
<div>
<label
htmlFor="message"
className="block text-sm font-medium text-gray-700 mb-2"
>
{t("common.message")}
</label>
<textarea
id="message"
name="message"
rows="4"
className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
/>
</div>
<button
type="submit"
className="w-full bg-blue-600 text-white py-3 px-6 rounded-lg hover:bg-blue-700 transition-colors font-semibold"
>
{t("common.send")}
</button>
</form>
</div>
</div>
</div>
</div>
);
};
export default Demo;

View file

@ -2,7 +2,6 @@ import { FailedSignInResponse } from '@/@types/auth'
import ActionLink from '@/components/shared/ActionLink' import ActionLink from '@/components/shared/ActionLink'
import Captcha from '@/components/shared/Captcha' import Captcha from '@/components/shared/Captcha'
import PasswordInput from '@/components/shared/PasswordInput' import PasswordInput from '@/components/shared/PasswordInput'
import { Select } from '@/components/ui'
import Alert from '@/components/ui/Alert' import Alert from '@/components/ui/Alert'
import Button from '@/components/ui/Button' import Button from '@/components/ui/Button'
import Checkbox from '@/components/ui/Checkbox' import Checkbox from '@/components/ui/Checkbox'
@ -10,7 +9,6 @@ import { FormContainer, FormItem } from '@/components/ui/Form'
import Input from '@/components/ui/Input' import Input from '@/components/ui/Input'
import PlatformLoginResultType from '@/constants/login.result.enum' import PlatformLoginResultType from '@/constants/login.result.enum'
import { ROUTES_ENUM } from '@/constants/route.constant' import { ROUTES_ENUM } from '@/constants/route.constant'
import { getTenants } from '@/proxy/admin/tenant/tenant.service'
import { useStoreActions, useStoreState } from '@/store' import { useStoreActions, useStoreState } from '@/store'
import useAuth from '@/utils/hooks/useAuth' import useAuth from '@/utils/hooks/useAuth'
import { useLocalization } from '@/utils/hooks/useLocalization' import { useLocalization } from '@/utils/hooks/useLocalization'
@ -170,10 +168,10 @@ const Login = () => {
} }
const subDomainName = getSubdomain() const subDomainName = getSubdomain()
//const subDomainName = 'DEMO2' //const subDomainName = 'KURS2'
const tenantId = useStoreState((a) => a.auth.tenantId) ?? subDomainName const tenantId = useStoreState((a) => a.auth.tenantId) ?? subDomainName
const tenantStyle: React.CSSProperties | undefined = const tenantStyle: React.CSSProperties | undefined =
subDomainName && subDomainName !== 'DEMO' subDomainName && subDomainName !== 'KURS'
? { ? {
opacity: 0, opacity: 0,
position: 'absolute', position: 'absolute',
@ -213,7 +211,7 @@ const Login = () => {
value={tenantId || ''} value={tenantId || ''}
onChange={(e) => setTenantId(e.target.value)} onChange={(e) => setTenantId(e.target.value)}
style={tenantStyle} style={tenantStyle}
aria-hidden={subDomainName && subDomainName !== 'DEMO' ? 'true' : 'false'} aria-hidden={subDomainName && subDomainName !== 'KURS' ? 'true' : 'false'}
/> />
</div> </div>
</> </>