"use client"; import { useMemo, useState } from "react"; import Header from "@/components/Header"; import Footer from "@/components/Footer"; import PageHero from "@/components/PageHero"; import Link from "next/link"; import seriesData from "@/public/series.json"; import { AlertTriangle, ArrowRight, ArrowUpRight, Compass, Home, Scale, ShieldCheck, Sparkles, } from "lucide-react"; const FILTROS = [ { 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) }, ]; /** Marcador de segurança: o recurso que diferencia a série, não o que todas têm. */ function nivelSeguranca(serie) { const seg = serie.seguranca || {}; if (seg.key_manager === "Sim") return "Key Manager"; if (String(seg.ecdsa).startsWith("Sim")) return "ECDSA em hardware"; if (String(seg.ecc).startsWith("Sim")) return "ECC em hardware"; if (String(seg.aes).startsWith("AES")) return "AES + SHA"; return "Só SHA"; } const sim = (v) => !String(v).includes("Não"); export default function Series() { const [filtro, setFiltro] = useState("todas"); const todas = Object.entries(seriesData); const ativo = FILTROS.find((f) => f.id === filtro); const series = useMemo(() => todas.filter(([, s]) => ativo.testa(s)), [todas, ativo]); return (
{FILTROS.map((f) => ( ))}

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

{series.map(([key, serie]) => { const riscv = serie.arquitetura.includes("RISC-V"); const fatos = [ ["Núcleos", serie.nucleos], ["Frequência", serie.frequencia], ["SRAM", serie.memoria_sram], ["Wi-Fi", sim(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.status_documentacao && (
  • )}
Abrir ficha ); })}

Ficou em dúvida entre duas séries?

O comparador coloca até quatro modelos lado a lado: núcleos, rádio, memória, periféricos e segurança.

); }