2022-09-30 16:18:49 +02:00
|
|
|
<template>
|
|
|
|
|
2022-12-08 15:17:39 +01:00
|
|
|
<div class="app">
|
|
|
|
<NuxtPage class="app__main"/>
|
|
|
|
<AppFooter class="app__footer"/>
|
2022-09-30 16:18:49 +02:00
|
|
|
</div>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// HEAD
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
const route = useRoute();
|
|
|
|
const pageTitle = route.meta.pageTitleChunk ? `Paul Nicoué | ${route.meta.pageTitleChunk}` : 'Paul Nicoué';
|
|
|
|
const pageUrl = `https://paulnicoue.com${route.path}`;
|
|
|
|
|
|
|
|
useHead({
|
|
|
|
title: pageTitle,
|
|
|
|
meta: [
|
|
|
|
/* Basic metadata */
|
|
|
|
{charset: 'utf-8'},
|
|
|
|
{name: 'viewport', content: 'width=device-width'},
|
|
|
|
/* Name */
|
|
|
|
{id: 'schema_name', itemprop: 'name', content: 'Paul Nicoué'},
|
|
|
|
/* Description */
|
2022-12-08 15:17:39 +01:00
|
|
|
{name: 'description', content: 'Intégrateur web et développeur full stack.'},
|
|
|
|
{id: 'schema_description', itemprop: 'description', content: 'Intégrateur web et développeur full stack.'},
|
2022-09-30 16:18:49 +02:00
|
|
|
/* Author */
|
|
|
|
{name: 'author', content: 'Paul Nicoué'},
|
|
|
|
/* Image */
|
2022-12-08 15:17:39 +01:00
|
|
|
{id: 'schema_image', itemprop: 'image', content: 'images/paul-nicoue-logo-1200x675px.png'},
|
2022-09-30 16:18:49 +02:00
|
|
|
/* Open Graph */
|
|
|
|
{property: 'og:title', content: pageTitle},
|
2022-12-08 15:17:39 +01:00
|
|
|
{property: 'og:description', content: 'Intégrateur web et développeur full stack.'},
|
|
|
|
{property: 'og:image', content: 'images/paul-nicoue-logo-1200x675px.png'},
|
2022-09-30 16:18:49 +02:00
|
|
|
{property: 'og:image:width', content: '1200'},
|
|
|
|
{property: 'og:image:height', content: '675'},
|
|
|
|
{property: 'og:url', content: pageUrl},
|
|
|
|
{property: 'og:type', content: 'website'},
|
|
|
|
/* Twitter Card */
|
|
|
|
{name: 'twitter:card', content: 'summary_large_image'},
|
|
|
|
{name: 'twitter:title', content: 'Paul Nicoué'},
|
2022-12-08 15:17:39 +01:00
|
|
|
{name: 'twitter:description', content: 'Intégrateur web et développeur full stack.'},
|
|
|
|
{name: 'twitter:image', content: 'images/paul-nicoue-logo-1200x675px.png'}
|
2022-09-30 16:18:49 +02:00
|
|
|
],
|
|
|
|
link: [
|
|
|
|
/* Canonical URL */
|
|
|
|
{rel: 'canonical', href: pageUrl},
|
|
|
|
/* Favicon */
|
2022-12-08 15:17:39 +01:00
|
|
|
{rel: 'icon', sizes: 'any', href: 'favicon/paul-nicoue-favicon.ico'},
|
|
|
|
{rel: 'icon', type: 'image/svg+xml', href: 'favicon/paul-nicoue-favicon.svg'},
|
|
|
|
{rel: 'apple-touch-icon', href: 'favicon/paul-nicoue-apple-touch-icon.png'},
|
|
|
|
{rel: 'manifest', href: 'favicon/paul-nicoue.webmanifest'}
|
2022-09-30 16:18:49 +02:00
|
|
|
],
|
|
|
|
style: [
|
|
|
|
/* Schema */
|
|
|
|
{itemscope: true, itemtype: 'https://schema.org/WebSite', itemref: 'schema_name schema_description schema_image'}
|
|
|
|
],
|
|
|
|
script: [
|
|
|
|
/* Matomo tracking code */
|
|
|
|
{children: `
|
|
|
|
var _paq = window._paq = window._paq || [];
|
|
|
|
_paq.push(["disableCookies"]);
|
|
|
|
_paq.push(['trackPageView']);
|
|
|
|
_paq.push(['enableLinkTracking']);
|
|
|
|
(function() {
|
|
|
|
var u="https://matomo.paulnicoue.com/";
|
|
|
|
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
|
|
|
_paq.push(['setSiteId', '4']);
|
|
|
|
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
|
|
|
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
|
|
|
|
})();
|
|
|
|
`}
|
|
|
|
]
|
|
|
|
})
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// MODULES
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
@use 'minireset.css';
|
2022-12-08 15:17:39 +01:00
|
|
|
@use '~/assets/styles/fonts';
|
|
|
|
@use '~/assets/styles/variables';
|
|
|
|
@use '~/assets/styles/animations';
|
2022-09-30 16:18:49 +02:00
|
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// GENERALITIES
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
// Fonts and colors
|
|
|
|
|
|
|
|
body {
|
|
|
|
font-family: var(--text-font-family);
|
|
|
|
font-size: var(--text-font-size);
|
2022-12-08 15:17:39 +01:00
|
|
|
font-weight: var(--regular-font-weight);
|
2022-09-30 16:18:49 +02:00
|
|
|
line-height: var(--text-line-height);
|
|
|
|
color: white;
|
|
|
|
background-color: var(--eerie-black);
|
|
|
|
}
|
|
|
|
|
|
|
|
h1 {
|
|
|
|
font-family: var(--title-font-family);
|
|
|
|
font-size: var(--h1-font-size);
|
2022-12-08 15:17:39 +01:00
|
|
|
font-weight: var(--medium-font-weight);
|
2022-09-30 16:18:49 +02:00
|
|
|
line-height: var(--h1-line-height);
|
|
|
|
}
|
|
|
|
|
|
|
|
h2 {
|
2022-12-08 15:17:39 +01:00
|
|
|
font-family: var(--title-font-family);
|
2022-09-30 16:18:49 +02:00
|
|
|
font-size: var(--h2-font-size);
|
|
|
|
line-height: var(--h2-line-height);
|
|
|
|
margin: 0 0 4rem 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
h3 {
|
|
|
|
font-family: var(--text-font-family);
|
|
|
|
font-size: var(--h3-font-size);
|
|
|
|
line-height: var(--h3-line-height);
|
|
|
|
margin: 2rem 0 1rem 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
strong {
|
|
|
|
font-weight: var(--bold-font-weight);
|
|
|
|
}
|
|
|
|
|
|
|
|
em {
|
|
|
|
font-style: italic;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Link style
|
|
|
|
|
|
|
|
a {
|
|
|
|
color: white;
|
|
|
|
text-decoration: underline var(--emerald);
|
|
|
|
border-radius: 2px;
|
|
|
|
transition: color 200ms ease-in-out;
|
|
|
|
|
|
|
|
&:hover,
|
|
|
|
&:focus,
|
|
|
|
&:active {
|
|
|
|
color: var(--emerald);
|
|
|
|
}
|
|
|
|
|
|
|
|
&:focus-visible {
|
|
|
|
outline: 1px dashed var(--emerald);
|
|
|
|
outline-offset: 2px;
|
|
|
|
animation: expand-outline 200ms ease-in-out;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-12-08 15:17:39 +01:00
|
|
|
// Layout
|
|
|
|
|
|
|
|
.app {
|
|
|
|
min-height: 100vh;
|
|
|
|
display: grid;
|
|
|
|
grid:
|
|
|
|
'app-main' 1fr
|
|
|
|
'app-footer' auto
|
|
|
|
/ 1fr;
|
|
|
|
place-items: center;
|
|
|
|
|
|
|
|
&__main {
|
|
|
|
grid-area: app-main;
|
|
|
|
}
|
|
|
|
|
|
|
|
&__footer {
|
|
|
|
grid-area: app-footer;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2022-09-30 16:18:49 +02:00
|
|
|
</style>
|