'use client'; import CategoryImage from '@/assets/water-bottle.png'; import { category_api } from '@/shared/config/api/category/api'; import { product_api } from '@/shared/config/api/product/api'; import { BASE_URL } from '@/shared/config/api/URLs'; import { Link } from '@/shared/config/i18n/navigation'; import { cn } from '@/shared/lib/utils'; import { AspectRatio } from '@/shared/ui/aspect-ratio'; import { Button } from '@/shared/ui/button'; import { Card } from '@/shared/ui/card'; import { Carousel, CarouselContent, CarouselItem, type CarouselApi, } from '@/shared/ui/carousel'; import { Skeleton } from '@/shared/ui/skeleton'; import { CategoryCarousel } from '@/widgets/categories/ui/category-carousel'; import { ProductCard } from '@/widgets/categories/ui/product-card'; import { useQuery } from '@tanstack/react-query'; import { AlertCircle, ChevronLeft, ChevronRight } from 'lucide-react'; import Image from 'next/image'; import { useEffect, useState } from 'react'; import 'swiper/css'; import { banner_api } from '../lib/api'; const Welcome = () => { const [api, setApi] = useState(); const [apiPro, setApiPro] = useState(); const [canScrollPrev, setCanScrollPrev] = useState(false); const [canScrollNext, setCanScrollNext] = useState(false); const [apiCat, setApiCat] = useState(); const { data, isLoading, isError } = useQuery({ queryKey: ['banner_list'], queryFn: () => banner_api.getBanner(), select(data) { return data.data; }, }); useEffect(() => { if (!apiPro) return; const updateButtons = () => { setCanScrollPrev(apiPro.canScrollPrev()); setCanScrollNext(apiPro.canScrollNext()); }; updateButtons(); apiPro.on('select', updateButtons); apiPro.on('reInit', updateButtons); return () => { apiPro.off('select', updateButtons); apiPro.off('reInit', updateButtons); }; }, [apiPro]); const scrollPrevPro = () => { if (apiPro) { apiPro?.scrollPrev(); } }; const scrollNextPro = () => { if (apiPro) { apiPro?.scrollNext(); } }; const { data: category } = useQuery({ queryKey: ['category_list'], queryFn: () => category_api.getCategory({ page: 1, page_size: 99 }), select(data) { return data.data.results; }, }); const scrollPrev = () => { if (api?.canScrollPrev()) { api?.scrollPrev(); } else if (!api?.canScrollPrev()) { api?.scrollTo(api?.slideNodes().length - 1); } }; const scrollPrevCar = () => { apiCat?.scrollPrev(); }; const scrollNext = () => { if (api?.canScrollNext()) { api?.scrollNext(); } else if (!api?.canScrollNext()) { api?.scrollTo(0); } }; const scrollNextCat = () => { apiCat?.scrollNext(); }; const { data: product, isLoading: productLoading } = useQuery({ queryKey: ['list'], queryFn: () => product_api.list({ page: 1, page_size: 16, }), select(data) { return data.data; }, }); return ( <>
{isLoading && ( )} {isError && (

Banner yuklanmadi. Xatolik yuz

)} {data && data.map((banner, index) => ( {banner.id} ))}
{category && category.map((banner, index) => (
{banner.name}

{banner.name}

))}
{productLoading && Array.from({ length: 6 }).map((__, index) => ( ))} {product && !isLoading && product.results .filter((product) => product.state === 'A') .map((product) => ( ))} {' '}
{category && category .slice(0, 6) .map((e) => )} ); }; export default Welcome;