new car added and added some new features to header location icon and again added show case section
@@ -2,7 +2,31 @@
|
||||
|
||||
import InnerProductcard from "@/components/cards/innerProductcard";
|
||||
import Title from "@/components/lib_components/title";
|
||||
import { avtogreyderlar, avtokran, avtominora, buldozerlar, cement_trucks, dizel, dumb_trucks, eks_yuklagichlar, forkliftlar, gazels, gildirakli_eks, katkalar, kompressorlar, mini_eks, minora, old_yuklagichlar, paletli_eks, paletli_kranlar, teleskop_yuklagichlar, trailers } from "@/data";
|
||||
import {
|
||||
asfalt,
|
||||
assenizator,
|
||||
avtogreyderlar,
|
||||
avtokran,
|
||||
avtominora,
|
||||
betonNasoslar,
|
||||
buldozerlar,
|
||||
cement_trucks,
|
||||
dumb_trucks,
|
||||
eks_yuklagichlar,
|
||||
evakuatorDemo,
|
||||
forkliftlar,
|
||||
gildirakli_eks,
|
||||
katkalar,
|
||||
manipulyator,
|
||||
mini_eks,
|
||||
minora,
|
||||
old_yuklagichlar,
|
||||
paletli_eks,
|
||||
shalandaTraller,
|
||||
teleskop_yuklagichlar,
|
||||
trailers,
|
||||
vodovoz,
|
||||
} from "@/data";
|
||||
import { useParams } from "next/navigation";
|
||||
|
||||
export default function CartType() {
|
||||
@@ -14,106 +38,143 @@ export default function CartType() {
|
||||
|
||||
{/* car type groups */}
|
||||
<div className="mt-10 grid lg:grid-cols-3 sm:grid-cols-2 grid-cols-1 gap-5 max-w-[1200px] w-full mx-auto">
|
||||
|
||||
{/* Avtosementavoz */}
|
||||
{carType === "cement-truck" && cement_trucks.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "cement-truck" &&
|
||||
cement_trucks.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Samasvallar */}
|
||||
{carType === "dumb-truck" && dumb_trucks.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "dumb-truck" &&
|
||||
dumb_trucks.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Traylerlar */}
|
||||
{carType === "trailers" && trailers.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
|
||||
{/* Gazellar */}
|
||||
{carType === "gazels" && gazels.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "trailers" &&
|
||||
trailers.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Avtominora */}
|
||||
{carType === "avtotowers" && avtominora.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "avtotowers" &&
|
||||
avtominora.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Avtokran */}
|
||||
{carType === "avtocranes" && avtokran.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "avtocranes" &&
|
||||
avtokran.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Minora kranlar */}
|
||||
{carType === "tower-cranes" && minora.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
|
||||
{/* Dizel ko'targichlar */}
|
||||
{carType === "lifters" && dizel.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
|
||||
{/* Paletli kranlar */}
|
||||
{carType === "crawler-cranes" && paletli_kranlar.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "tower-cranes" &&
|
||||
minora.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* old yuklagichlar */}
|
||||
{carType === "front-loaders" && old_yuklagichlar.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "front-loaders" &&
|
||||
old_yuklagichlar.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Teleskopik yuklagichlar */}
|
||||
{carType === "tele-loaders" && teleskop_yuklagichlar.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "tele-loaders" &&
|
||||
teleskop_yuklagichlar.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* forkliftlar */}
|
||||
{carType === "forklift-trucks" && forkliftlar.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "forklift-trucks" &&
|
||||
forkliftlar.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Paletli ekskavatorlar */}
|
||||
{carType === "crawler-excavators" && paletli_eks.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "crawler-excavators" &&
|
||||
paletli_eks.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* G'ildirakli ekskavatorlar */}
|
||||
{carType === "wheel-excavators" && gildirakli_eks.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "wheel-excavators" &&
|
||||
gildirakli_eks.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Mini-ekskavatorlar */}
|
||||
{carType === "mini-excavators" && mini_eks.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "mini-excavators" &&
|
||||
mini_eks.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* ekskavator yuklagichlar */}
|
||||
{carType === "excavator-loaders" && eks_yuklagichlar.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "excavator-loaders" &&
|
||||
eks_yuklagichlar.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* avtogreyderlar */}
|
||||
{carType === "avtograders" && avtogreyderlar.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "avtograders" &&
|
||||
avtogreyderlar.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Buldozerlar */}
|
||||
{carType === "buldozers" && buldozerlar.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "buldozers" &&
|
||||
buldozerlar.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Katkalar */}
|
||||
{carType === "katkas" && katkalar.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{carType === "katkas" &&
|
||||
katkalar.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* Kampressorlar */}
|
||||
{carType === "compressors" && kompressorlar.map((item)=>{
|
||||
return <InnerProductcard data={item} key={item.id} />
|
||||
})}
|
||||
{/* Evakuatorlar */}
|
||||
{carType === "evakuator" &&
|
||||
evakuatorDemo.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* shalanda */}
|
||||
{carType === "shalanda_traller" &&
|
||||
shalandaTraller.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* asfalt yotqizuvchi */}
|
||||
{carType === "asfalt_frez" &&
|
||||
asfalt.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* asfalt ko'chiruvchi */}
|
||||
{carType === "beton_nasos" &&
|
||||
betonNasoslar.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* manipulyator */}
|
||||
{carType === "manipulyator" &&
|
||||
manipulyator.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* vodovoz */}
|
||||
{carType === "vodovoz" &&
|
||||
vodovoz.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
|
||||
{/* assertizator */}
|
||||
{carType === "assenizator" &&
|
||||
assenizator.map((item) => {
|
||||
return <InnerProductcard data={item} key={item.id} />;
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -5,14 +5,13 @@ import Faq from "@/components/pageParts/faq";
|
||||
import Partners from "@/components/pageParts/partners";
|
||||
import Map from "@/components/pageParts/map";
|
||||
import CustomSlider from "@/components/pageParts/newsSlider";
|
||||
import Footer from "@/components/nav_foot/footer";
|
||||
import HeroSection from "@/components/pageParts/hero";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<div>
|
||||
<HeroSection/>
|
||||
<section id="products" className=" mb-10">
|
||||
<HeroSection />
|
||||
<section id="products" className="mt-5 mb-10">
|
||||
<Products />
|
||||
</section>
|
||||
<Texnika />
|
||||
@@ -22,7 +21,10 @@ export default function Home() {
|
||||
</section>
|
||||
<Faq />
|
||||
<Partners />
|
||||
<Map />
|
||||
<section id="map">
|
||||
<Map />
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
BIN
assets/assenizator5.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
assets/cranes/kran130.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
assets/cranes/kran30.jpg
Normal file
|
After Width: | Height: | Size: 186 KiB |
BIN
assets/cranes/kran50.jpg
Normal file
|
After Width: | Height: | Size: 231 KiB |
BIN
assets/cranes/kran75.jpg
Normal file
|
After Width: | Height: | Size: 242 KiB |
BIN
assets/cranes/manipulyator7.jpg
Normal file
|
After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 11 KiB |
BIN
assets/details/cranes/all_cranes.jpg
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
assets/details/cranes/avtolift28.jpg
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
assets/details/cranes/avtolift53.jpg
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
assets/details/cranes/avtolift63.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
assets/details/cranes/avtovishka28.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
assets/details/cranes/avtovishka36.jpg
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
assets/details/cranes/avtovishka45.jpg
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
assets/details/cranes/avtovishka60.jpg
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
assets/details/cranes/avtovishka75.jpg
Normal file
|
After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 10 KiB |
BIN
assets/details/excavators/excavator.jpg
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
assets/details/excavators/excavator_mini1.jpg
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
assets/details/excavators/excavator_mini2.jpg
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
assets/details/loaders/avtogreyder.jpg
Normal file
|
After Width: | Height: | Size: 156 KiB |
BIN
assets/details/loaders/teleskopik_bobkat.jpg
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
assets/details/loaders/teleskopik_jcb.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
assets/details/loaders/teleskopik_katta.jpg
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
assets/details/loaders/teleskopik_manitau.jpg
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
assets/details/old_yuklagich18kub.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
assets/details/old_yuklagich3.jpg
Normal file
|
After Width: | Height: | Size: 209 KiB |
BIN
assets/details/old_yuklagich_mini1.jpg
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
assets/details/old_yuklagich_mini2.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 9.6 KiB |
BIN
assets/details/roaders/katok10.jpg
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
assets/details/roaders/katok20.jpg
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
assets/details/roaders/katok3.jpg
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
assets/details/roaders/katok4.jpg
Normal file
|
After Width: | Height: | Size: 209 KiB |
BIN
assets/details/roaders/katok6.jpg
Normal file
|
After Width: | Height: | Size: 205 KiB |
BIN
assets/details/roaders/pnevka_katok16.jpg
Normal file
|
After Width: | Height: | Size: 178 KiB |
BIN
assets/details/roaders/pnevka_katok4.jpg
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
assets/details/trucks/beton_nasos.jpg
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
assets/evakuator/evakuator_20_tonna.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
assets/evakuator/evakuator_5_tonna.jpg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
assets/evakuator/evakuator_fura.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
assets/evakuator/shalanda.jpg
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
assets/evakuator/traller.jpg
Normal file
|
After Width: | Height: | Size: 80 KiB |
@@ -75,12 +75,20 @@ export {default as Kranminora1} from './details/cranes/1-1.png';
|
||||
export {default as Kranminora2} from './details/cranes/1-4.png';
|
||||
export {default as Kranminora3} from './details/cranes/1-3.png';
|
||||
export {default as Kranmexanik1} from './details/cranes/1-2.png';
|
||||
export {default as Avtolift28} from './details/cranes/avtolift28.jpg';
|
||||
export {default as Avtolift53} from './details/cranes/avtolift53.jpg';
|
||||
export {default as Avtolift63} from './details/cranes/avtolift63.jpg';
|
||||
export {default as Avtovishka28} from './details/cranes/avtovishka28.jpg';
|
||||
export {default as Avtovishka36} from './details/cranes/avtovishka36.jpg';
|
||||
export {default as Avtovishka45} from './details/cranes/avtovishka45.jpg';
|
||||
export {default as Avtovishka60} from './details/cranes/avtovishka60.jpg';
|
||||
export {default as Avtovishka75} from './details/cranes/avtovishka75.jpg';
|
||||
|
||||
// products avtokranlar images
|
||||
export {default as Avtokran1} from './details/cranes/2-1.png';
|
||||
export {default as Avtokran2} from './details/cranes/2-2.png';
|
||||
export {default as Avtokran3} from './details/cranes/2-3.webp';
|
||||
export {default as Avtokran4} from './details/cranes/2-4.webp';
|
||||
export {default as Kran30} from './cranes/kran30.jpg';
|
||||
export {default as Kran50} from './cranes/kran50.jpg';
|
||||
export {default as Kran75} from './cranes/kran75.jpg';
|
||||
export {default as Kran130} from './cranes/kran130.jpg';
|
||||
|
||||
// products paletli kran images
|
||||
export {default as Palet1} from './details/cranes/3-1.png';
|
||||
@@ -92,6 +100,7 @@ export {default as Minora1} from './details/cranes/4-1.png';
|
||||
export {default as Minora2} from './details/cranes/4-3.png';
|
||||
export {default as Minora3} from './details/cranes/4-5.jpg';
|
||||
export {default as Minora4} from './details/cranes/4-6.jpg';
|
||||
export {default as All_cranes} from './details/cranes/all_cranes.jpg';
|
||||
|
||||
// products dizel kotargich images
|
||||
export {default as Dizel1} from './details/cranes/5-1.png';
|
||||
@@ -111,9 +120,14 @@ export {default as Old4} from './details/loaders/1-4.png';
|
||||
export {default as Old5} from './details/loaders/1-5.webp';
|
||||
export {default as Old6} from './details/loaders/1-6.webp';
|
||||
export {default as Old7} from './details/loaders/1-7.webp';
|
||||
export {default as Tel1} from './details/loaders/2-1.png';
|
||||
export {default as Tel2} from './details/loaders/2-2.jpg';
|
||||
export {default as Tel3} from './details/loaders/2-4.png';
|
||||
export {default as Old_yuklagich_biru8} from './details/old_yuklagich18kub.jpg';
|
||||
export {default as Old_yuklagich_3} from './details/old_yuklagich3.jpg';
|
||||
export {default as Old_yuklagich_mini1} from './details/old_yuklagich_mini1.jpg';
|
||||
export {default as Old_yuklagich_mini2} from './details/old_yuklagich_mini2.jpg';
|
||||
export {default as Tel1} from './details/loaders/teleskopik_manitau.jpg';
|
||||
export {default as Tel2} from './details/loaders/teleskopik_bobkat.jpg';
|
||||
export {default as Tel3} from './details/loaders/teleskopik_katta.jpg';
|
||||
export {default as Tel4} from './details/loaders/teleskopik_jcb.jpg'
|
||||
export {default as Fork1} from './details/loaders/3-1.png';
|
||||
export {default as Fork2} from './details/loaders/3-2.jpeg';
|
||||
export {default as Fork3} from './details/loaders/3-3.webp';
|
||||
@@ -133,11 +147,11 @@ export {default as Digger} from './excavators/digger.png';
|
||||
// products Paletli of ekskavator images
|
||||
export {default as Paletli1} from './details/excavators/1-1.png';
|
||||
export {default as Paletli2} from './details/excavators/1-2.png';
|
||||
export {default as Balon1} from './details/excavators/2-1.png';
|
||||
export {default as Balon2} from './details/excavators/2-2.png';
|
||||
export {default as Balon1} from './details/excavators/excavator_mini1.jpg';
|
||||
export {default as Balon2} from './details/excavators/excavator_mini2.jpg';
|
||||
export {default as Mini1} from './details/excavators/3-1.png';
|
||||
export {default as Mini2} from './details/excavators/3-2.png';
|
||||
export {default as Digger1} from './details/excavators/4-1.png';
|
||||
export {default as Digger1} from './details/excavators/excavator.jpg';
|
||||
export {default as Digger2} from './details/excavators/4-2.png';
|
||||
export {default as Digger3} from './details/excavators/4-3.png';
|
||||
|
||||
@@ -145,20 +159,46 @@ export {default as Digger3} from './details/excavators/4-3.png';
|
||||
export {default as Grayder} from './roders/avtogreyder.png';
|
||||
export {default as Buldozer} from './roders/buldozer.png';
|
||||
export {default as Kat} from './roders/kat.png';
|
||||
export {default as Kompressor} from './roders/kompressor.png';
|
||||
export {default as Evakuator} from './evakuator/evakuator_fura.jpg';
|
||||
|
||||
// avtograyder , buldozer , katka , kampressor
|
||||
export {default as Grayder1} from './details/roaders/1-1.png';
|
||||
export {default as Grayder1} from './details/loaders/avtogreyder.jpg';
|
||||
export {default as Grayder2} from './details/roaders/1-2.png';
|
||||
export {default as Grayder3} from './details/roaders/1-3.png';
|
||||
export {default as Buldozer1} from './details/roaders/2-1.png';
|
||||
export {default as Buldozer2} from './details/roaders/2-2.png';
|
||||
export {default as Buldozer3} from './details/roaders/2-3.png';
|
||||
export {default as Katka1} from './details/roaders/3-1.png';
|
||||
export {default as Katka2} from './details/roaders/3-2.png';
|
||||
export {default as Kampressor1} from './details/roaders/4-1.png';
|
||||
export {default as Kampressor2} from './details/roaders/4-3.png';
|
||||
export {default as Kampressor3} from './details/roaders/4-5.png';
|
||||
export {default as Katok3} from './details/roaders/katok3.jpg';
|
||||
export {default as Katok4} from './details/roaders/katok4.jpg';
|
||||
export {default as Katok6} from './details/roaders/katok6.jpg';
|
||||
export {default as Katok10} from './details/roaders/katok10.jpg';
|
||||
export {default as Katok20} from './details/roaders/katok20.jpg';
|
||||
export {default as Pnevka_Katok4} from './details/roaders/pnevka_katok4.jpg';
|
||||
export {default as Pnevka_Katok16} from './details/roaders/pnevka_katok16.jpg';
|
||||
export {default as Evakuator5} from './evakuator/evakuator_5_tonna.jpg';
|
||||
export {default as Evakuator20} from './evakuator/evakuator_20_tonna.jpg';
|
||||
export {default as EvakuatorGruzavoy} from './evakuator/evakuator_fura.jpg';
|
||||
|
||||
// shalanda
|
||||
export {default as Shalanda} from './evakuator/shalanda.jpg';
|
||||
export {default as Traller} from './evakuator/traller.jpg';
|
||||
|
||||
// asfalt
|
||||
export { default as Aspal_800} from './roders/aspal800.jpg';
|
||||
export {default as Aspal_1800} from './roders/aspal1800.jpg';
|
||||
export {default as Aspal_k} from './roders/aspal_k.jpg'
|
||||
|
||||
// beton nasos
|
||||
export {default as Beton_nasos} from './details/trucks/beton_nasos.jpg'
|
||||
|
||||
// vodovoz
|
||||
export {default as Vodovoz} from './vodavoz6.jpg';
|
||||
|
||||
// assenizator
|
||||
export {default as Assenizator} from './assenizator5.jpg';
|
||||
|
||||
// manipulyator
|
||||
export {default as Manipulyator} from './cranes/manipulyator7.jpg';
|
||||
|
||||
// avto brands
|
||||
export {default as Gehl} from './brands/gehl.png'
|
||||
|
||||
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 13 KiB |
BIN
assets/roders/aspal1800.jpg
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
assets/roders/aspal800.jpg
Normal file
|
After Width: | Height: | Size: 79 KiB |
BIN
assets/roders/aspal_k.jpg
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
assets/vodavoz6.jpg
Normal file
|
After Width: | Height: | Size: 112 KiB |
@@ -24,12 +24,12 @@ export default function InnerProductcard({ data }: { data: innerCardTypes }) {
|
||||
boxShadow: "0px 0px 15px rgba(0,0,0,0.1)",
|
||||
}}
|
||||
whileTap={{ scale: 0.97 }}
|
||||
className="rounded-lg overflow-hidden bg-white transition-all"
|
||||
className="h-[420px] rounded-lg overflow-hidden bg-white transition-all"
|
||||
>
|
||||
<Link
|
||||
href={`/${route.lang}/${route.carType}/${data.name}`}
|
||||
onClick={() => setDetail(data)}
|
||||
className="flex flex-col items-center justify-between rounded-lg hover:cursor-pointer"
|
||||
className="h-full flex flex-col items-center justify-between rounded-lg hover:cursor-pointer"
|
||||
>
|
||||
{/* Rasm qismi */}
|
||||
<div className="rounded-t-lg bg-white">
|
||||
|
||||
@@ -17,34 +17,37 @@ export default function ProductCard({ data }: { data: ProductTypes }) {
|
||||
viewport={{ once: true, amount: 0.2 }}
|
||||
transition={{ duration: 0.3, ease: "easeOut" }}
|
||||
whileHover={{
|
||||
scale: 1.05,
|
||||
boxShadow: "0px 0px 15px rgba(0,0,0,0.1)",
|
||||
boxShadow: "0px 0px 15px rgba(0,0,0,0.8)",
|
||||
}}
|
||||
whileTap={{ scale: 0.98 }}
|
||||
className="rounded-xl border-2 border-primary h-[430px]"
|
||||
>
|
||||
<Link
|
||||
href={`/${lang}/${data.path}`}
|
||||
className="h-[400px] flex flex-col items-center justify-between rounded-lg bg-white transition-transform"
|
||||
className="h-full flex flex-col items-center justify-between rounded-lg bg-white transition-transform"
|
||||
>
|
||||
{/* Yuqori qism - rasm */}
|
||||
<div className="rounded-t-lg bg-white py-10 px-2 flex justify-center items-center">
|
||||
<Image
|
||||
src={data.image}
|
||||
alt={data.truck_name}
|
||||
width={200}
|
||||
width={260}
|
||||
height={200}
|
||||
className="object-contain max-h-[200px] h-full"
|
||||
className="object-contain max-h-[200px] h-full rounded-xl"
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Pastki qism - matn */}
|
||||
<div className="bg-[#fafafa] w-full py-5 rounded-b-lg flex flex-col items-center justify-center space-y-1">
|
||||
<div className="font-medium text-gray-800 text-lg text-center">
|
||||
<div className="font-medium text-primary text-xl text-center">
|
||||
<Text txt={data.truck_name} />
|
||||
</div>
|
||||
<div className="text-secondary text-sm text-center">
|
||||
<div className="text-secondary text-md font-extrabold text-center">
|
||||
<Text txt={data.desc} />
|
||||
</div>
|
||||
<div className="text-center text-secondary bg-primary max-w-[200px] w-full rounded-xl text-lg py-2 hover:cursor-pointer">
|
||||
<Text txt="more" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</motion.div>
|
||||
|
||||
@@ -2,64 +2,115 @@
|
||||
|
||||
import React, { useEffect, useRef } from "react";
|
||||
|
||||
interface YandexMapProps {
|
||||
interface GoogleMapProps {
|
||||
lat?: number;
|
||||
lng?: number;
|
||||
zoom?: number;
|
||||
}
|
||||
|
||||
export default function YandexMap({
|
||||
export default function GoogleMap({
|
||||
lat = 41.263731,
|
||||
lng = 69.219434,
|
||||
zoom = 12,
|
||||
}: YandexMapProps) {
|
||||
const mapRef = useRef<HTMLDivElement>(null);
|
||||
zoom = 17,
|
||||
}: GoogleMapProps) {
|
||||
const mapRef = useRef<HTMLDivElement | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
// Yandex Map scriptini dinamik yuklash
|
||||
if (!window.ymaps) {
|
||||
let map: google.maps.Map | null = null;
|
||||
let marker: google.maps.Marker | null = null;
|
||||
|
||||
// 🔹 Google script yuklash funksiyasi
|
||||
function loadGoogleMapsScript(callback: () => void) {
|
||||
if (typeof window.google === "object" && window.google.maps) {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
const existingScript = document.getElementById("googleMaps");
|
||||
if (existingScript) {
|
||||
existingScript.addEventListener("load", callback);
|
||||
return;
|
||||
}
|
||||
|
||||
const script = document.createElement("script");
|
||||
script.src = "https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=5169ae9d-529a-43f8-9cb1-30e1a3360dac";
|
||||
script.id = "googleMaps";
|
||||
script.src = `https://maps.googleapis.com/maps/api/js?key=AIzaSyCiq6iQrcZX6jJMkK_8eT56IeeZDY0LUYo`;
|
||||
script.async = true;
|
||||
script.onload = () => initMap();
|
||||
script.defer = true;
|
||||
script.onload = callback;
|
||||
document.body.appendChild(script);
|
||||
} else {
|
||||
initMap();
|
||||
}
|
||||
|
||||
// 🔹 Google Mapni ishga tushirish
|
||||
function initMap() {
|
||||
if (!mapRef.current || !window.ymaps) return;
|
||||
if (!mapRef.current || !window.google) return;
|
||||
|
||||
window.ymaps.ready(() => {
|
||||
const map = new window.ymaps.Map(mapRef.current!, {
|
||||
center: [lat, lng],
|
||||
zoom,
|
||||
controls: ["zoomControl", "typeSelector", "fullscreenControl"],
|
||||
});
|
||||
map = new window.google.maps.Map(mapRef.current, {
|
||||
center: { lat, lng },
|
||||
zoom,
|
||||
mapTypeControl: false,
|
||||
streetViewControl: false,
|
||||
fullscreenControl: true,
|
||||
});
|
||||
|
||||
const placemark = new window.ymaps.Placemark(
|
||||
[lat, lng],
|
||||
{
|
||||
balloonContent: `
|
||||
<div style="font-size:14px">
|
||||
<b>Bizning joylashuv:</b><br/>
|
||||
Toshkent sh., Mustaqillik maydoni<br/>
|
||||
<a href="https://yandex.uz/maps/?ll=${lng}%2C${lat}&z=14" target="_blank">Yandex xaritada ochish</a>
|
||||
</div>
|
||||
`,
|
||||
},
|
||||
{
|
||||
iconColor: "#ff0000",
|
||||
draggable: false,
|
||||
}
|
||||
);
|
||||
// 🔸 Custom marker (svg yoki png)
|
||||
marker = new window.google.maps.Marker({
|
||||
position: { lat, lng },
|
||||
map,
|
||||
title: "Bizning joylashuv",
|
||||
icon: {
|
||||
url: "/custom-marker.svg", // 📍 custom icon
|
||||
scaledSize: new window.google.maps.Size(45, 45),
|
||||
anchor: new window.google.maps.Point(22, 45),
|
||||
},
|
||||
});
|
||||
|
||||
map.geoObjects.add(placemark);
|
||||
// 🔸 Marker click eventi
|
||||
marker.addListener("click", () => {
|
||||
console.log("Marker clicked!");
|
||||
new window.google.maps.InfoWindow({
|
||||
content: `
|
||||
<div style="font-size:14px; line-height:1.5;">
|
||||
<b>Bizning joylashuv:</b><br/>
|
||||
Toshkent sh., Mustaqillik maydoni<br/>
|
||||
<a href="https://www.google.com/maps?q=${lat},${lng}" target="_blank">Google xaritada ochish</a>
|
||||
</div>
|
||||
`,
|
||||
}).open(map!, marker!);
|
||||
});
|
||||
|
||||
// 🔸 Xarita ustida click qilinsa
|
||||
map.addListener("click", (event: google.maps.MapMouseEvent) => {
|
||||
if (!event.latLng) return;
|
||||
const coords = event.latLng.toJSON();
|
||||
console.log("Map clicked at:", coords);
|
||||
|
||||
// Markazni o‘zgartirish
|
||||
map!.setCenter(coords);
|
||||
|
||||
// Zoomni saqlab qolish (setZoom ishlatish mumkin)
|
||||
const currentZoom = map!.getZoom() ?? 17;
|
||||
map!.setZoom(currentZoom);
|
||||
|
||||
// Marker joyini o‘zgartirish
|
||||
marker!.setPosition(coords);
|
||||
});
|
||||
}
|
||||
|
||||
// 🔹 Scriptni yuklash
|
||||
loadGoogleMapsScript(initMap);
|
||||
|
||||
return () => {
|
||||
// tozalash
|
||||
if (map) map = null;
|
||||
if (marker) marker = null;
|
||||
};
|
||||
}, [lat, lng, zoom]);
|
||||
|
||||
return (
|
||||
<div className="w-full h-[500px] rounded-lg shadow-md overflow-hidden" ref={mapRef}></div>
|
||||
<div
|
||||
ref={mapRef}
|
||||
className="w-full h-[400px] rounded-lg shadow-md overflow-hidden"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { FaLocationDot } from "react-icons/fa6";
|
||||
import Text from "../lib_components/text";
|
||||
|
||||
export default function Header() {
|
||||
return (
|
||||
@@ -7,12 +8,21 @@ export default function Header() {
|
||||
className="bg-primary py-3 flex items-center sm:justify-around justify-center px-4"
|
||||
>
|
||||
<div className="max-w-[1500px] w-full mx-auto flex items-center sm:justify-between justify-center gap-4 flex-wrap ">
|
||||
|
||||
<div className="flex justify-center items-center text-white max-w-[250px] w-full ">
|
||||
<div className="flex justify-center items-center gap-2 text-white max-w-[250px] w-full ">
|
||||
Uzbekistan , Tashkent
|
||||
<span className="text-[#f2a01c] text-[20px]">
|
||||
<a href="#map" className="text-[#f2a01c] text-[20px]">
|
||||
<FaLocationDot />
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-col items-center justify-center">
|
||||
<div className="text-white text-lg">
|
||||
<Text txt="work_day_title" />
|
||||
</div>
|
||||
<div className="text-secondary text-xl">
|
||||
<Text txt="work_day" />
|
||||
</div>
|
||||
<p className="text-xl text-secondary">24/7</p>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
@@ -24,7 +34,6 @@ export default function Header() {
|
||||
+998 33 252 00 00
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -2,53 +2,51 @@
|
||||
|
||||
import { motion } from "framer-motion";
|
||||
import Image from "next/image";
|
||||
import Text from "../lib_components/text";
|
||||
|
||||
export default function HeroSection() {
|
||||
return (
|
||||
<section
|
||||
dir="ltr"
|
||||
className="relative w-full md:h-[300px] max-md:py-10 max-lg:px-2 overflow-hidden flex items-center justify-center"
|
||||
className="relative w-full md:h-[500px] max-md:py-10 max-lg:px-2 overflow-hidden flex items-center justify-between"
|
||||
>
|
||||
<Image
|
||||
{/* <Image
|
||||
src="/hero2.jpg" // public papkaga rasm joylash (masalan, texnika rasmi)
|
||||
alt="SpetsTexnika"
|
||||
width={800}
|
||||
height={400}
|
||||
className="object-contain rounded-3xl"
|
||||
/>
|
||||
|
||||
/> */}
|
||||
|
||||
{/* Asosiy kontent */}
|
||||
{/* <div className="relative z-20 max-w-6xl mx-auto md:px-6 px-3 text-primary flex flex-col md:flex-row items-center gap-5 justify-between">
|
||||
<div className="absolute inset-0 z-10">
|
||||
<Image
|
||||
src="/hero2.jpg" // public papkaga rasm joylash (masalan, texnika rasmi)
|
||||
alt="SpetsTexnika"
|
||||
fill
|
||||
className="object-cover opacity-30"
|
||||
priority
|
||||
/>
|
||||
</div>
|
||||
{/* <div className="absolute inset-0 -z-10 mx-auto w-full h-full">
|
||||
<Image
|
||||
src="/2.jpg"
|
||||
alt="SpetsTexnika"
|
||||
fill
|
||||
className="object-cover"
|
||||
priority
|
||||
/>
|
||||
</div> */}
|
||||
|
||||
Chap tomondagi matn
|
||||
<div className="relative z-20 max-w-7xl w-full mx-auto md:px-6 px-3 text-primary flex flex-col md:flex-row items-center gap-5 justify-between">
|
||||
{/* Chap tomondagi matn */}
|
||||
<motion.div
|
||||
className="space-y-6 max-w-xl"
|
||||
className="space-y-3 max-w-xl backdrop-blur-3xl bg-[#ffffff4a] rounded-xl py-6 px-4"
|
||||
initial={{ opacity: 0, x: -60 }}
|
||||
animate={{ opacity: 1, x: 0 }}
|
||||
transition={{ duration: 0.8, ease: "easeOut" }}
|
||||
>
|
||||
<h1 className="text-2xl lg:text-4xl font-extrabold leading-tight">
|
||||
Ishonchli <span className="text-yellow-400">SpesTexnika</span> —
|
||||
sizning loyihangiz uchun eng yaxshi tanlov!
|
||||
</h1>
|
||||
<div className="text-2xl lg:text-4xl font-extrabold leading-tight text-primary">
|
||||
<Text txt="hero_title"/>
|
||||
</div>
|
||||
|
||||
<p className="text-lg text-gray-600">
|
||||
Biz eng so‘nggi texnikalar, maxsus transportlar va qurilish
|
||||
uskunalarini qulay narxda taqdim etamiz.
|
||||
</p>
|
||||
<div className="text-xl font-medium text-secondary">
|
||||
<Text txt="hero_desc"/>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
O‘ng tomondagi texnika rasmi
|
||||
{/* O‘ng tomondagi texnika rasmi */}
|
||||
<motion.div
|
||||
className="hidden md:block"
|
||||
initial={{ opacity: 0, x: 80 }}
|
||||
@@ -63,7 +61,7 @@ export default function HeroSection() {
|
||||
className="drop-shadow-2xl rounded-xl"
|
||||
/>
|
||||
</motion.div>
|
||||
</div> */}
|
||||
</div>
|
||||
|
||||
{/* Pastdagi to‘lqinli animatsiya (dekor) */}
|
||||
{/* <motion.div
|
||||
|
||||
@@ -18,23 +18,23 @@ export default function Map() {
|
||||
<div className="text-left flex w-full justify-start">
|
||||
<Title text="contacts" />
|
||||
</div>
|
||||
<div className="flex items-center justify-start gap-2 text-gray-500 text-[20px] ">
|
||||
<div className="flex items-center justify-start gap-2 text-gray-500 text-[18px] ">
|
||||
<span className="text-secondary">
|
||||
<FaPhoneAlt />
|
||||
</span>
|
||||
+998 33 252-00-00
|
||||
</div>
|
||||
<div className="flex items-center justify-start gap-2 text-gray-500 text-[20px] ">
|
||||
<div className="flex items-center justify-start gap-2 text-gray-500 text-[18px] ">
|
||||
<span className="text-secondary">
|
||||
<FaTelegram />
|
||||
</span>
|
||||
spes-texnika
|
||||
</div>
|
||||
<div className="flex items-center justify-start gap-2 text-gray-500 text-[20px] ">
|
||||
<div className="flex items-center justify-start gap-2 text-gray-500 text-[18px] ">
|
||||
<span className="text-secondary">
|
||||
<BiTargetLock />
|
||||
</span>
|
||||
Yakkasaroy , Toshkent
|
||||
Toshkent , Yakkasaroy , Xushtepa 6
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -26,30 +26,30 @@ const productFilterTypesMainPage: productFilterTypes[] = [
|
||||
];
|
||||
|
||||
export default function Products() {
|
||||
const [productFilter, setProductFilter] = useState<string | null>(null);
|
||||
//const [productFilter, setProductFilter] = useState<string | null>(null);
|
||||
|
||||
const [cars, setCars] = useState(allProducts);
|
||||
|
||||
// execute filetr function
|
||||
useEffect(() => {
|
||||
if (productFilter === "trucks") {
|
||||
setCars(trucks);
|
||||
} else if (productFilter === "cranes") {
|
||||
setCars(cranes);
|
||||
} else if (productFilter === "forklift-trucks") {
|
||||
setCars(forklift);
|
||||
} else if (productFilter === "excavators") {
|
||||
setCars(excavators);
|
||||
} else if (productFilter === "road-repairs") {
|
||||
setCars(road_repairs);
|
||||
} else {
|
||||
setCars(allProducts);
|
||||
}
|
||||
}, [productFilter]);
|
||||
// useEffect(() => {
|
||||
// if (productFilter === "trucks") {
|
||||
// setCars(trucks);
|
||||
// } else if (productFilter === "cranes") {
|
||||
// setCars(cranes);
|
||||
// } else if (productFilter === "forklift-trucks") {
|
||||
// setCars(forklift);
|
||||
// } else if (productFilter === "excavators") {
|
||||
// setCars(excavators);
|
||||
// } else if (productFilter === "road-repairs") {
|
||||
// setCars(road_repairs);
|
||||
// } else {
|
||||
// setCars(allProducts);
|
||||
// }
|
||||
// }, [productFilter]);
|
||||
return (
|
||||
<div dir="ltr" className="max-w-[1200px] w-full mx-auto">
|
||||
{/* title part */}
|
||||
<div className="flex flex-col">
|
||||
<div className="flex flex-col mb-10">
|
||||
<div className="flex items-center justify-center w-full ">
|
||||
<div className="text-secondary px-2 text-[18px] font-semibold ">
|
||||
<Text txt="katalog" />
|
||||
@@ -59,7 +59,7 @@ export default function Products() {
|
||||
</div>
|
||||
|
||||
{/* product filters */}
|
||||
<div className="flex flex-wrap gap-1 gap-y-4 items-center justify-center mb-10 ">
|
||||
{/* <div className="flex flex-wrap gap-1 gap-y-4 items-center justify-center mb-10 ">
|
||||
{productFilterTypesMainPage.map((item, index) => (
|
||||
<button
|
||||
key={index}
|
||||
@@ -80,7 +80,7 @@ export default function Products() {
|
||||
)}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
</div> */}
|
||||
|
||||
{/* products */}
|
||||
<div className="px-4 grid gap-5 grid-cols-1 place-content-center min-[500px]:grid-cols-2 min-lg:grid-cols-4 min-[1210px]:grid-cols-4">
|
||||
|
||||
851
data/index.ts
BIN
public/beton_nasos.jpg
Normal file
|
After Width: | Height: | Size: 69 KiB |
6
public/custom-marker.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg width="45" height="45" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="32" cy="32" r="18" fill="#FF3B30"></circle>
|
||||
<circle cx="32" cy="32" r="10" fill="white"></circle>
|
||||
<circle cx="32" cy="32" r="6" fill="#FF3B30"></circle>
|
||||
<path d="M32 62C32 62 52 42 52 28C52 16.9543 43.0457 8 32 8C20.9543 8 12 16.9543 12 28C12 42 32 62 32 62Z" fill="#FF3B30"></path>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 406 B |
@@ -194,5 +194,17 @@
|
||||
"siqish": "Давление сжатия",
|
||||
"havo": "Ёмкость воздуха",
|
||||
"kompressor_sig": "Объём компрессора",
|
||||
"katalog": "Познакомьтесь с каталогом"
|
||||
"katalog": "Познакомьтесь с каталогом",
|
||||
"work_day_title": "Рабочие дни:",
|
||||
"work_day": "Понедельник–Воскресенье",
|
||||
"hero_title": "Надёжная спецтехника — лучший выбор для вашего проекта!",
|
||||
"hero_desc": "Мы предлагаем новейшую технику, специализированный транспорт и строительное оборудование по выгодной цене.",
|
||||
"shalanda_traller": "Шаланда и Траллеры",
|
||||
"evakuator": "Эвакуаторы",
|
||||
"asfalt_yotqizuvchi": "Асфальтоукладчик",
|
||||
"asfalt_kochiruvchi": "Асфальтоперегружатель",
|
||||
"beton_nasos": "Бетононасосы",
|
||||
"vodovoz": "Водовоз",
|
||||
"assenizator": "Ассенизатор",
|
||||
"manipulyator": "Манипулятор"
|
||||
}
|
||||
|
||||
@@ -196,5 +196,17 @@
|
||||
"siqish": "Siqish bosimi",
|
||||
"havo": "Havo sig‘imi",
|
||||
"kompressor_sig": "Kompressor sig‘imi",
|
||||
"katalog": "Katalog bilan tanishing"
|
||||
"katalog": "Katalog bilan tanishing",
|
||||
"work_day_title": "Ish kunlari:",
|
||||
"work_day": "Dushanba-Yakshanba",
|
||||
"hero_title": "Ishonchli SpesTexnika — sizning loyihangiz uchun eng yaxshi tanlov!",
|
||||
"hero_desc": "Biz eng so‘nggi texnikalar, maxsus transportlar va qurilish uskunalarini qulay narxda taqdim etamiz.",
|
||||
"shalanda_traller": "Shalanda va Trallerlar",
|
||||
"evakuator": "Evakuatorlar",
|
||||
"asfalt_yotqizuvchi": "Asfalt yotqizuvchi mashina",
|
||||
"asfalt_kochiruvchi": "Asfalt ko‘chiruvchi mashina",
|
||||
"beton_nasos": "Beton nasos mashinalari",
|
||||
"vodovoz":"Vodovoz",
|
||||
"assenizator":"Assenizator",
|
||||
"manipulyator":"Manipulyator"
|
||||
}
|
||||
|
||||
6
public/location.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg width="45" height="45" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="32" cy="32" r="18" fill="#FF3B30"></circle>
|
||||
<circle cx="32" cy="32" r="10" fill="white"></circle>
|
||||
<circle cx="32" cy="32" r="6" fill="#FF3B30"></circle>
|
||||
<path d="M32 62C32 62 52 42 52 28C52 16.9543 43.0457 8 32 8C20.9543 8 12 16.9543 12 28C12 42 32 62 32 62Z" fill="#FF3B30"></path>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 406 B |
117
types/index.ts
@@ -9,29 +9,29 @@ export interface TitleType {
|
||||
|
||||
export interface productFilterTypes {
|
||||
name: string;
|
||||
image: StaticImageData|string;
|
||||
image: StaticImageData | string;
|
||||
}
|
||||
|
||||
export interface MainProductCard{
|
||||
uzunlik?:string;
|
||||
kenglik?:string;
|
||||
balandlik?:String;
|
||||
yukqob?:String;
|
||||
makBalandlik?:string;
|
||||
export interface MainProductCard {
|
||||
uzunlik?: string;
|
||||
kenglik?: string;
|
||||
balandlik?: String;
|
||||
yukqob?: String;
|
||||
makBalandlik?: string;
|
||||
}
|
||||
|
||||
export interface ProductCardType extends MainProductCard{
|
||||
image?:StaticImageData[];
|
||||
title?:string;
|
||||
y_turi?:string;
|
||||
hajmi?:string;
|
||||
tezlik?:string;
|
||||
interkuler?:string;
|
||||
quvvat?:string;
|
||||
quti?:string;
|
||||
turboDizel?:string;
|
||||
ogirlig?:string;
|
||||
bomUzunlik?:string;
|
||||
export interface ProductCardType extends MainProductCard {
|
||||
image?: StaticImageData[];
|
||||
title?: string;
|
||||
y_turi?: string;
|
||||
hajmi?: string;
|
||||
tezlik?: string;
|
||||
interkuler?: string;
|
||||
quvvat?: string;
|
||||
quti?: string;
|
||||
turboDizel?: string;
|
||||
ogirlig?: string;
|
||||
bomUzunlik?: string;
|
||||
}
|
||||
|
||||
export interface ProductTypes {
|
||||
@@ -50,34 +50,55 @@ export interface innerCardTypes {
|
||||
price?: number;
|
||||
path: string;
|
||||
|
||||
// 🧩 Qo‘shimcha umumiy texnik xususiyatlar
|
||||
weight_kg?: number; // Og‘irligi (kg)
|
||||
maxLength_m?: number; // Maksimum uzunligi (m)
|
||||
maxHeight_m?: number; // Maksimum balandligi (m)
|
||||
capacity_tons?: number; // Yuk ko‘tarish qobiliyati (tonna)
|
||||
capacity_kg?: number; // Yuk ko‘tarish qobiliyati (kg)
|
||||
fuelType?: string; // Yoqilg‘i turi
|
||||
tankVolume_m3?: number; // Tank hajmi (m³)
|
||||
maxSpeed_kmh?: number; // Maksimum tezligi (km/soat)
|
||||
intercooler?: string; // Interkuler bor/yo‘q
|
||||
enginePower_hp?: string; // Dvigatel quvvati (ot kuchi)
|
||||
transmission?: string; // O‘tkazmalar qutisi turi
|
||||
bom?:number; // Minora kranlar bom uzunligi
|
||||
qazish?:number; // ekskavator qazish chuqurligi
|
||||
pichoq?:number; // avtogreyder pichoq uzunligi
|
||||
zichlash?:number; // katka asfalt zichlovchi
|
||||
siqish?:number; // kampressor siqish bosimi
|
||||
havo?:number; // kampressor havo sig'imi
|
||||
kompressor_sig?:number; // kampressor sig'imi
|
||||
// 🧩 Umumiy texnik xususiyatlar
|
||||
weight_kg?: number; // Og‘irligi (kg)
|
||||
maxLength_m?: number; // Maksimum uzunligi (m)
|
||||
maxHeight_m?: number; // Maksimum balandligi (m)
|
||||
capacity_tons?: number; // Yuk ko‘tarish qobiliyati (tonna)
|
||||
capacity_kg?: number; // Yuk ko‘tarish qobiliyati (kg)
|
||||
fuelType?: string; // Yoqilg‘i turi
|
||||
tankVolume_m3?: number; // Tank hajmi (m³)
|
||||
maxSpeed_kmh?: number; // Maksimum tezligi (km/soat)
|
||||
intercooler?: string; // Interkuler bor/yo‘q
|
||||
enginePower_hp?: string; // Dvigatel quvvati (ot kuchi)
|
||||
transmission?: string; // O‘tkazmalar qutisi turi
|
||||
bom?: number; // Minora kranlar bom uzunligi
|
||||
qazish?: number; // ekskavator qazish chuqurligi
|
||||
pichoq?: number; // avtogreyder pichoq uzunligi
|
||||
zichlash?: number; // katka asfalt zichlovchi
|
||||
siqish?: number; // kampressor siqish bosimi
|
||||
havo?: number; // kampressor havo sig'imi
|
||||
kompressor_sig?: number; // kampressor sig'imi
|
||||
towingCapacity_tons?: number; // evakuator ko'taruvchi og'irlik
|
||||
armLength_m?: number; // evakuator uzunligi
|
||||
|
||||
// 🟢 Qo‘shimcha shalanda / treller tipelar
|
||||
wheelCount?: number; // G‘ildiraklar soni
|
||||
brakingSystem?: string; // Tormoz tizimi
|
||||
|
||||
// 🟢 Asfalt mashinalari uchun qo‘shimcha
|
||||
pavingWidth_m?: number; // Asfalt yotqizuvchi kengligi
|
||||
pavingDepth_cm?: number; // Asfalt qatlamining chuqurligi
|
||||
conveyorLength_m?: number; // Asfalt kochiruvchi konveyer uzunligi
|
||||
conveyorCapacity_tons?: number; // Bir marta ko‘chiradigan asfalt hajmi
|
||||
|
||||
// 🟢 Betonniy nasos mashinalari uchun qo‘shimcha
|
||||
pumpLength_m?: number; // Beton nasosning uzatish (quvur) uzunligi (metr)
|
||||
pumpCapacity_m3h?: number; // Betonni soatiga uzatish hajmi (m³/soat)
|
||||
|
||||
// 🔵 Vodovoz / Assenizator uchun qo‘shimchalar:
|
||||
pumpPower_hp?: number; // Nasos quvvati
|
||||
pumpType?: string; // Nasos turi
|
||||
|
||||
manipulatorCapacity_tons?: number; // manipulyator yuk ko‘tarishi
|
||||
manipulatorArm_m?: number; // manipulyator strela uzunligi
|
||||
}
|
||||
|
||||
|
||||
|
||||
export const defaultDetail : innerCardTypes = {
|
||||
id:1,
|
||||
image:Kaimei1,
|
||||
name:'Mashina topilmadi',
|
||||
min_order_time:4,
|
||||
price:600000,
|
||||
path:''
|
||||
}
|
||||
export const defaultDetail: innerCardTypes = {
|
||||
id: 1,
|
||||
image: Kaimei1,
|
||||
name: "Mashina topilmadi",
|
||||
min_order_time: 4,
|
||||
price: 600000,
|
||||
path: "",
|
||||
};
|
||||
|
||||
73
types/ymaps.d.ts
vendored
@@ -1,39 +1,66 @@
|
||||
// src/types/ymaps.d.ts
|
||||
declare namespace ymaps {
|
||||
interface MapOptions {
|
||||
center: number[];
|
||||
zoom: number;
|
||||
controls?: string[];
|
||||
type ReadyCallback = () => void;
|
||||
|
||||
interface IEventEmitter {
|
||||
add: (eventName: string, handler: (...args: any[]) => any) => void;
|
||||
remove?: (eventName: string, handler: (...args: any[]) => any) => void;
|
||||
fire?: (eventName: string, eventObject?: any) => void;
|
||||
}
|
||||
|
||||
class Map {
|
||||
constructor(container: HTMLElement, options: MapOptions);
|
||||
geoObjects: {
|
||||
add(obj: any): void;
|
||||
};
|
||||
controls: any;
|
||||
interface IGeoObjectCollection {
|
||||
add: (geoObject: any) => void;
|
||||
remove?: (geoObject: any) => void;
|
||||
removeAll?: () => void;
|
||||
}
|
||||
|
||||
interface MapOptions {
|
||||
center?: [number, number];
|
||||
zoom?: number;
|
||||
controls?: string[];
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
class Map implements IEventEmitter {
|
||||
constructor(container: HTMLElement | string, options?: MapOptions);
|
||||
|
||||
events: IEventEmitter;
|
||||
geoObjects: IGeoObjectCollection;
|
||||
|
||||
setCenter(center: [number, number] | number[], zoom?: number): void;
|
||||
getCenter(): [number, number];
|
||||
|
||||
setZoom(zoom: number, options?: any): void;
|
||||
getZoom(): number;
|
||||
|
||||
destroy(): void;
|
||||
}
|
||||
|
||||
interface PlacemarkOptions {
|
||||
iconLayout?: string;
|
||||
iconImageHref?: string;
|
||||
iconImageSize?: [number, number];
|
||||
iconImageOffset?: [number, number];
|
||||
iconColor?: string;
|
||||
draggable?: boolean;
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
interface PlacemarkProperties {
|
||||
balloonContent?: string;
|
||||
class Placemark implements IEventEmitter {
|
||||
constructor(coords: [number, number] | number[], properties?: any, options?: PlacemarkOptions);
|
||||
properties: any;
|
||||
events: IEventEmitter;
|
||||
}
|
||||
|
||||
class Placemark {
|
||||
constructor(
|
||||
coords: number[],
|
||||
properties?: PlacemarkProperties,
|
||||
options?: PlacemarkOptions
|
||||
);
|
||||
}
|
||||
|
||||
function ready(callback: () => void): void; // ✅ shu qator qo‘shildi
|
||||
function ready(callback: ReadyCallback): void;
|
||||
}
|
||||
|
||||
interface Window {
|
||||
ymaps: typeof ymaps;
|
||||
declare global {
|
||||
interface Window {
|
||||
ymaps?: typeof ymaps;
|
||||
}
|
||||
}
|
||||
|
||||
declare module "ymaps" {
|
||||
export = ymaps;
|
||||
}
|
||||
|
||||