Files
joururi-portfolio/src/layouts/Layout.astro
2026-07-07 22:26:16 +02:00

181 lines
5.4 KiB
Plaintext

---
import '../../assets/css/main.css'
import BgParticles from '../components/BgParticles.astro'
import BgGrid from '../components/BgGrid.astro'
import HeadFavicon from './HeadFavicon.astro'
import Navbar from "../components/Navbar.astro";
interface Props {
title?: string
description?: string
hasParticles?: boolean
hasGrid?: boolean
}
const { title = "Home", hasParticles = false, hasGrid = false } = Astro.props
const baseTitle = 'Alexis Pelé'
const renderedTitle = `${title} · ${baseTitle}`
const { description = baseTitle } = Astro.props
const authorName = "Alexis Pelé"
const authorUsername = "AlexisNP"
const websiteDomain = "alexcreates.fr"
---
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href={Astro.url} />
<meta name="generator" content={ Astro.generator } />
<title>{ renderedTitle }</title>
<meta property="og:title" content={renderedTitle} />
<meta name="description" content={description} />
<meta property="og:description" content={description} />
<meta name="twitter:description" content={description} />
<meta property="author" content={authorName} />
<meta property="og:author" content={authorName} />
<meta property="og:author:username" content={authorUsername} />
<HeadFavicon />
<meta name="msapplication-TileColor" content="#065f46">
<meta name="theme-color" content="#065f46">
<meta name="color-scheme" content="dark light" />
<meta property="og:site_name" content={websiteDomain} />
<meta name="twitter:domain" content={websiteDomain} />
<meta property="og:type" content="website" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Person",
"email": "contact@alexcreates.fr",
"jobTitle": "Front-end engineer",
"name": "Alexis Pelé",
"url": "https://alexcreates.fr/",
"description": "Front-end engineer specializing in TypeScript and Vue.js, building performant, accessible web applications.",
"sameAs": [
"https://gitea.peacock-wyrm.ts.net/Joururi",
"https://fr.linkedin.com/in/alexis-pel%C3%A9-b27958159",
"https://github.com/AlexisNP"
],
"knowsAbout": [
"TypeScript",
"Vue.js",
"Nuxt.js",
"JavaScript",
"Front-End Development",
"Web Performance Optimization",
"REST APIs",
"Pinia",
"Vite",
"Docker",
"Docker Composer",
"Angular",
"PHP",
"Wordpress",
"Aria",
"Accessibility",
"Tailscale"
],
"knowsLanguage": [
{
"@type": "Language",
"name": "French",
"alternateName": "fr"
},
{
"@type": "Language",
"name": "English",
"alternateName": "en"
}
],
"worksFor": {
"@type": "Organization",
"name": "Agence Polux",
"url": "https://agence-polux.fr/"
},
"nationality": {
"@type": "Country",
"name": "France"
},
"pronouns": "he/him"
},
{
"@type": "ItemList",
"@id": "https://alexcreates.fr/#projects",
"name": "Featured Projects",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "CreativeWork",
"name": "Leim Maps",
"description": "A Vue 3 + TypeScript application for X.",
"url": "https://maps.alexcreates.fr",
"sameAs": "https://gitea.peacock-wyrm.ts.net/Joururi/leim-maps",
"image": "https://alexcreates.fr/images/project-one.jpg",
"creator": {
"@id": "https://alexcreates.fr/#person"
},
"keywords": "Vue 3, TypeScript, Astro, Vite, Leaflet"
}
}
]
},
{
"@type": "WebSite",
"@id": "https://alexcreates.fr/#website",
"url": "https://alexcreates.fr",
"name": "Alexis Pelé | Front-End Engineer",
"description": "Portfolio of Alexis Pelé, a front-end engineer.",
"publisher": {
"@id": "https://alexcreates.fr/#person"
},
"inLanguage": "en-US"
},
{
"@type": "BreadcrumbList",
"@id": "https://alexcreates.fr/#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://alexcreates.fr/"
}
]
}
]
}
</script>
</head>
<body class="h-screen relative bg-slate-950 text-white">
<Navbar />
<div class="container pt-28">
<slot />
</div>
{hasParticles &&
<BgParticles />
}
{hasGrid &&
<BgGrid />
}
</body>
</html>