1- import React , { useState } from 'react' ;
2- import { motion , useScroll , useTransform , AnimatePresence } from 'framer-motion' ;
3- import { ArrowRight , Download , Zap , CircleCheck } from 'lucide-react' ;
4- import { InteractivePhone } from './InteractivePhone' ;
5- import { useLanguage } from '../LanguageContext' ;
6- import ConfigData from '@/config' ;
1+ import React , { useState } from "react" ;
2+ import {
3+ motion ,
4+ useScroll ,
5+ useTransform ,
6+ AnimatePresence ,
7+ } from "framer-motion" ;
8+ import { ArrowRight , Download , Zap , CircleCheck } from "lucide-react" ;
9+ import { InteractivePhone } from "./InteractivePhone" ;
10+ import { useLanguage } from "../LanguageContext" ;
11+ import ConfigData from "@/config" ;
712
813const Hero : React . FC = ( ) => {
914 const { t } = useLanguage ( ) ;
@@ -14,7 +19,6 @@ const Hero: React.FC = () => {
1419 return (
1520 < section className = "relative pt-32 pb-20 lg:pt-40 lg:pb-32 overflow-hidden lg:overflow-visible" >
1621 < div className = "max-w-7xl mx-auto px-6 grid lg:grid-cols-2 gap-16 items-center" >
17-
1822 { /* Text Content */ }
1923 < motion . div
2024 initial = { { opacity : 0 , x : - 50 } }
@@ -29,30 +33,33 @@ const Hero: React.FC = () => {
2933 className = "inline-flex items-center gap-2 px-4 py-2 rounded-full bg-slate-100 dark:bg-slate-800/50 text-slate-600 dark:text-slate-300 text-sm font-semibold mb-8 border border-slate-200 dark:border-slate-700 backdrop-blur-sm"
3034 >
3135 < Zap size = { 16 } className = "text-blue-500" />
32- < span > { t ( ' hero_badge' ) } </ span >
36+ < span > { t ( " hero_badge" ) } </ span >
3337 </ motion . div >
3438
3539 < h1 className = "text-5xl lg:text-7xl font-extrabold tracking-tight text-slate-900 dark:text-white leading-[1.1] mb-6" >
36- { t ( ' hero_title_1' ) } < br />
40+ { t ( " hero_title_1" ) } < br />
3741 < span className = "text-transparent bg-clip-text bg-gradient-to-r from-blue-600 via-indigo-600 to-purple-600 animate-gradient-x" >
38- { t ( ' hero_title_2' ) }
42+ { t ( " hero_title_2" ) }
3943 </ span >
4044 </ h1 >
4145
4246 < p className = "text-lg lg:text-xl text-slate-600 dark:text-slate-300 mb-8 max-w-lg leading-relaxed" >
43- { t ( ' hero_desc' ) }
47+ { t ( " hero_desc" ) }
4448 </ p >
4549
4650 < div className = "flex flex-col sm:flex-row gap-4 mb-12 relative z-50" >
4751 < div className = "relative" >
4852 < motion . button
49- whileHover = { { scale : 1.05 , boxShadow : "0 20px 25px -5px rgba(37, 99, 235, 0.4)" } }
53+ whileHover = { {
54+ scale : 1.05 ,
55+ boxShadow : "0 20px 25px -5px rgba(37, 99, 235, 0.4)" ,
56+ } }
5057 whileTap = { { scale : 0.95 } }
5158 onClick = { ( ) => setIsDownloadOpen ( ! isDownloadOpen ) }
5259 className = "flex items-center justify-center gap-2 px-8 py-4 bg-blue-600 text-white rounded-full font-bold shadow-lg shadow-blue-600/30 hover:bg-blue-700 transition-all w-full sm:w-auto"
5360 >
5461 < Download size = { 20 } />
55- { t ( ' hero_btn_download' ) }
62+ { t ( " hero_btn_download" ) }
5663 </ motion . button >
5764
5865 < AnimatePresence >
@@ -65,25 +72,28 @@ const Hero: React.FC = () => {
6572 transition = { { duration : 0.2 } }
6673 className = "absolute top-full left-0 right-0 mt-3 p-2 bg-white dark:bg-slate-800 rounded-2xl shadow-xl border border-slate-100 dark:border-slate-700 overflow-hidden flex flex-col gap-1 min-w-[200px]"
6774 >
68-
6975 < a
7076 href = { ConfigData . fdroid_url }
7177 target = "_blank"
7278 rel = "noopener noreferrer"
7379 className = "flex items-center gap-3 rounded-xl hover:bg-slate-50 dark:hover:bg-slate-700/50 transition-colors group"
7480 >
75- < img src = "/get-it-on-fdroid.png"
76- alt = "Get it on F-Droid" />
81+ < img
82+ src = "/get-it-on-fdroid.png"
83+ alt = "Get it on F-Droid"
84+ />
7785 </ a >
7886
7987 < a
8088 href = { ConfigData . playstore_url }
8189 target = "_blank"
8290 rel = "noopener noreferrer"
83- className = "flex items-center gap-3 rounded-xl hover:bg-slate-50 dark:hover:bg-slate-700/50 transition-colors group p-3 "
91+ className = "flex items-center gap-3 rounded-xl hover:bg-slate-50 dark:hover:bg-slate-700/50 transition-colors group"
8492 >
85- < img src = "/get-it-on-google-play.png"
86- alt = "Get it on Google Play" />
93+ < img
94+ src = "/get-it-on-google-play.png"
95+ alt = "Get it on Google Play"
96+ />
8797 </ a >
8898 </ motion . div >
8999 ) }
@@ -96,27 +106,27 @@ const Hero: React.FC = () => {
96106 href = "#showcase"
97107 className = "flex items-center justify-center gap-2 px-8 py-4 bg-white dark:bg-slate-800 text-slate-900 dark:text-white border border-slate-200 dark:border-slate-700 rounded-full font-bold hover:bg-slate-50 dark:hover:bg-slate-700 transition-all"
98108 >
99- { t ( ' hero_btn_features' ) }
109+ { t ( " hero_btn_features" ) }
100110 < ArrowRight size = { 20 } />
101111 </ motion . a >
102112 </ div >
103113
104114 < div className = "grid grid-cols-2 gap-4 text-sm text-slate-500 dark:text-slate-400" >
105115 < div className = "flex items-center gap-2" >
106116 < CircleCheck size = { 16 } className = "text-green-500" />
107- < span > { t ( ' hero_usp_offline' ) } </ span >
117+ < span > { t ( " hero_usp_offline" ) } </ span >
108118 </ div >
109119 < div className = "flex items-center gap-2" >
110120 < CircleCheck size = { 16 } className = "text-green-500" />
111- < span > { t ( ' hero_usp_privacy' ) } </ span >
121+ < span > { t ( " hero_usp_privacy" ) } </ span >
112122 </ div >
113123 < div className = "flex items-center gap-2" >
114124 < CircleCheck size = { 16 } className = "text-green-500" />
115- < span > { t ( ' hero_usp_no_account' ) } </ span >
125+ < span > { t ( " hero_usp_no_account" ) } </ span >
116126 </ div >
117127 < div className = "flex items-center gap-2" >
118128 < CircleCheck size = { 16 } className = "text-green-500" />
119- < span > { t ( ' hero_usp_dark_mode' ) } </ span >
129+ < span > { t ( " hero_usp_dark_mode" ) } </ span >
120130 </ div >
121131 </ div >
122132 </ motion . div >
@@ -152,8 +162,12 @@ const Hero: React.FC = () => {
152162 < CircleCheck size = { 20 } />
153163 </ div >
154164 < div >
155- < div className = "text-xs font-bold text-slate-500 uppercase" > { t ( 'phone_status' ) } </ div >
156- < div className = "font-bold text-slate-800 dark:text-white" > { t ( 'phone_status_val' ) } </ div >
165+ < div className = "text-xs font-bold text-slate-500 uppercase" >
166+ { t ( "phone_status" ) }
167+ </ div >
168+ < div className = "font-bold text-slate-800 dark:text-white" >
169+ { t ( "phone_status_val" ) }
170+ </ div >
157171 </ div >
158172 </ div >
159173 </ motion . div >
@@ -163,4 +177,4 @@ const Hero: React.FC = () => {
163177 ) ;
164178} ;
165179
166- export default Hero ;
180+ export default Hero ;
0 commit comments