1
1
mirror of https://github.com/theoludwig/theoludwig.git synced 2025-05-20 21:13:43 +02:00

feat(portfolio): add Fusey

This commit is contained in:
Théo LUDWIG 2025-05-11 17:28:02 +02:00
parent 69af1bccc3
commit a43bfb4a0d
Signed by: theoludwig
GPG Key ID: ADFE5A563D718F3B
10 changed files with 40 additions and 31 deletions

View File

@ -6,8 +6,8 @@ labels: "bug"
--- ---
<!-- <!--
Please provide a clear and concise description of what the bug is. Include Please provide a clear and concise description of what the bug is. Include
screenshots if needed. Please make sure your issue has not already been fixed. screenshots if needed. Please make sure your issue has not already been fixed.
--> -->
## Steps To Reproduce ## Steps To Reproduce

View File

@ -20,21 +20,16 @@ community include:
- Demonstrating empathy and kindness toward other people - Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences - Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback - Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes, - Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
and learning from the experience - Focusing on what is best not just for us as individuals, but for the overall community
- Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include: Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or - The use of sexualized language or imagery, and sexual attention or advances of any kind
advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks - Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment - Public or private harassment
- Publishing others' private information, such as a physical or email - Publishing others' private information, such as a physical or email address, without their explicit permission
address, without their explicit permission - Other conduct which could reasonably be considered inappropriate in a professional setting
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities ## Enforcement Responsibilities

Binary file not shown.

After

Width:  |  Height:  |  Size: 945 KiB

View File

@ -140,6 +140,10 @@
"title": "Open-Source" "title": "Open-Source"
}, },
"portfolio": { "portfolio": {
"fusey": {
"description": "ARK: Survival Ascended Wiki and Player stats tracker.",
"title": "Fusey"
},
"carolo": { "carolo": {
"description": "Strategy board game similar to chess which allows grandiose moves (only available in French).", "description": "Strategy board game similar to chess which allows grandiose moves (only available in French).",
"title": "Carolo" "title": "Carolo"

View File

@ -140,6 +140,10 @@
"title": "Open-Source" "title": "Open-Source"
}, },
"portfolio": { "portfolio": {
"fusey": {
"description": "ARK: Survival Ascended Wiki et suivi des statistiques des joueurs.",
"title": "Fusey"
},
"carolo": { "carolo": {
"description": "Jeu de plateau stratégique similaire aux échecs qui permet des coups grandioses, reposant sur des enchaînements remarquables.", "description": "Jeu de plateau stratégique similaire aux échecs qui permet des coups grandioses, reposant sur des enchaînements remarquables.",
"title": "Carolo" "title": "Carolo"

View File

@ -9,18 +9,25 @@ export const Portfolio: React.FC<PortfolioProps> = () => {
const t = useTranslations() const t = useTranslations()
const items: PortfolioProject[] = [ const items: PortfolioProject[] = [
{
id: "fusey",
title: t("home.portfolio.fusey.title"),
description: t("home.portfolio.fusey.description"),
link: "https://fusey.gg",
image: "/images/portfolio/Fusey.webp",
},
{ {
id: "carolo", id: "carolo",
title: t("home.portfolio.carolo.title"), title: t("home.portfolio.carolo.title"),
description: t("home.portfolio.carolo.description"), description: t("home.portfolio.carolo.description"),
link: "https://carolo.theoludwig.fr/", link: "https://carolo.theoludwig.fr",
image: "/images/portfolio/Carolo.webp", image: "/images/portfolio/Carolo.webp",
}, },
{ {
id: "leon", id: "leon",
title: t("home.portfolio.leon.title"), title: t("home.portfolio.leon.title"),
description: t("home.portfolio.leon.description"), description: t("home.portfolio.leon.description"),
link: "https://getleon.ai/", link: "https://getleon.ai",
image: "/images/portfolio/Leon.webp", image: "/images/portfolio/Leon.webp",
}, },
] ]

View File

@ -33,7 +33,7 @@ export const PortfolioItem: React.FC<PortfolioItemProps> = (props) => {
<div className="flex justify-center"> <div className="flex justify-center">
<Image <Image
quality={100} quality={100}
className="size-[300px] transition-opacity duration-500 group-hover:opacity-20 dark:group-hover:opacity-5" className="size-[300px] rounded-xl transition-opacity duration-500 group-hover:opacity-20 dark:group-hover:opacity-5"
width={300} width={300}
height={300} height={300}
src={image} src={image}

View File

@ -2,7 +2,6 @@
import { classNames } from "@repo/config-tailwind/classNames" import { classNames } from "@repo/config-tailwind/classNames"
import { usePathname, useRouter } from "@repo/i18n/routing" import { usePathname, useRouter } from "@repo/i18n/routing"
import type { Locale } from "@repo/utils/constants"
import { LOCALES } from "@repo/utils/constants" import { LOCALES } from "@repo/utils/constants"
import { useLocale } from "next-intl" import { useLocale } from "next-intl"
import { useEffect, useRef } from "react" import { useEffect, useRef } from "react"
@ -16,7 +15,7 @@ export interface LocalesProps {}
export const Locales: React.FC<LocalesProps> = () => { export const Locales: React.FC<LocalesProps> = () => {
const router = useRouter() const router = useRouter()
const pathname = usePathname() const pathname = usePathname()
const localeCurrent = useLocale() as Locale const localeCurrent = useLocale()
const { const {
value: isVisibleMenu, value: isVisibleMenu,