diff --git a/README.md b/README.md
index 9d6f211..3361b5f 100644
--- a/README.md
+++ b/README.md
@@ -2,9 +2,11 @@
-

-

-

+

+

+

+
+
---
diff --git a/index.html b/index.html
index 1573876..38af1a4 100644
--- a/index.html
+++ b/index.html
@@ -2,7 +2,7 @@
-
+
Francielle Ferraz
diff --git a/src/App.tsx b/src/App.tsx
index 1116dd4..43fd9db 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -18,10 +18,10 @@ export default function App() {
const isLocked = useRef(false);
// Estado que controla se o sistema já concluiu o boot de inicialização
- const [isLoading, setIsLoading]= useState(true)
+ const [isLoading, setIsLoading] = useState(true);
- /* Algoritmo que ativa as animações ao rolar a página com micro-tolerância para garantir que o React carregou 100% dos elementos na árvore DOM
- */
+ /* Algoritmo que ativa as animações ao rolar a página com micro-tolerância para garantir que o React carregou 100% dos elementos na árvore DOM
+ */
useEffect(() => {
let globalObserver: IntersectionObserver | null = null;
@@ -111,7 +111,9 @@ export default function App() {
{/* Renderiza a Splash Screen interativa se o estado isLoading for verdadeiro */}
- {isLoading && setIsLoading(false)} />}
+ {isLoading && (
+ setIsLoading(false)} />
+ )}
{/* Barra Superior de Controles de Acessibilidade */}
diff --git a/src/sections/ProjectsSection.tsx b/src/sections/ProjectsSection.tsx
index 65e7f6a..1ab9e70 100644
--- a/src/sections/ProjectsSection.tsx
+++ b/src/sections/ProjectsSection.tsx
@@ -1,5 +1,11 @@
import { useLanguage } from "@/context/LanguageContext";
-import { FolderGit2, ExternalLink, CheckSquare, Tv } from "lucide-react";
+import {
+ FolderGit2,
+ ExternalLink,
+ CheckSquare,
+ Tv,
+ Shuffle,
+} from "lucide-react";
import { FaGithub } from "react-icons/fa";
export function ProjectsSection() {
@@ -9,7 +15,7 @@ export function ProjectsSection() {
interface TestSuite {
name: string;
icon: React.ReactNode;
- type: "unit" | "e2e";
+ type: "unit" | "e2e" | "ci";
}
// Interface para a estrutura do projeto
@@ -36,6 +42,11 @@ export function ProjectsSection() {
icon: ,
type: "unit",
},
+ {
+ name: "GitHub Actions CI",
+ icon: ,
+ type: "ci",
+ },
],
github: "https://github.com/franferrazdev/night-owl-ecommerce",
live: "https://night-owl-ecommerce.vercel.app/",
@@ -58,6 +69,11 @@ export function ProjectsSection() {
icon: ,
type: "e2e",
},
+ {
+ name: "GitHub Actions CI",
+ icon: ,
+ type: "ci",
+ },
],
github: "https://github.com/franferrazdev/school-management-dashboard",
live: "https://school-management-dashboard-woad.vercel.app/",
@@ -74,7 +90,16 @@ export function ProjectsSection() {
icon: ,
type: "unit",
},
- { name: "Playwright", icon: , type: "e2e" },
+ {
+ name: "Playwright",
+ icon: ,
+ type: "e2e",
+ },
+ {
+ name: "GitHub Actions CI",
+ icon: ,
+ type: "ci",
+ },
],
github: "https://github.com/franferrazdev/live-coding-bug-quiz",
live: "https://live-coding-bug-quiz-one.vercel.app/",
@@ -83,6 +108,18 @@ export function ProjectsSection() {
},
];
+ // Função auxiliar para determinar as classes de estilo baseado no tipo de suite
+ const getSuiteStyles = (type: "unit" | "e2e" | "ci") => {
+ switch (type) {
+ case "e2e":
+ return "bg-amber-500/10 text-amber-600 dark:text-amber-400 border-amber-500/20 dark:border-amber-500/30";
+ case "ci":
+ return "bg-purple-500/10 text-purple-600 dark:text-purple-400 border-purple-500/20 dark:border-purple-500/30";
+ case "unit":
+ return "bg-emerald-500/10 text-emerald-600 dark:text-emerald-400 border-emerald-500/20 dark:border-emerald-500/30";
+ }
+ };
+
return (
- {/* Badge Técnica de Testes */}
+ {/* Badge Técnica de Testes e CI/CD */}
{project.testSuites.map((suite) => (
{suite.icon}
{suite.name}