Compare commits
14 commits
8ac322868e
...
00b0f4b79a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00b0f4b79a | ||
|
|
2851ada65c | ||
|
|
3b397ef81f | ||
|
|
3b7afad40a | ||
|
|
50d5a67f2c | ||
|
|
ade213e11a | ||
|
|
83b9e84d5c | ||
|
|
b0ed278a52 | ||
|
|
1a19666952 | ||
|
|
513a975459 | ||
|
|
1d0d83b24e | ||
|
|
44629924c4 | ||
|
|
7a56c72071 | ||
|
|
d406b07ee7 |
5
_config/shortcodes.js
Normal file
5
_config/shortcodes.js
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import link from "./shortcodes/link.js"
|
||||
|
||||
export default function (eleventyConfig, pluginOptions) {
|
||||
eleventyConfig.addPairedShortcode("link", link);
|
||||
}
|
||||
3
_config/shortcodes/link.js
Normal file
3
_config/shortcodes/link.js
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
export default (content, url, target = "_blank", attr = "") => {
|
||||
return `<a href="${url}" target="${target}" ${attr} class="button">${content}</a>`
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ import { inspect } from "util";
|
|||
import pluginIcons from 'eleventy-plugin-icons';
|
||||
import pluginPDF from "./_config/eleventy-plugin-pdf.js";
|
||||
import pluginTokens from "./_config/eleventy-plugin-tokens.js";
|
||||
import shortcodes from "./_config/shortcodes.js";
|
||||
|
||||
export default async function (eleventyConfig) {
|
||||
eleventyConfig.setUseGitIgnore(false);
|
||||
|
|
@ -29,6 +30,7 @@ export default async function (eleventyConfig) {
|
|||
|
||||
eleventyConfig.addPassthroughCopy('src/favicon.ico')
|
||||
|
||||
eleventyConfig.addPlugin(shortcodes);
|
||||
eleventyConfig.addPlugin(pluginTokens, { tokens: "./src/_data/tokens.json", destination: "./src/css/theme.css" });
|
||||
eleventyConfig.addPlugin(pluginPDF);
|
||||
eleventyConfig.addPlugin(pluginIcons, {
|
||||
|
|
|
|||
|
|
@ -9,10 +9,13 @@
|
|||
"skills": [
|
||||
"HTML",
|
||||
"CSS",
|
||||
"Bootstrap",
|
||||
"Javascript",
|
||||
"Accessibilité",
|
||||
"Bootstrap",
|
||||
"Figma",
|
||||
"jQuery",
|
||||
"Figma"
|
||||
"SCSS",
|
||||
"Git"
|
||||
],
|
||||
"lang": [
|
||||
"Français (langue maternelle)",
|
||||
|
|
|
|||
|
|
@ -3,7 +3,24 @@
|
|||
<h1 class="hero-title">{% if section.data.displayedTitle %}{{ section.data.displayedTitle }}{% else %}{{ section.data.title }}{% endif %}</h1>
|
||||
<p>{{section.data.description}}</p>
|
||||
{{ section.templateContent }}
|
||||
{% render 'partials/components/socials', socials: author.socials, mail: author.mail, showLabel: true %}
|
||||
<ul class="list-inline socials-list socials-list--label">
|
||||
{% if author.socials %}
|
||||
{% for social in author.socials %}
|
||||
<li>
|
||||
{% link social.link, "_blank", "data-ghost-button" %}{% icon social.icon %} {{ social.title }}{% endlink %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if author.mail %}
|
||||
<li>
|
||||
{% capture href %}mailto:{{ author.mail }}{% endcapture %}
|
||||
{% link href, "_blank", "data-ghost-button" %}{% icon "mail" %} Me contacter{% endlink %}
|
||||
</li>
|
||||
{% endif %}
|
||||
<li>
|
||||
{% link "/resume.pdf", "_blank", "data-ghost-button" %}{% icon "download" %} Télécharger en PDF{% endlink %}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
|
|
|||
|
|
@ -4,13 +4,18 @@
|
|||
<span></span>
|
||||
<div class="links">
|
||||
{%- for link in links -%}
|
||||
{% render 'partials/components/link', icon: link.icon, showLabel: false, label: link.title, href: link.link, class: classes, target: "_blank" %}
|
||||
{% link link.link, "_blank", "data-ghost-button" %}{% icon link.icon %} <span class="sr-only">{{ social.title }}</span>{% endlink %}
|
||||
{%- endfor -%}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<h3>{{ title }}</h3>
|
||||
<p>{{ description }}</p>
|
||||
<ul class="list-inline">
|
||||
{% for tag in tags %}
|
||||
<li><span class="badge">{{ tag }}</span></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
</li>
|
||||
|
|
@ -6,7 +6,8 @@
|
|||
background: data.background,
|
||||
links: data.links,
|
||||
title: data.title,
|
||||
description: data.description %}
|
||||
description: data.description,
|
||||
tags: data.tags %}
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
|
@ -2,13 +2,13 @@
|
|||
{% if socials %}
|
||||
{% for social in socials %}
|
||||
<li>
|
||||
{% render 'partials/components/link', icon: social.icon, showLabel: showLabel, label: social.title, href: social.link, class: "button", attr: "data-ghost-button", target: "_blank" %}
|
||||
{% link social.link, "_blank", "data-ghost-button" %}{% icon social.icon %} <span class="sr-only">{{social.title}}</span>{% endlink %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% if mail %}
|
||||
<li>
|
||||
{% capture href %}mailto:{{ mail }}{% endcapture %}
|
||||
{% render 'partials/components/link', icon: "mail", showLabel: showLabel, label: "Contactez moi par mail", href: href, class: "button", attr: "data-ghost-button", target: "_blank" %}
|
||||
{% link href, "_blank", "data-ghost-button" %}{% icon "mail" %} <span class="sr-only">Me contacter</span>{% endlink %}
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
|
|
|||
|
|
@ -76,5 +76,8 @@
|
|||
--button-bg: transparent;
|
||||
--button-border-color: transparent;
|
||||
--button-color: currentColor;
|
||||
--button-hover-bg: transparent;
|
||||
--button-hover-bg: color-mix(in srgb, var(--color-neutral-500) 35%, transparent 65%);
|
||||
--button-hover-color: currentColor;
|
||||
--button-padding: .2em .4em;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,23 @@
|
|||
.competences-section .col {
|
||||
width: 100%;
|
||||
margin-bottom: 2rem;
|
||||
.skills-gallery {
|
||||
display: grid;
|
||||
gap: 1rem;
|
||||
grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
|
||||
}
|
||||
@media screen and (min-width: 991px) {
|
||||
.competences-section > div {
|
||||
flex-direction: row;
|
||||
.skill {
|
||||
font-size: 2rem;
|
||||
font-size: clamp(2rem, 1.2967rem + 2.1978vw, 3rem);
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.skill {
|
||||
text-align: left;
|
||||
}
|
||||
.competences-section .col {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 991px) {
|
||||
.skills-gallery {
|
||||
row-gap: 3.5rem;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,14 +1,17 @@
|
|||
.project-grid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
|
||||
grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
|
||||
gap: 1rem;
|
||||
display: grid;
|
||||
}
|
||||
.project-grid li {
|
||||
.project-grid > li {
|
||||
border-radius: var(--border-radius);
|
||||
overflow: hidden;
|
||||
}
|
||||
.project-grid .button {
|
||||
--button-padding: .2em;
|
||||
}
|
||||
.card {
|
||||
--background: url(https://placehold.co/200x150);
|
||||
--background: linear-gradient(45deg, var(--color-neutral-100) 30%, var(--color-neutral-300) 100%);
|
||||
z-index: 1;
|
||||
background: var(--background);
|
||||
background-repeat: no-repeat;
|
||||
|
|
@ -45,4 +48,7 @@
|
|||
}
|
||||
.card .content {
|
||||
padding: 1rem 0.4rem 0;
|
||||
}
|
||||
.card .list-inline {
|
||||
gap: 0.5ch;
|
||||
}
|
||||
|
|
@ -8,6 +8,7 @@
|
|||
.timeline:before {
|
||||
content: "";
|
||||
background-color: var(--color-neutral-200);
|
||||
background: linear-gradient(180deg, var(--color-neutral-200) 0%, var(--color-neutral-200) 85%, transparent 100%);
|
||||
inline-size: 6px;
|
||||
margin-inline-start: -3px;
|
||||
position: absolute;
|
||||
|
|
@ -31,7 +32,7 @@
|
|||
aspect-ratio: 1;
|
||||
inline-size: var(--size);
|
||||
background-color: var(--color-neutral-200);
|
||||
border: 6px solid var(--color-primary-400);
|
||||
border: 6px solid var(--color-primary-600);
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
transition: all 0.2s ease-in-out;
|
||||
|
|
@ -41,5 +42,5 @@
|
|||
transform: translateY(50%);
|
||||
}
|
||||
.timeline li:hover:before {
|
||||
border-color: var(--color-primary-700);
|
||||
border-color: var(--color-secondary-600);
|
||||
}
|
||||
|
|
@ -16,4 +16,7 @@ footer .socials-list {
|
|||
--item-gap: 0.2ch;
|
||||
--item-separator: "";
|
||||
margin: 0;
|
||||
}
|
||||
footer .button.button {
|
||||
--button-padding: .2em;
|
||||
}
|
||||
|
|
@ -5,6 +5,10 @@ header {
|
|||
inset-block-start: 0;
|
||||
inset-inline: 0;
|
||||
}
|
||||
header.scroll {
|
||||
box-shadow: hsla(0 0% 0% / 0.1) 0 0.5rem 1rem;
|
||||
transition-duration: 400ms;
|
||||
}
|
||||
header nav ul {
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-end;
|
||||
|
|
|
|||
|
|
@ -104,4 +104,16 @@ main li {
|
|||
section {
|
||||
margin-block: 3.5rem;
|
||||
padding-block: 2rem;
|
||||
}
|
||||
|
||||
.badge {
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
line-height: 1;
|
||||
padding: .2em .3em;
|
||||
font-size: .75em;
|
||||
border-radius: .4em;
|
||||
color: var(--badge-color, var(--color-secondary-600));
|
||||
background: color-mix(in srgb, var(--badge-color, var(--color-secondary-600)) 40%, white 100%);
|
||||
border: 1px solid color-mix(in srgb, var(--badge-color, var(--color-secondary-600)) 90%, white 100%);
|
||||
}
|
||||
|
|
@ -1,11 +1,24 @@
|
|||
// Javascript is active
|
||||
document.documentElement.classList.add('js');
|
||||
|
||||
// Add class when scrolling in the page
|
||||
const header = document.getElementById("site-header");
|
||||
const intercept = document.createElement("div");
|
||||
|
||||
intercept.setAttribute("data-observer-intercept", "");
|
||||
header.before(intercept);
|
||||
|
||||
const observer = new IntersectionObserver(([entry]) => {
|
||||
header.classList.toggle("scroll", !entry.isIntersecting);
|
||||
});
|
||||
|
||||
observer.observe(intercept);
|
||||
|
||||
// Update navigation according to page scroll
|
||||
const options = {
|
||||
rootMargin: '0px 0px -60% 0px'
|
||||
};
|
||||
const observer = new IntersectionObserver(entries => {
|
||||
const sectionObserver = new IntersectionObserver(entries => {
|
||||
entries.forEach(entry => {
|
||||
const id = entry.target.getAttribute("id");
|
||||
if (entry.isIntersecting) {
|
||||
|
|
@ -21,7 +34,7 @@ const observer = new IntersectionObserver(entries => {
|
|||
},options);
|
||||
|
||||
document.querySelectorAll('section').forEach(function(section, i) {
|
||||
observer.observe(section);
|
||||
sectionObserver.observe(section);
|
||||
});
|
||||
|
||||
// Random accent font & color
|
||||
|
|
|
|||
|
|
@ -2,15 +2,12 @@
|
|||
title: Compétences
|
||||
displayedTitle: Mes compétences
|
||||
order: 1
|
||||
classes: 'competences-section langues-section'
|
||||
showTitle: false
|
||||
---
|
||||
|
||||
<div class="flex justify-center">
|
||||
<div class="col">
|
||||
{% render "partials/components/list", title: "Compétences techniques", content: author.skills %}
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
{% render "partials/components/list", title: "Langues", content: author.lang %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="skills-gallery">
|
||||
{% for skill in author.skills %}
|
||||
<li class="skill">{{skill}}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
---
|
||||
title: Téléchargement
|
||||
showTitle: false
|
||||
excludeFromPdf: true
|
||||
order: 4
|
||||
---
|
||||
|
||||
<div class="flex justify-center items-center download">
|
||||
<p>Vous souhaitez imprimer ce document ?</p>
|
||||
<i>--></i>
|
||||
<button type="button" onclick="window.print()" class="button">Télécharger en PDF {% icon "download" %}</button>
|
||||
</div>
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
layout: pdf
|
||||
permalink: "pdf.pdf"
|
||||
permalink: "resume.pdf"
|
||||
eleventyComputed:
|
||||
title: "{{author.firstName}} {{author.name}}, {{author.occupation}}"
|
||||
links:
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@ links:
|
|||
- title: Voir sur Github
|
||||
link: https://github.com
|
||||
icon: simple-icons:github
|
||||
tags:
|
||||
- C#
|
||||
- Unity
|
||||
---
|
||||
|
||||
* desc1
|
||||
|
|
|
|||
|
|
@ -5,4 +5,6 @@ links:
|
|||
- title: Voir sur Github
|
||||
link: https://github.com
|
||||
icon: simple-icons:github
|
||||
tags:
|
||||
- Python
|
||||
---
|
||||
|
|
@ -8,4 +8,7 @@ links:
|
|||
- title: Voir sur Github
|
||||
link: https://github.com
|
||||
icon: simple-icons:github
|
||||
tags:
|
||||
- PHP
|
||||
- LDAP
|
||||
---
|
||||
|
|
@ -8,4 +8,7 @@ links:
|
|||
- title: Voir sur Github
|
||||
link: https://github.com
|
||||
icon: simple-icons:github
|
||||
tags:
|
||||
- JS
|
||||
- IOT
|
||||
---
|
||||
|
|
@ -1,9 +1,10 @@
|
|||
---
|
||||
title: Snake
|
||||
description: Un snake réalisé en Java
|
||||
background: rgb(255, 143, 143)
|
||||
links:
|
||||
- title: Voir sur Github
|
||||
link: https://github.com
|
||||
icon: simple-icons:github
|
||||
tags:
|
||||
- Java
|
||||
---
|
||||
Loading…
Reference in a new issue