From dd604ff235ef8b05419a4f4b3ef3cb405e53fb55 Mon Sep 17 00:00:00 2001 From: "nabijonovdavronbek619@gmail.com" Date: Wed, 1 Apr 2026 12:37:12 +0500 Subject: [PATCH 1/6] file import updated --- src/features/auth/login/lib/index.ts | 3 --- src/features/auth/login/ui/form.tsx | 9 +++------ src/shared/lib/index.ts | 1 + src/shared/ui/index.ts | 2 ++ 4 files changed, 6 insertions(+), 9 deletions(-) delete mode 100644 src/features/auth/login/lib/index.ts create mode 100644 src/shared/lib/index.ts create mode 100644 src/shared/ui/index.ts diff --git a/src/features/auth/login/lib/index.ts b/src/features/auth/login/lib/index.ts deleted file mode 100644 index 83f6a19..0000000 --- a/src/features/auth/login/lib/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Ushbu fayl loyiha structurasi uchun qo'shilgan. O'chirib tashlasangiz bo'ladi -export * from './useLoginForm'; -export * from '../../../../shared/lib/formatPhone'; diff --git a/src/features/auth/login/ui/form.tsx b/src/features/auth/login/ui/form.tsx index c7becde..7de0753 100644 --- a/src/features/auth/login/ui/form.tsx +++ b/src/features/auth/login/ui/form.tsx @@ -2,15 +2,12 @@ import { useCallback, useState } from 'react'; import { X } from 'lucide-react'; -import { - formatPhone, - normalizeDigits, -} from '../../../../shared/lib/formatPhone'; -import PhonePrefix from '../../../../shared/ui/phonePrefix'; -import { MotionWrapper } from '../../../../shared/ui/motion'; import { useLoginForm } from '../lib/useLoginForm'; import { useLoginModal, useRegisterModal } from '@/shared/zustand/auth'; import { useTranslations } from 'next-intl'; +import { formatPhone, normalizeDigits } from '@/shared/lib/formatPhone'; +import { MotionWrapper } from '@/shared/ui'; +import PhonePrefix from '@/shared/ui/phonePrefix'; export function LoginForm() { const [isFocused, setIsFocused] = useState(false); diff --git a/src/shared/lib/index.ts b/src/shared/lib/index.ts new file mode 100644 index 0000000..04bca77 --- /dev/null +++ b/src/shared/lib/index.ts @@ -0,0 +1 @@ +export * from './utils'; diff --git a/src/shared/ui/index.ts b/src/shared/ui/index.ts new file mode 100644 index 0000000..075b5f3 --- /dev/null +++ b/src/shared/ui/index.ts @@ -0,0 +1,2 @@ +export * from './motion'; +export * from './phonePrefix'; From cc13a0e1f99fc57404f194ce6310541ea587be6a Mon Sep 17 00:00:00 2001 From: "nabijonovdavronbek619@gmail.com" Date: Wed, 1 Apr 2026 12:47:31 +0500 Subject: [PATCH 2/6] login register updated --- src/features/auth/login/lib/useLoginForm.ts | 3 +++ src/features/auth/register/lib/useRegisterForm.ts | 3 +++ src/shared/config/i18n/messages/en.json | 2 +- src/shared/config/i18n/messages/ru.json | 2 +- src/shared/config/i18n/messages/uz.d.json.ts | 2 +- src/shared/config/i18n/messages/uz.json | 2 +- 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/features/auth/login/lib/useLoginForm.ts b/src/features/auth/login/lib/useLoginForm.ts index 5e1b5c6..55da620 100644 --- a/src/features/auth/login/lib/useLoginForm.ts +++ b/src/features/auth/login/lib/useLoginForm.ts @@ -7,6 +7,7 @@ import { apiRequest } from '@/shared/request/apiRequest'; import { links } from '@/shared/request/links'; import { useLoginModal } from '@/shared/zustand/auth'; import { toast } from 'react-toastify'; +import { useRouter } from '@/shared/config/i18n/navigation'; interface LoginData { phone: string; @@ -15,6 +16,7 @@ interface LoginData { export function useLoginForm() { const [phone, setPhone] = useState(''); const [error, setError] = useState(''); + const route = useRouter(); const toggleLoginModal = useLoginModal((state) => state.toggleLoginModal); const loginReqest = useMutation({ mutationKey: ['login'], @@ -23,6 +25,7 @@ export function useLoginForm() { console.log('Login successful:', data); toggleLoginModal(); toast.success('Kirish muvaffaqiyatli!'); + route.push('/plagat'); }, onError: (err) => { setError(err instanceof Error ? err.message : 'Unknown error'); diff --git a/src/features/auth/register/lib/useRegisterForm.ts b/src/features/auth/register/lib/useRegisterForm.ts index 07026fb..fd2c352 100644 --- a/src/features/auth/register/lib/useRegisterForm.ts +++ b/src/features/auth/register/lib/useRegisterForm.ts @@ -8,6 +8,7 @@ import { useMutation } from '@tanstack/react-query'; import { apiRequest } from '@/shared/request/apiRequest'; import { links } from '@/shared/request/links'; import { toast } from 'react-toastify'; +import { useRouter } from '@/shared/config/i18n/navigation'; interface RegisterData { name: string; @@ -20,6 +21,7 @@ export function useRegisterForm() { useRegisterZustand(); const [errors, setErrors] = useState({}); const [success, setSuccess] = useState(false); + const route = useRouter(); const toggleRegisterModal = useRegisterModal( (state) => state.toggleRegisterModal, ); @@ -33,6 +35,7 @@ export function useRegisterForm() { toggleRegisterModal(); setSuccess(true); toast.success("Ro'yxatdan o'tish muvaffaqiyatli!"); + route.push('/plagat'); }, onError: (err) => { // toggleLoginModal(); diff --git a/src/shared/config/i18n/messages/en.json b/src/shared/config/i18n/messages/en.json index 3ed7a48..f9e3217 100644 --- a/src/shared/config/i18n/messages/en.json +++ b/src/shared/config/i18n/messages/en.json @@ -172,7 +172,7 @@ "phonePlaceholder": "90 123 45 67", "digitsEntered": "{count} digits entered", "sending": "Sending…", - "sendCode": "Send code", + "sendCode": "Login", "registerPrompt": "Don't have an account?", "registerLink": "Register" }, diff --git a/src/shared/config/i18n/messages/ru.json b/src/shared/config/i18n/messages/ru.json index 5073b39..00daa0d 100644 --- a/src/shared/config/i18n/messages/ru.json +++ b/src/shared/config/i18n/messages/ru.json @@ -172,7 +172,7 @@ "phonePlaceholder": "90 123 45 67", "digitsEntered": "Введено {count} цифр", "sending": "Отправка…", - "sendCode": "Отправить код", + "sendCode": "Вход", "registerPrompt": "Нет аккаунта?", "registerLink": "Зарегистрироваться" }, diff --git a/src/shared/config/i18n/messages/uz.d.json.ts b/src/shared/config/i18n/messages/uz.d.json.ts index 95a0d10..f8f68a0 100644 --- a/src/shared/config/i18n/messages/uz.d.json.ts +++ b/src/shared/config/i18n/messages/uz.d.json.ts @@ -175,7 +175,7 @@ declare const messages: { phonePlaceholder: '90 123 45 67'; digitsEntered: '{count} ta raqam kiritildi'; sending: 'Yuborilmoqda…'; - sendCode: 'Kodni yuborish'; + sendCode: 'Kirish'; registerPrompt: "Hisobingiz yo'qmi?"; registerLink: "Ro'yxatdan o'tish"; }; diff --git a/src/shared/config/i18n/messages/uz.json b/src/shared/config/i18n/messages/uz.json index 7b2462d..d535dc0 100644 --- a/src/shared/config/i18n/messages/uz.json +++ b/src/shared/config/i18n/messages/uz.json @@ -172,7 +172,7 @@ "phonePlaceholder": "90 123 45 67", "digitsEntered": "{count} ta raqam kiritildi", "sending": "Yuborilmoqda…", - "sendCode": "Kodni yuborish", + "sendCode": "Kirish", "registerPrompt": "Hisobingiz yo'qmi?", "registerLink": "Ro'yxatdan o'tish" }, From 9414ce0c8af028e1baf2a46c47f0c8af6ab19411 Mon Sep 17 00:00:00 2001 From: "nabijonovdavronbek619@gmail.com" Date: Wed, 1 Apr 2026 13:44:18 +0500 Subject: [PATCH 3/6] text upated --- src/features/auth/login/ui/form.tsx | 2 +- src/shared/config/i18n/messages/en.json | 6 +++--- src/shared/config/i18n/messages/ru.json | 6 +++--- src/shared/config/i18n/messages/uz.d.json.ts | 6 +++--- src/shared/config/i18n/messages/uz.json | 6 +++--- src/widgets/home/components/Hero.tsx | 1 + src/widgets/home/components/Stat.tsx | 2 +- src/widgets/home/constants.ts | 1 - src/widgets/navbar/ui/authButtons.tsx | 4 ++-- src/widgets/navbar/ui/index.tsx | 12 ++++-------- 10 files changed, 21 insertions(+), 25 deletions(-) diff --git a/src/features/auth/login/ui/form.tsx b/src/features/auth/login/ui/form.tsx index 7de0753..1dc45d5 100644 --- a/src/features/auth/login/ui/form.tsx +++ b/src/features/auth/login/ui/form.tsx @@ -151,11 +151,11 @@ export function LoginForm() {

