import { Box, Text, VStack, HStack, Image, Skeleton, Link as ChakraLink, Icon } from '@chakra-ui/react'; import { FaNewspaper, FaUser, FaCalendarAlt } from 'react-icons/fa'; import { Link as RouterLink } from 'react-router-dom'; import { useQuery } from '@tanstack/react-query'; import { api } from '../../services/api'; import { Widget } from './Widget'; import { format, parseISO } from 'date-fns'; import { cs } from 'date-fns/locale'; import { Article } from '../../types'; export const ArticlesWidget = () => { const { data: articles = [], isLoading, error } = useQuery({ queryKey: ['recentArticles'], queryFn: async () => { try { const { data } = await api.get('/articles', { params: { limit: 3, include: 'author', sort: '-createdAt', published: true } }); return data.data || []; } catch (err) { console.error('Error fetching articles:', err); return []; } }, staleTime: 5 * 60 * 1000, // 5 minutes }); if (isLoading) { return ( {[1, 2, 3].map((i) => ( ))} ); } if (error || !articles.length) { return ( Žádné články nebyly nalezeny ); } return ( }> {articles.map((article) => ( {article.imageUrl ? ( {article.title} ) : ( )} {article.title} {article.author.name} {format(parseISO(article.createdAt), 'd. M. yyyy', { locale: cs, })} ))} Zobrazit všechny články → ); };