feat: initialize portfolio site with core components, pages, and content structure, and update Next.js configuration.
This commit is contained in:
1 parent
223746b898
commit
d00258dcd1
22 files changed
+1512
-8038
No files matched your search
+14
-15
@@ -1,10 +1,9 @@
|
||||
"use client";
|
||||
"use client";
|
||||
|
||||
import { motion, type Variants, useReducedMotion } from "framer-motion";
|
||||
import { usePortfolioData } from "@/lib/usePortfolioData";
|
||||
import { Section } from "./Section";
|
||||
import { DrawLine } from "./animations/DrawLine";
|
||||
import { CounterValue } from "./animations/CounterValue";
|
||||
import { SectionLoading } from "./SectionLoading";
|
||||
|
||||
export default function Skills() {
|
||||
@@ -12,11 +11,11 @@ export default function Skills() {
|
||||
const shouldReduceMotion = useReducedMotion();
|
||||
|
||||
if (loading) {
|
||||
return <SectionLoading dark message="Loading skill registry" />;
|
||||
return <SectionLoading dark message="Loading core stack" />;
|
||||
}
|
||||
|
||||
if (error || !data) {
|
||||
return <div className="ds-error">Error loading skill registry</div>;
|
||||
return <div className="ds-error">Error loading core stack</div>;
|
||||
}
|
||||
|
||||
const gridVariants: Variants = {
|
||||
@@ -46,9 +45,9 @@ export default function Skills() {
|
||||
return (
|
||||
<Section
|
||||
id="skills"
|
||||
eyebrow="MODULE_REGISTRY.lib"
|
||||
title="Stack modular para produto, operacao e escala"
|
||||
description="Ferramentas escolhidas por previsibilidade operacional, velocidade de entrega e facilidade de manutencao."
|
||||
eyebrow="Core stack"
|
||||
title="Next.js, Tauri, Rust e stack para produtos criticos"
|
||||
description="Tecnologias e fundamentos que uso em engenharia de software, arquitetura de software, IoT e integracoes complexas."
|
||||
dark
|
||||
disableChildrenAnimation
|
||||
>
|
||||
@@ -59,7 +58,7 @@ export default function Skills() {
|
||||
viewport={{ once: true, amount: 0.2 }}
|
||||
variants={gridVariants}
|
||||
>
|
||||
{data.skills.technical.map((category, index) => (
|
||||
{data.skills.technical.map((category) => (
|
||||
<motion.article
|
||||
key={category.category}
|
||||
className="ds-card h-full"
|
||||
@@ -75,14 +74,12 @@ export default function Skills() {
|
||||
whileTap={shouldReduceMotion ? undefined : { scale: 0.99 }}
|
||||
transition={{ type: "spring", stiffness: 180, damping: 18 }}
|
||||
>
|
||||
<div className="flex items-center justify-between gap-sp-4">
|
||||
<div className="ds-kicker">ID_0{index + 1}X</div>
|
||||
<div className="ds-metric">
|
||||
<CounterValue value={category.skills.length} suffix=" items" />
|
||||
</div>
|
||||
</div>
|
||||
<h3 className="ds-card-title !mt-0">{category.category}</h3>
|
||||
<DrawLine delay={0.05} />
|
||||
<h3 className="ds-card-title mb-sp-8">{category.category}</h3>
|
||||
<p className="ds-copy !mt-sp-4">
|
||||
Ferramentas que uso para construir com clareza tecnica e ritmo de
|
||||
entrega.
|
||||
</p>
|
||||
<ul className="ds-tags">
|
||||
{category.skills.map((skill) => (
|
||||
<li key={skill} className="ds-tag">
|
||||
@@ -96,3 +93,5 @@ export default function Skills() {
|
||||
</Section>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user