"use client"; import { useMemo, useState } from "react"; import { usePathname } from "next/navigation"; import Header from "@/components/Header"; import Footer from "@/components/Footer"; import PageHero from "@/components/PageHero"; import Link from "next/link"; import seriesDataPt from "@/public/series.json"; import seriesDataEn from "@/data/en/series.json"; import { getLocalizedHref } from "@/i18n/links"; import { AlertTriangle, ArrowRight, ArrowUpRight, Compass, Home, Scale, ShieldCheck, Sparkles, } from "lucide-react"; const FILTROS_PT = [ { id: "todas", rotulo: "Todas", testa: () => true }, { id: "riscv", rotulo: "RISC-V", testa: (s) => s.arquitetura.includes("RISC-V") }, { id: "xtensa", rotulo: "Xtensa", testa: (s) => !s.arquitetura.includes("RISC-V") }, { id: "matter", rotulo: "Matter", testa: (s) => s.matter === "Sim" }, { id: "ia", rotulo: "Aceleração de IA", testa: (s) => Boolean(s.aceleradores_ia) }, ]; const FILTROS_EN = [ { id: "todas", rotulo: "All", testa: () => true }, { id: "riscv", rotulo: "RISC-V", testa: (s) => s.arquitetura.includes("RISC-V") }, { id: "xtensa", rotulo: "Xtensa", testa: (s) => !s.arquitetura.includes("RISC-V") }, { id: "matter", rotulo: "Matter", testa: (s) => s.matter === "Yes" || s.matter === "Sim" }, { id: "ia", rotulo: "AI Acceleration", testa: (s) => Boolean(s.aceleradores_ia) }, ]; /** Marcador de segurança: o recurso que diferencia a série, não o que todas têm. */ function nivelSeguranca(serie, isEn) { const seg = serie.seguranca || {}; if (seg.key_manager === "Sim" || seg.key_manager === "Yes") return "Key Manager"; if (String(seg.ecdsa).startsWith("Sim") || String(seg.ecdsa).startsWith("Yes")) { return isEn ? "Hardware ECDSA" : "ECDSA em hardware"; } if (String(seg.ecc).startsWith("Sim") || String(seg.ecc).startsWith("Yes")) { return isEn ? "Hardware ECC" : "ECC em hardware"; } if (String(seg.aes).startsWith("AES")) return "AES + SHA"; return isEn ? "SHA only" : "Só SHA"; } const simPt = (v) => !String(v).includes("Não"); const simEn = (v) => !String(v).includes("No") && !String(v).includes("Não"); export default function Series() { const pathname = usePathname(); const isEn = pathname?.startsWith("/en"); const currentLocale = isEn ? "en" : "pt"; const seriesData = isEn ? seriesDataEn : seriesDataPt; const filtros = isEn ? FILTROS_EN : FILTROS_PT; const [filtro, setFiltro] = useState("todas"); const todas = Object.entries(seriesData); const ativo = filtros.find((f) => f.id === filtro) || filtros[0]; const series = useMemo(() => todas.filter(([, s]) => ativo.testa(s)), [todas, ativo]); return (
{filtros.map((f) => ( ))}

{series.length} {series.length === 1 ? (isEn ? "series" : "série") : (isEn ? "series" : "séries")}

{series.map(([key, serie]) => { const riscv = serie.arquitetura.includes("RISC-V"); const fatos = isEn ? [ ["Cores", serie.nucleos], ["Frequency", serie.frequencia], ["SRAM", serie.memoria_sram], ["Wi-Fi", simEn(serie.wifi) ? "Yes" : "No"], ["Bluetooth", String(serie.bluetooth).includes("No") || String(serie.bluetooth).includes("Não") ? "No" : "Yes"], serie.consumo_energia?.deep_sleep ? ["Deep sleep", serie.consumo_energia.deep_sleep] : null, ].filter(Boolean) : [ ["Núcleos", serie.nucleos], ["Frequência", serie.frequencia], ["SRAM", serie.memoria_sram], ["Wi-Fi", simPt(serie.wifi) ? "Sim" : "Não"], ["Bluetooth", serie.bluetooth === "Não" ? "Não" : "Sim"], serie.consumo_energia?.deep_sleep ? ["Deep sleep", serie.consumo_energia.deep_sleep] : null, ].filter(Boolean); return (

{key}

{riscv ? "RISC-V" : "Xtensa"}

{serie.descricao}

{fatos.map(([rotulo, valor]) => (
{rotulo}
{valor}
))}
    {serie.aceleradores_ia && (
  • )}
  • {(serie.matter === "Sim" || serie.matter === "Yes") && (
  • )} {serie.status_documentacao && (
  • )}
{isEn ? "Open datasheet" : "Abrir ficha"} ); })}

{isEn ? "Unsure between two series?" : "Ficou em dúvida entre duas séries?"}

{isEn ? "The comparator tool puts up to four models side by side: cores, radio, memory, peripherals, and security." : "O comparador coloca até quatro modelos lado a lado: núcleos, rádio, memória, periféricos e segurança."}

); }