diff --git a/public/google.svg b/public/google.svg new file mode 100644 index 0000000..8da7da0 --- /dev/null +++ b/public/google.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/App.jsx b/src/App.jsx index 941a9c5..a7633f6 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -71,6 +71,7 @@ const App = () => { navigate('/login')} sx={{ background: 'none', border: 'none', @@ -86,8 +87,8 @@ const App = () => { > Login - diff --git a/src/main.jsx b/src/main.jsx index c06e2cf..ad4bbdb 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -9,6 +9,8 @@ import BulkCropStep from './components/BulkCropStep'; import OcrStep from './components/OcrStep'; import EpubStep from './components/EpubStep'; import DownloadStep from './components/DownloadStep'; +import Login from './pages/auth/Login'; +import Register from './pages/auth/Register'; const theme = createTheme({ palette: { @@ -135,6 +137,8 @@ const router = createBrowserRouter([ { path: wizardSteps[5].path, element: }, ], }, + { path: '/login', element: }, + { path: '/register', element: }, ]); ReactDOM.createRoot(document.getElementById('root')).render( diff --git a/src/pages/auth/AuthPage.jsx b/src/pages/auth/AuthPage.jsx new file mode 100644 index 0000000..526a1b1 --- /dev/null +++ b/src/pages/auth/AuthPage.jsx @@ -0,0 +1,275 @@ +import { + Box, + Button, + Container, + Divider, + Link, + Paper, + Stack, + TextField, + Typography, +} from '@mui/material'; +import { Link as RouterLink } from 'react-router-dom'; + +const copy = { + login: { + eyebrow: 'Tek panel, sonsuz çıktı', + heading: 'imgpub stüdyona giriş yap', + body: + 'OCR, crop ve EPUB üretimini tek akışta yöneten imgpub hesabına eriş. Taslaklarını, kapaklarını ve sürümlerini nerede kalmış olursan ol devam ettir.', + submit: 'Giriş yap', + switchLabel: 'Hesabın yok mu?', + switchLink: { to: '/register', label: 'Hemen kaydol' }, + google: 'Google ile giriş yap', + highlights: [ + 'Kütüphanendeki projeleri bulutta sakla', + 'OCR sonrası metinleri EPUB şablonlarına aktar', + 'Toplu crop ile sayfa düzenini koru', + ], + }, + register: { + eyebrow: 'Dakikalar içinde hazır', + heading: 'Yeni imgpub hesabı oluştur', + body: + 'Taradığın sayfaları düzenle, OCR ile Türkçe metni temizle ve EPUB olarak dışa aktar. Kayıt ol, yayın kulübeni dilediğin zaman genişlet.', + submit: 'Hesabımı oluştur', + switchLabel: 'Zaten hesabın var mı?', + switchLink: { to: '/login', label: 'Giriş yap' }, + google: 'Google ile devam et', + highlights: [ + 'Akıllı crop önerileri ile zamandan kazan', + 'OCR çıktısını EPUB ve PDF olarak taşı', + 'Kapak ve önizleme görsellerini tek tuşla üret', + ], + }, +}; + +const fields = { + login: [ + { name: 'email', label: 'Email adresi', type: 'email' }, + { name: 'password', label: 'Şifre', type: 'password' }, + ], + register: [ + { name: 'name', label: 'Ad Soyad', type: 'text' }, + { name: 'email', label: 'Email adresi', type: 'email' }, + { name: 'password', label: 'Şifre', type: 'password' }, + ], +}; + +const AuthPage = ({ mode }) => { + const variant = copy[mode]; + const formFields = fields[mode]; + + return ( + + + + + + + + imgpub + + + {variant.eyebrow} + + + {variant.heading} + + {variant.body} + + + + veya e-posta ile + + {formFields.map((field) => ( + + ))} + + + {mode === 'login' && ( + + Şifreni mi unuttun? Yeni hesap aç + + )} + + {variant.switchLabel}{' '} + + {variant.switchLink.label} + + + + + + + + + + + + ); +}; + +const AuthShowcase = ({ mode }) => { + const variant = copy[mode]; + + return ( + + + + imgpub studio + + + Görsellerini EPUB'a çeviren modern akış + + + Toplu crop, OCR ve EPUB çıktısını tek yerde birleştir. Taslaklarını paylaşmak için sadece Google hesabın yeterli. + + + + + {variant.highlights.map((item) => ( + + + • + + {item} + + ))} + + + ); +}; + +const AuthIllustration = () => ( + + + + + + + + OCR & Crop + Sayfa kenarlarını otomatik hizala + + + + + EPUB Süreci + + {['Kapak', 'Metin', 'Önizleme'].map((item) => ( + + + {item} + + + ))} + + + + +); + +export default AuthPage; diff --git a/src/pages/auth/Login.jsx b/src/pages/auth/Login.jsx new file mode 100644 index 0000000..e6236eb --- /dev/null +++ b/src/pages/auth/Login.jsx @@ -0,0 +1,5 @@ +import AuthPage from './AuthPage'; + +const Login = () => ; + +export default Login; diff --git a/src/pages/auth/Register.jsx b/src/pages/auth/Register.jsx new file mode 100644 index 0000000..b1c21e2 --- /dev/null +++ b/src/pages/auth/Register.jsx @@ -0,0 +1,5 @@ +import AuthPage from './AuthPage'; + +const Register = () => ; + +export default Register;