Compare commits

...

2 Commits

Author SHA1 Message Date
nabijonovdavronbek619@gmail.com
c01520399a product section translaiton complated 2026-02-17 12:16:47 +05:00
nabijonovdavronbek619@gmail.com
9f46e7c244 translation done , services page added backend service detail page added 2026-02-17 11:46:38 +05:00
7 changed files with 31 additions and 12 deletions

View File

@@ -5,7 +5,6 @@ import { useProductPageInfo } from "@/store/useProduct";
import { useQuery } from "@tanstack/react-query"; import { useQuery } from "@tanstack/react-query";
import httpClient from "@/request/api"; import httpClient from "@/request/api";
import { endPoints } from "@/request/links"; import { endPoints } from "@/request/links";
import { AlertCircle } from "lucide-react";
import { LoadingSkeleton } from "@/components/pages/products/slug/loading"; import { LoadingSkeleton } from "@/components/pages/products/slug/loading";
import { EmptyState } from "@/components/pages/products/slug/empty"; import { EmptyState } from "@/components/pages/products/slug/empty";
import { useEffect } from "react"; import { useEffect } from "react";

View File

@@ -1,4 +1,7 @@
import { useTranslations } from "next-intl";
export function Features({ features }: { features: string[] }) { export function Features({ features }: { features: string[] }) {
const t = useTranslations();
if (!features || features.length === 0) { if (!features || features.length === 0) {
return null; return null;
} }
@@ -6,14 +9,14 @@ export function Features({ features }: { features: string[] }) {
return ( return (
<div className="mt-12"> <div className="mt-12">
<h2 className="text-2xl md:text-3xl font-bold text-white mb-6"> <h2 className="text-2xl md:text-3xl font-bold text-white mb-6">
Xususiyatlar {t("products.features")}
</h2> </h2>
<div className="rounded-xl overflow-hidden border border-gray-800 shadow-xl"> <div className="rounded-xl overflow-hidden border border-gray-800 shadow-xl">
<table className="w-full"> <table className="w-full">
<thead> <thead>
<tr className="bg-linear-to-r from-gray-900 to-black border-b border-gray-800"> <tr className="bg-linear-to-r from-stone-800 to-black/10 border-b border-gray-800">
<th className="px-4 py-4 md:px-6 text-left text-sm md:text-base font-semibold text-white"> <th className="px-4 py-4 md:px-6 text-left text-sm md:text-base font-semibold text-white">
Xususiyat {t("products.feature")}
</th> </th>
</tr> </tr>
</thead> </thead>
@@ -38,4 +41,4 @@ export function Features({ features }: { features: string[] }) {
</div> </div>
</div> </div>
); );
} }

View File

@@ -1,5 +1,6 @@
import { usePriceModalStore } from "@/store/useProceModalStore"; import { usePriceModalStore } from "@/store/useProceModalStore";
import { Instagram, Send, Share2 } from "lucide-react"; import { Instagram, Send, Share2 } from "lucide-react";
import { useTranslations } from "next-intl";
interface RightSideProps { interface RightSideProps {
id: number; id: number;
@@ -21,6 +22,7 @@ export function RightSide({
image, image,
}: RightSideProps) { }: RightSideProps) {
const openModal = usePriceModalStore((state) => state.openModal); const openModal = usePriceModalStore((state) => state.openModal);
const t = useTranslations();
const handleGetPrice = () => { const handleGetPrice = () => {
openModal({ openModal({
@@ -68,7 +70,7 @@ export function RightSide({
<div className="bg-[#1716169f] rounded-xl p-6 space-y-6"> <div className="bg-[#1716169f] rounded-xl p-6 space-y-6">
{/* Price */} {/* Price */}
<div> <div>
<p className="text-gray-400 text-sm mb-2">Narx:</p> <p className="text-gray-400 text-sm mb-2">{t("products.price")}:</p>
<h2 className="text-3xl md:text-4xl font-bold text-red-700"> <h2 className="text-3xl md:text-4xl font-bold text-red-700">
${price} ${price}
</h2> </h2>
@@ -79,14 +81,14 @@ export function RightSide({
onClick={handleGetPrice} onClick={handleGetPrice}
className="w-full bg-red-700 hover:bg-red-800 text-white font-bold py-4 px-6 rounded-lg transition-all duration-300 transform hover:scale-105 hover:shadow-lg hover:shadow-red-700/50" className="w-full bg-red-700 hover:bg-red-800 text-white font-bold py-4 px-6 rounded-lg transition-all duration-300 transform hover:scale-105 hover:shadow-lg hover:shadow-red-700/50"
> >
Xabar yuborish {t("products.send")}
</button> </button>
{/* Social Share */} {/* Social Share */}
<div className="pt-4 border-t border-gray-800"> <div className="pt-4 border-t border-gray-800">
<div className="flex items-center gap-3 mb-3"> <div className="flex items-center gap-3 mb-3">
<Share2 className="w-5 h-5 text-gray-400" /> <Share2 className="w-5 h-5 text-gray-400" />
<span className="text-sm text-gray-400">Ulashish:</span> <span className="text-sm text-gray-400">{t("products.share")}:</span>
</div> </div>
<div className="flex items-center gap-5 mt-5"> <div className="flex items-center gap-5 mt-5">
{/* <a href="" className="p-2 rounded-md bg-white text-red-500 hover:text-white hover:bg-red-500"> {/* <a href="" className="p-2 rounded-md bg-white text-red-500 hover:text-white hover:bg-red-500">

View File

@@ -49,7 +49,7 @@ export function OurService() {
return ( return (
<div className="bg-[#1e1d1c] py-10 md:py-16 lg:py-20 mb-30"> <div className="bg-[#1e1d1c] py-10 md:py-16 lg:py-20 mb-30">
<div className="max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8"> <div className="max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8">
{/* Header */} {/* Header for github */}
<motion.div <motion.div
initial={{ opacity: 0, y: -20 }} initial={{ opacity: 0, y: -20 }}
animate={{ opacity: 1, y: 0 }} animate={{ opacity: 1, y: 0 }}

View File

@@ -160,7 +160,12 @@
"subtitle": "Ignum Technology Ready", "subtitle": "Ignum Technology Ready",
"description": "We not only supply equipment but become a successful partner for every client." "description": "We not only supply equipment but become a successful partner for every client."
}, },
"ourproducts": "Our Products" "ourproducts": "Our Products",
"price": "Price",
"send": "Send Message",
"share": "Share",
"features": "Features",
"feature": "Feature"
}, },
"faq": { "faq": {
"banner": { "banner": {

View File

@@ -160,7 +160,12 @@
"subtitle": "Технология Ignum Готова", "subtitle": "Технология Ignum Готова",
"description": "Мы не просто поставляем оборудование, мы становимся успешным партнером для каждого клиента." "description": "Мы не просто поставляем оборудование, мы становимся успешным партнером для каждого клиента."
}, },
"ourproducts": "Наши продукты" "ourproducts": "Наши продукты",
"price": "Цена",
"send": "Отправить сообщение",
"share": "Поделиться",
"features": "Характеристики",
"feature": "Характеристика"
}, },
"faq": { "faq": {
"banner": { "banner": {

View File

@@ -160,7 +160,12 @@
"subtitle": "Ignum Texnologiyasi Tayyor", "subtitle": "Ignum Texnologiyasi Tayyor",
"description": "Biz nafaqat uskunalar yetkazib beramiz, balki har bir mijozning muvaffaqiyatli hamkoriga aylanamiz." "description": "Biz nafaqat uskunalar yetkazib beramiz, balki har bir mijozning muvaffaqiyatli hamkoriga aylanamiz."
}, },
"ourproducts": "Bizning mahsulotlarimiz" "ourproducts": "Bizning mahsulotlarimiz",
"price":"Narx",
"send":"Xabar yuborish",
"share":"Ulashish",
"features":"Xususiyatlar",
"feature":"Xususiyat"
}, },
"faq": { "faq": {
"banner": { "banner": {