import { paginaMeta, jsonLd } from "@/lib/seo";
import Link from "next/link";
import Header from "@/components/Header";
import Footer from "@/components/Footer";
import { notFound } from "next/navigation";
import CodeExample from "@/components/CodeExample";
import frameworksData from "@/public/frameworks.json";
import {
ArrowLeft,
BookOpen,
Code,
Layers,
Zap,
Compass,
CheckCircle,
Terminal,
FileText,
Sliders,
Award,
Target,
Box,
Sparkles,
ExternalLink,
ArrowRight
} from "lucide-react";
export default async function FrameworkDetail({ params }) {
const { key } = await params;
const framework = frameworksData[key];
if (!framework) {
notFound();
}
const features = framework.caracteristicas || [];
const useCases = framework.casos_uso || [];
const isEspIdf = key === "ESP-IDF";
return (
{/* Ficha técnica do framework e trilha de navegação para o Google */}
{/* Back navigation link */}
Voltar para Frameworks
{/* Top Info Banner Panel */}
{framework.icone}
{framework.nome}
{framework.nome_completo}
{framework.tipo}
{/* Call to Actions CTA Grid */}
{framework.descricao}
{/* Framework Core Specifications Grid */}
LINGUAGEM DE DESENVOLVIMENTO
{framework.linguagem}
Sintaxe e ecossistema
CATEGORIA DO FRAMEWORK
{framework.tipo}
Classificação de arquitetura
OBJETIVO PRINCIPAL
{framework.funcao_principal}
{/* side-by-side details block */}
{/* Left specs card */}
Características de Destaque
{features.map((feature, i) => (
{feature}
))}
Casos de Uso Recomendados
{useCases.map((useCase, i) => (
{useCase}
))}
{/* Right summary metadata card */}
Resumo Técnico
Nome Oficial
{framework.nome}
Linguagem
{framework.linguagem}
Tipo / Suite
{framework.tipo}
Cor Temática
{framework.cor}
{/* Special Section: ESP Component Registry Callout for ESP-IDF */}
{isEspIdf && (
Arquitetura Moderna ESP-IDF
Gerenciamento Modular com ESP Component Registry
Nos projetos ESP-IDF v4.4+ e v5.x+, as bibliotecas não precisam mais ser adicionadas como submódulos Git.
Utilize o idf_component.yml e o comando idf.py add-dependency para baixar automaticamente drivers de displays (LVGL), pilhas industriais (Modbus), RainMaker e mais.
Explorar Componentes ESP-IDF
)}
{/* Coding examples container */}
{framework.exemplo && (
)}
{/* Technical documentation double CTAs */}
);
}
export async function generateMetadata({ params }) {
const { key } = await params;
const framework = frameworksData[key];
if (!framework) {
return { title: "Framework não encontrado", robots: { index: false, follow: false } };
}
return {
...paginaMeta({
titulo: `${framework.nome} para ESP32 · Guia Técnico`,
descricao: `${framework.nome_completo}: ${framework.descricao} Guia com exemplos práticos de código e casos de uso.`,
caminho: `/frameworks/${encodeURIComponent(key)}`,
tipo: "article",
keywords: [
framework.nome, framework.nome_completo,
`${framework.nome} ESP32`, `programar ESP32 com ${framework.nome}`,
"ESP32", "framework ESP32",
],
}),
other: { "article:section": "Frameworks" },
};
}
export async function generateStaticParams() {
return Object.keys(frameworksData).map((key) => ({
key: key,
}));
}