diff --git a/app/apple-icon.png b/app/apple-icon.png new file mode 100644 index 0000000..8d81af7 Binary files /dev/null and b/app/apple-icon.png differ diff --git a/app/components/Logo.tsx b/app/components/Logo.tsx index d52abc0..6bbe4cf 100644 --- a/app/components/Logo.tsx +++ b/app/components/Logo.tsx @@ -1,185 +1,25 @@ -"use client"; - -import { motion } from "motion/react"; -import { useReducedMotion } from "@/app/hooks/useReducedMotion"; +import Image from "next/image"; interface LogoProps { - variant?: "mark" | "wordmark" | "icon"; - size?: "sm" | "md" | "lg" | "xl"; - theme?: "dark" | "light" | "accent"; + theme?: "dark" | "light"; className?: string; - showTagline?: boolean; + loading?: "eager" | "lazy"; } -const sizeMap = { - sm: { width: 32, height: 32 }, - md: { width: 48, height: 48 }, - lg: { width: 64, height: 64 }, - xl: { width: 120, height: 80 }, -}; - export function Logo({ - variant = "mark", - size = "md", theme = "dark", - className = "", - showTagline = false, + className = "w-48", + loading = "lazy", }: Readonly) { - const dimensions = sizeMap[size]; - const shouldReduceMotion = useReducedMotion(); - - const colors = { - dark: { - primary: "#FFFFFF", - slash: "#CCFF00", - }, - light: { - primary: "#0A0A0A", - slash: "#0A0A0A", - }, - accent: { - primary: "#0A0A0A", - slash: "rgba(0,0,0,.3)", - }, - }; - - const c = colors[theme]; - - const hoverMotion = shouldReduceMotion - ? undefined - : { - scale: 1.03, - rotate: -2, - }; - - const hoverTransition = { - type: "spring" as const, - stiffness: 280, - damping: 18, - }; - - if (variant === "icon") { - return ( - - Evandro icon logo - - - - - - - - - ); - } - - if (variant === "wordmark") { - return ( - - - Evandro wordmark logo - - - - - - - -
-
- evandro.dev - .br -
- {showTagline && ( -
- DESENVOLVIMENTO DE SOFTWARE -
- )} -
-
- ); - } - return ( - - Evandro mark logo - - - - - - - + Evandro.dev.br ); } diff --git a/app/favicon.ico b/app/favicon.ico index 718d6fe..4eb8f91 100644 Binary files a/app/favicon.ico and b/app/favicon.ico differ diff --git a/app/icon.png b/app/icon.png new file mode 100644 index 0000000..14d4a96 Binary files /dev/null and b/app/icon.png differ diff --git a/app/icon.svg b/app/icon.svg deleted file mode 100644 index 6363fc2..0000000 --- a/app/icon.svg +++ /dev/null @@ -1 +0,0 @@ -Evandro Fonseca Junior diff --git a/app/layout.tsx b/app/layout.tsx index 64eee3d..6ed082a 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -10,9 +10,9 @@ import GoogleAnalytics from "./components/GoogleAnalytics"; import { Header } from "./components/Header"; import "./globals.css"; -const defaultTitle = "Evandro Fonseca Junior — Engenharia de Software"; +const defaultTitle = "Sistemas sob medida para empresas | Evandro.dev.br"; const seoDescription = - "Evandro Fonseca Junior é engenheiro da computação e desenvolvedor de software com atuação em Next.js, TypeScript, Rust, IoT e integrações. Base em Garuva, atendimento a projetos no Norte de Santa Catarina e atuação remota."; + "Desenvolvimento de sistemas web, aplicativos e integrações sob medida. Do entendimento do negócio à entrega em produção, com Evandro Fonseca Junior. Base em Santa Catarina e atendimento remoto."; const spaceGrotesk = Space_Grotesk({ subsets: ["latin"], @@ -77,7 +77,7 @@ export const metadata: Metadata = { url: "/opengraph-image", width: 1200, height: 630, - alt: "Evandro Fonseca Junior | Engenharia de Software, Next.js, Tauri e Rust", + alt: "Evandro.dev.br | Sistemas sob medida para empresas", }, ], }, @@ -89,7 +89,7 @@ export const metadata: Metadata = { images: [ { url: "/opengraph-image", - alt: "Evandro Fonseca Junior - Engenheiro da Computação e Desenvolvedor de Software", + alt: "Evandro.dev.br | Sistemas sob medida para empresas", }, ], }, @@ -128,6 +128,28 @@ export default function RootLayout({ children }: Readonly) { lang="pt-BR" className={`${spaceGrotesk.variable} ${geistMono.variable} ${monumentExtended.variable}`} > + + {/* Set arrival policy before native restoration and client-side layout changes. */} + + + diff --git a/app/manifest.ts b/app/manifest.ts index c181b2a..f47d306 100644 --- a/app/manifest.ts +++ b/app/manifest.ts @@ -2,28 +2,28 @@ import type { MetadataRoute } from "next"; export default function manifest(): MetadataRoute.Manifest { return { - name: "Evandro Fonseca Junior — Engenheiro da Computação e Desenvolvedor de Software", + name: "Evandro.dev.br — Sistemas sob medida para empresas", short_name: "Evandro.dev", description: - "Portfólio profissional de Evandro Fonseca Junior, engenheiro da computação e desenvolvedor de software em Garuva, Joinville, Norte de Santa Catarina e Curitiba.", + "Desenvolvimento de sistemas web, aplicativos e integrações sob medida. Engenharia de software com Evandro Fonseca Junior, de Santa Catarina para sua empresa.", start_url: "/", display: "standalone", background_color: "#000000", theme_color: "#000000", orientation: "portrait-primary", - categories: ["portfolio", "developer", "engineering", "technology"], + categories: ["business", "productivity", "technology"], lang: "pt-BR", dir: "ltr", icons: [ { - src: "/favicon.ico", - sizes: "any", - type: "image/x-icon", + src: "/brand/icon-192.png", + sizes: "192x192", + type: "image/png", }, { - src: "/icon.svg", - sizes: "any", - type: "image/svg+xml", + src: "/icon.png", + sizes: "512x512", + type: "image/png", }, ], }; diff --git a/app/opengraph-image.tsx b/app/opengraph-image.tsx index 8bb7893..5cd9678 100644 --- a/app/opengraph-image.tsx +++ b/app/opengraph-image.tsx @@ -1,17 +1,16 @@ import { ImageResponse } from "next/og"; import { OG_CONTENT_TYPE, OG_SIZE, OgCard } from "@/lib/og-card"; -export const alt = - "Evandro Fonseca Junior - Engenheiro da Computação e Desenvolvedor de Software"; +export const alt = "Evandro.dev.br — Sistemas sob medida para empresas"; export const size = OG_SIZE; export const contentType = OG_CONTENT_TYPE; export default async function Image() { return new ImageResponse( , OG_SIZE, ); diff --git a/imagens/originais/logo-empilhada-fundo-claro-original.png b/imagens/originais/logo-empilhada-fundo-claro-original.png new file mode 100644 index 0000000..5a28e5b Binary files /dev/null and b/imagens/originais/logo-empilhada-fundo-claro-original.png differ diff --git a/imagens/originais/logo-horizontal-fundo-claro-original.png b/imagens/originais/logo-horizontal-fundo-claro-original.png new file mode 100644 index 0000000..1b322d6 Binary files /dev/null and b/imagens/originais/logo-horizontal-fundo-claro-original.png differ diff --git a/imagens/originais/simbolo-fundo-escuro-original.png b/imagens/originais/simbolo-fundo-escuro-original.png new file mode 100644 index 0000000..b8dd61b Binary files /dev/null and b/imagens/originais/simbolo-fundo-escuro-original.png differ diff --git a/imagens/originais/simbolo-transparente-original.png b/imagens/originais/simbolo-transparente-original.png new file mode 100644 index 0000000..98dcb45 Binary files /dev/null and b/imagens/originais/simbolo-transparente-original.png differ diff --git a/lib/og-card.tsx b/lib/og-card.tsx index 217147d..36f0e98 100644 --- a/lib/og-card.tsx +++ b/lib/og-card.tsx @@ -1,3 +1,10 @@ +import { readFileSync } from "node:fs"; +import { join } from "node:path"; + +const brandMark = `data:image/png;base64,${readFileSync( + join(process.cwd(), "public/brand/mark-dark.png"), +).toString("base64")}`; + export const OG_SIZE = { width: 1200, height: 630 } as const; export const OG_CONTENT_TYPE = "image/png"; @@ -16,6 +23,7 @@ export function OgCard({ width: "100%", height: "100%", display: "flex", + position: "relative", flexDirection: "column", justifyContent: "space-between", background: "#050505", @@ -24,9 +32,17 @@ export function OgCard({ fontFamily: "Arial, sans-serif", }} > + Evandro.dev.br
\ No newline at end of file diff --git a/public/brand/mark-light.svg b/public/brand/mark-light.svg new file mode 100644 index 0000000..032c3a8 --- /dev/null +++ b/public/brand/mark-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/brand/stacked-light.webp b/public/brand/stacked-light.webp new file mode 100644 index 0000000..4a04ad6 Binary files /dev/null and b/public/brand/stacked-light.webp differ diff --git a/public/brand/wordmark-dark.webp b/public/brand/wordmark-dark.webp new file mode 100644 index 0000000..c1c7d19 Binary files /dev/null and b/public/brand/wordmark-dark.webp differ diff --git a/public/brand/wordmark-light.webp b/public/brand/wordmark-light.webp new file mode 100644 index 0000000..d4bd948 Binary files /dev/null and b/public/brand/wordmark-light.webp differ