From ef2956b950b823866ae0f22623ea9c4cf74e935b Mon Sep 17 00:00:00 2001 From: marciobever Date: Mon, 4 May 2026 11:27:22 +0000 Subject: [PATCH] Optimized: Clean ThemeSwitcher with safe dates --- src/components/themes/ThemeSwitcher.tsx | 68 +++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/components/themes/ThemeSwitcher.tsx diff --git a/src/components/themes/ThemeSwitcher.tsx b/src/components/themes/ThemeSwitcher.tsx new file mode 100644 index 0000000..3224a66 --- /dev/null +++ b/src/components/themes/ThemeSwitcher.tsx @@ -0,0 +1,68 @@ + +import Theme from './CyberTheme'; + +const formatDateSafe = (value: any) => { + if (!value) return '00:00:00'; + + if (value instanceof Date) { + return value.toLocaleDateString('pt-BR'); + } + + if (typeof value === 'string') { + return value; + } + + try { + const parsed = new Date(value); + if (!isNaN(parsed.getTime())) { + return parsed.toLocaleDateString('pt-BR'); + } + } catch {} + + return String(value); +}; + +export default function ThemeSwitcher({ themeId, posts = [], currentArticle, ...props }: any) { + const normalizedPosts = (posts || []).map((p: any, i: number) => { + const data = p?.data || {}; + + return { + ...p, + ...data, + id: p?.id || p?.slug || data?.slug || String(i), + slug: p?.slug || data?.slug || p?.id || String(i), + title: data?.title || p?.title || 'Sem título', + excerpt: data?.excerpt || data?.description || p?.excerpt || '', + date: formatDateSafe(data?.date || data?.pubDate || p?.date || p?.pubDate), + author: data?.author || p?.author || 'AI_NODE', + sev: data?.sev || p?.sev || (i % 2 === 0 ? 'CRITICAL' : 'HIGH'), + content: p?.body || p?.content || '' + }; + }); + + const data = currentArticle?.data || {}; + + const normalizedArticle = currentArticle + ? { + ...currentArticle, + ...data, + id: currentArticle?.id || currentArticle?.slug || data?.slug || 'article', + slug: currentArticle?.slug || data?.slug || currentArticle?.id || 'article', + title: data?.title || currentArticle?.title || 'Sem título', + excerpt: data?.excerpt || data?.description || currentArticle?.excerpt || '', + date: formatDateSafe(data?.date || data?.pubDate || currentArticle?.date || currentArticle?.pubDate), + author: data?.author || currentArticle?.author || 'AI_NODE', + sev: data?.sev || currentArticle?.sev || 'LOW', + content: currentArticle?.body || currentArticle?.content || '' + } + : undefined; + + return ( + + ); +}