{t('registerPrompt')}

{ toggleLoginModal(); toggleRegisterModal(); }} - className="text-stone-800 hover:cursor-pointer underline underline-offset-2 hover:text-stone-600 transition-colors" > {t('registerLink')}

diff --git a/src/shared/config/i18n/messages/en.json b/src/shared/config/i18n/messages/en.json index f9e3217..0efaf59 100644 --- a/src/shared/config/i18n/messages/en.json +++ b/src/shared/config/i18n/messages/en.json @@ -106,7 +106,7 @@ "mainHeading": "Is Your Work", "mainHeadingItalic": "Truly Original?", "description": "Plagiarism is presenting someone else's ideas or words as your own. In academia and professional life, it carries serious consequences. Our platform detects it in seconds — so you can submit with full confidence.", - "certificateNote": "Certificate issued within 24h" + "certificateNote": "Certificate included!" }, "Common": { "startButton": "Start Checking →", @@ -125,7 +125,7 @@ "heading": "How It Works", "description": "Six simple steps from upload to certified report.", "ctaHeading": "Ready to verify your document?", - "ctaDescription": "Get your originality certificate in under 24 hours." + "ctaDescription": "Protection of your copyright" }, "Steps": { "step1Title": "Click Start", @@ -139,7 +139,7 @@ "step5Title": "Complete Payment", "step5Desc": "Pay securely for your plagiarism check service", "step6Title": "Get Your Report", - "step6Desc": "Receive detailed results and certificate within 24 hours" + "step6Desc": "Get the results and the certificate" }, "Stats": { "accuracy": "Detection accuracy", diff --git a/src/shared/config/i18n/messages/ru.json b/src/shared/config/i18n/messages/ru.json index 00daa0d..1163e78 100644 --- a/src/shared/config/i18n/messages/ru.json +++ b/src/shared/config/i18n/messages/ru.json @@ -106,7 +106,7 @@ "mainHeading": "Ваша работа", "mainHeadingItalic": "Действительно оригинальна?", "description": "Плагиат - это представление идей или слов другого человека как своих собственных. В академической и профессиональной жизни это несет серьезные последствия. Наша платформа обнаруживает его за секунды — чтобы вы могли отправлять с полной уверенностью.", - "certificateNote": "Сертификат выдается в течение 24 часов" + "certificateNote": "Сертификат прилагается!" }, "Common": { "startButton": "Начать проверку →", @@ -125,7 +125,7 @@ "heading": "Как это работает", "description": "Шесть простых шагов от загрузки до сертифицированного отчета.", "ctaHeading": "Готовы проверить ваш документ?", - "ctaDescription": "Получите сертификат оригинальности менее чем за 24 часа." + "ctaDescription": "Защита ваших авторских прав" }, "Steps": { "step1Title": "Нажмите Начать", @@ -139,7 +139,7 @@ "step5Title": "Завершите оплату", "step5Desc": "Оплатите безопасно услугу проверки на плагиат", "step6Title": "Получите ваш отчет", - "step6Desc": "Получите подробные результаты и сертификат в течение 24 часов" + "step6Desc": "Получите результаты и сертификат" }, "Stats": { "accuracy": "Точность обнаружения", diff --git a/src/shared/config/i18n/messages/uz.d.json.ts b/src/shared/config/i18n/messages/uz.d.json.ts index f8f68a0..80ab588 100644 --- a/src/shared/config/i18n/messages/uz.d.json.ts +++ b/src/shared/config/i18n/messages/uz.d.json.ts @@ -109,7 +109,7 @@ declare const messages: { mainHeading: 'Sizning ishingiz'; mainHeadingItalic: 'Haqiqatan ham originalmi?'; description: "Plagiat - bu boshqa birovning g'oyalarini yoki so'zlarini o'z g'oyalar yoki so'zlari sifatida taqdim etish. Akademik va professional hayotda bu jiddiy oqibatlarga olib keladi. Bizning platformamiz buni soniyalar ichida aniqlaydi — shuning uchun siz to'liq ishonch bilan yuborishingiz mumkin."; - certificateNote: 'Sertifikat 24 soat ichida beriladi'; + certificateNote: 'Sertifikat bilan birga!'; }; Common: { startButton: 'Tekshirishni boshlash →'; @@ -128,7 +128,7 @@ declare const messages: { heading: 'Bu qanday ishlaydi'; description: 'Yuklashdan sertifikatlangan hisobotgacha oltita oddiy qadam.'; ctaHeading: 'Hujjatingizni tekshirishga tayyormisiz?'; - ctaDescription: '24 soat ichida orijinallik sertifikatini oling.'; + ctaDescription: 'Sizning mualliflik huquqingiz himoyasi'; }; Steps: { step1Title: 'Boshlash tugmasini bosing'; @@ -142,7 +142,7 @@ declare const messages: { step5Title: "To'lovni amalga oshiring"; step5Desc: "Plagiat tekshiruvi xizmatini xavfsiz to'lang"; step6Title: 'Hisobotingizni oling'; - step6Desc: '24 soat ichida batafsil natijalar va sertifikatni oling'; + step6Desc: 'Natijalar va sertifikatni oling'; }; Stats: { accuracy: 'Aniqlash aniqligi'; diff --git a/src/shared/config/i18n/messages/uz.json b/src/shared/config/i18n/messages/uz.json index d535dc0..96c166c 100644 --- a/src/shared/config/i18n/messages/uz.json +++ b/src/shared/config/i18n/messages/uz.json @@ -106,7 +106,7 @@ "mainHeading": "Sizning ishingiz", "mainHeadingItalic": "Haqiqatan ham originalmi?", "description": "Plagiat - bu boshqa birovning g'oyalarini yoki so'zlarini o'z g'oyalar yoki so'zlari sifatida taqdim etish. Akademik va professional hayotda bu jiddiy oqibatlarga olib keladi. Bizning platformamiz buni soniyalar ichida aniqlaydi — shuning uchun siz to'liq ishonch bilan yuborishingiz mumkin.", - "certificateNote": "Sertifikat 24 soat ichida beriladi" + "certificateNote": "Sertifikat bilan birga!" }, "Common": { "startButton": "Tekshirishni boshlash →", @@ -125,7 +125,7 @@ "heading": "Bu qanday ishlaydi", "description": "Yuklashdan sertifikatlangan hisobotgacha oltita oddiy qadam.", "ctaHeading": "Hujjatingizni tekshirishga tayyormisiz?", - "ctaDescription": "24 soat ichida orijinallik sertifikatini oling." + "ctaDescription": "Sizning mualliflik huquqingiz himoyasi" }, "Steps": { "step1Title": "Boshlash tugmasini bosing", @@ -139,7 +139,7 @@ "step5Title": "To'lovni amalga oshiring", "step5Desc": "Plagiat tekshiruvi xizmatini xavfsiz to'lang", "step6Title": "Hisobotingizni oling", - "step6Desc": "24 soat ichida batafsil natijalar va sertifikatni oling" + "step6Desc": "Natijalar va sertifikatni oling" }, "Stats": { "accuracy": "Aniqlash aniqligi", diff --git a/src/widgets/home/components/Hero.tsx b/src/widgets/home/components/Hero.tsx index 31ad2d1..2d2d418 100644 --- a/src/widgets/home/components/Hero.tsx +++ b/src/widgets/home/components/Hero.tsx @@ -183,6 +183,7 @@ const Hero = () => { paddingTop: 36, borderTop: `1px solid ${C.border}`, }} + className="flex items-center justify-around" > {STATS.map((s) => { return ( diff --git a/src/widgets/home/components/Stat.tsx b/src/widgets/home/components/Stat.tsx index 9adfe52..bc7c60a 100644 --- a/src/widgets/home/components/Stat.tsx +++ b/src/widgets/home/components/Stat.tsx @@ -3,7 +3,7 @@ import { C } from '../tokens'; import type { StatItem } from '../types'; const Stat: FC = ({ value, label }) => ( -
+
-
+
+