Compare commits
2 commits
1b37e852e0
...
9afaa44c4b
Author | SHA1 | Date | |
---|---|---|---|
|
9afaa44c4b | ||
|
750f457488 |
16 changed files with 281 additions and 283 deletions
5
assets/css/abstracts/_index.scss
Normal file
5
assets/css/abstracts/_index.scss
Normal file
|
@ -0,0 +1,5 @@
|
|||
// --------------------------------------------------
|
||||
// ABSTRACTS (INDEX)
|
||||
// --------------------------------------------------
|
||||
|
||||
@forward 'variables';
|
|
@ -1,6 +1,6 @@
|
|||
// ----------------------------------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
// VARIABLES
|
||||
// ----------------------------------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
:root {
|
||||
|
80
assets/css/base/_base.scss
Normal file
80
assets/css/base/_base.scss
Normal file
|
@ -0,0 +1,80 @@
|
|||
@use '../abstracts' as *;
|
||||
|
||||
// --------------------------------------------------
|
||||
// BASE STYLE
|
||||
// --------------------------------------------------
|
||||
|
||||
// Fonts and colors
|
||||
|
||||
body {
|
||||
font-family: var(--text-font-family);
|
||||
font-size: var(--text-font-size);
|
||||
line-height: var(--text-line-height);
|
||||
color: var(--black);
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: var(--bold-font-weight);
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
// Link style
|
||||
|
||||
a {
|
||||
color: var(--black);
|
||||
text-decoration: none;
|
||||
transition: text-decoration 200ms ease-in-out;
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&:focus-visible {
|
||||
outline: 1px dashed var(--black);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
// General layout
|
||||
|
||||
body {
|
||||
min-height: 100vh !important;
|
||||
|
||||
header {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
|
||||
.header__logo {
|
||||
width: 5rem;
|
||||
}
|
||||
}
|
||||
|
||||
main {}
|
||||
|
||||
footer {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
gap: 0.8rem;
|
||||
|
||||
.footer__link {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: var(--icon-size);
|
||||
height: var(--icon-size);
|
||||
|
||||
svg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
6
assets/css/base/_index.scss
Normal file
6
assets/css/base/_index.scss
Normal file
|
@ -0,0 +1,6 @@
|
|||
// --------------------------------------------------
|
||||
// BASE (INDEX)
|
||||
// --------------------------------------------------
|
||||
|
||||
@forward 'minireset';
|
||||
@forward 'base';
|
|
@ -1,6 +1,6 @@
|
|||
/* ----------------------------------------------------------------------------
|
||||
/* --------------------------------------------------
|
||||
MINIRESET V0.0.6
|
||||
---------------------------------------------------------------------------- */
|
||||
-------------------------------------------------- */
|
||||
|
||||
html,
|
||||
body,
|
|
@ -1,128 +1,7 @@
|
|||
@use 'utils/minireset';
|
||||
@use '@splidejs/splide/dist/css/splide-core.min';
|
||||
@use 'partials/variables' as *;
|
||||
@use 'partials/animations';
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// GENERALITIES
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Fonts and colors
|
||||
|
||||
body {
|
||||
font-family: var(--text-font-family);
|
||||
font-size: var(--text-font-size);
|
||||
line-height: var(--text-line-height);
|
||||
color: var(--black);
|
||||
}
|
||||
|
||||
strong {
|
||||
font-weight: var(--bold-font-weight);
|
||||
}
|
||||
|
||||
em {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
// Link style
|
||||
|
||||
a {
|
||||
color: var(--black);
|
||||
text-decoration: none;
|
||||
transition: text-decoration 200ms ease-in-out;
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&:focus-visible {
|
||||
outline: 1px dashed var(--black);
|
||||
outline-offset: 2px;
|
||||
animation: expand-outline 200ms ease-in-out;
|
||||
}
|
||||
}
|
||||
|
||||
// General layout
|
||||
|
||||
body {
|
||||
min-height: 100vh;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
// MAIN
|
||||
// ----------------------------------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
// Home section
|
||||
|
||||
.home-section {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
width: 100%;
|
||||
min-height: 100vh;
|
||||
padding: var(--sidebar-padding);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.social {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin: 0.8rem 0 0 0;
|
||||
|
||||
&__link {
|
||||
width: var(--icon-size);
|
||||
height: var(--icon-size);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
+ .social__link {
|
||||
margin: 0 0 0 0.8rem;
|
||||
}
|
||||
|
||||
svg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
&--white {
|
||||
|
||||
&:focus-visible {
|
||||
outline: 1px dashed var(--white);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: $tablet-media-query) {
|
||||
|
||||
.social {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: $desktop-media-query) {}
|
||||
|
||||
// Slider section
|
||||
|
||||
.slider-section {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.splide {
|
||||
|
||||
&__image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
}
|
||||
@use '@splidejs/splide/dist/css/splide-core.min';
|
||||
@use "base" as *;
|
||||
@use "pages" as *;
|
||||
|
|
58
assets/css/pages/_home.scss
Normal file
58
assets/css/pages/_home.scss
Normal file
|
@ -0,0 +1,58 @@
|
|||
@use '../abstracts' as *;
|
||||
|
||||
// --------------------------------------------------
|
||||
// HOME STYLE
|
||||
// --------------------------------------------------
|
||||
|
||||
.home {
|
||||
|
||||
.home__gallery {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
|
||||
.home__gallery-item {
|
||||
display: table;
|
||||
max-width: min(1280px, 100%);
|
||||
|
||||
.home__carousel {
|
||||
|
||||
&:where(.splide) {
|
||||
cursor: pointer;
|
||||
|
||||
.splide__track {
|
||||
|
||||
.splide__list {
|
||||
position: relative;
|
||||
|
||||
.splide__slide {
|
||||
transform: none !important;
|
||||
|
||||
&:not(.is-active) {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
}
|
||||
|
||||
.splide__image {
|
||||
max-height: 80vh;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.home__main-image {
|
||||
max-height: 80vh;
|
||||
}
|
||||
|
||||
.home__image-caption {
|
||||
display: table-caption;
|
||||
caption-side: bottom;
|
||||
width: fit-content;
|
||||
margin: 0.5rem auto 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
5
assets/css/pages/_index.scss
Normal file
5
assets/css/pages/_index.scss
Normal file
|
@ -0,0 +1,5 @@
|
|||
// --------------------------------------------------
|
||||
// PAGES (INDEX)
|
||||
// --------------------------------------------------
|
||||
|
||||
@forward 'home';
|
|
@ -1,9 +1,8 @@
|
|||
// ----------------------------------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
// KIRBY PANEL CUSTOMIZATION
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Image gallery structure field gallery
|
||||
// --------------------------------------------------
|
||||
|
||||
// Image gallery structure field
|
||||
.k-field-name-image_gallery {
|
||||
|
||||
table {
|
||||
|
@ -16,7 +15,6 @@
|
|||
}
|
||||
|
||||
// CV writer field
|
||||
|
||||
.k-field-name-cv {
|
||||
|
||||
.k-text {
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
// ----------------------------------------------------------------------------
|
||||
// ANIMATIONS
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
@keyframes expand-outline {
|
||||
0% {
|
||||
outline-offset: 0;
|
||||
}
|
||||
100% {
|
||||
outline-offset: 2px;
|
||||
}
|
||||
}
|
106
assets/js/app.js
106
assets/js/app.js
|
@ -5,81 +5,42 @@ import create from 'swiped-events';
|
|||
// DATA
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// UTILS
|
||||
|
||||
const body = document.body;
|
||||
|
||||
// SLIDER
|
||||
|
||||
const homeSection = document.querySelector('.home-section');
|
||||
const sliderSection = document.querySelector('.slider-section');
|
||||
let slider;
|
||||
const slides = document.querySelectorAll('.splide__slide');
|
||||
// const body = document.body;
|
||||
const homeCarousels = document.querySelectorAll('.home__carousel');
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// LOGIC
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// UTILS
|
||||
|
||||
// Enable CSS :active pseudo-class in Safari Mobile
|
||||
function enableActivePseudoClass() {
|
||||
document.addEventListener("touchstart", function() {},false);
|
||||
}
|
||||
|
||||
// Convert rem to pixels by getting font-size CSS property
|
||||
function convertRemToPixels(rem) {
|
||||
let fontSize = parseFloat(window.getComputedStyle(body).getPropertyValue('font-size'));
|
||||
return rem * fontSize;
|
||||
}
|
||||
// function convertRemToPixels(rem) {
|
||||
// let fontSize = parseFloat(window.getComputedStyle(body).getPropertyValue('font-size'));
|
||||
// return rem * fontSize;
|
||||
// }
|
||||
|
||||
// SLIDER
|
||||
|
||||
function setUpSlider() {
|
||||
if (sliderSection) {
|
||||
slider = new Splide('.splide', {
|
||||
type: 'fade',
|
||||
rewind: true,
|
||||
rewindByDrag: true,
|
||||
speed: 400,
|
||||
width: '100vw',
|
||||
height: '100vh',
|
||||
arrows: false,
|
||||
pagination: false,
|
||||
easing: 'ease-in-out',
|
||||
drag: true
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function mountSlider() {
|
||||
if (slider) {
|
||||
slider.mount();
|
||||
}
|
||||
}
|
||||
|
||||
function changeSlideOnClick() {
|
||||
if (homeSection && slider) {
|
||||
homeSection.addEventListener('click', function(e) {
|
||||
if (!e.target.closest('.navigation__link') && !e.target.closest('.social__link')) {
|
||||
if (e.clientX >= window.innerWidth / 2) {
|
||||
slider.go('>');
|
||||
} else {
|
||||
slider.go('<');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function changeSlideOnSwipe() {
|
||||
if (homeSection && slider) {
|
||||
homeSection.addEventListener('swiped', function(e) {
|
||||
if (e.detail.dir === 'left') {
|
||||
// Set up multiple Splide carousels
|
||||
function setUpCarousels() {
|
||||
if (homeCarousels.length) {
|
||||
homeCarousels.forEach((item) => {
|
||||
// Create Splide instance
|
||||
let slider = new Splide(item, {
|
||||
arrows: false,
|
||||
drag: true,
|
||||
easing: 'ease-in-out',
|
||||
pagination: false,
|
||||
rewind: true,
|
||||
rewindByDrag: true,
|
||||
role: 'undefined',
|
||||
speed: 250,
|
||||
type: 'fade',
|
||||
width: 'auto',
|
||||
});
|
||||
// Mount slider
|
||||
slider.mount();
|
||||
// Change slide on click
|
||||
slider.on('click', () => {
|
||||
slider.go('>');
|
||||
} else if (e.detail.dir === 'right') {
|
||||
slider.go('<');
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -88,13 +49,4 @@ function changeSlideOnSwipe() {
|
|||
// PROGRAM
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// UTILS
|
||||
|
||||
enableActivePseudoClass();
|
||||
|
||||
// SLIDER
|
||||
|
||||
setUpSlider();
|
||||
mountSlider();
|
||||
changeSlideOnClick();
|
||||
changeSlideOnSwipe();
|
||||
setUpCarousels();
|
||||
|
|
18
public/icons/apple-mail.svg
Normal file
18
public/icons/apple-mail.svg
Normal file
|
@ -0,0 +1,18 @@
|
|||
<svg class="apple-mail-icon" aria-hidden="true" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="apple-mail-icon__gradient" gradientTransform="matrix(341.333771, 0, 0, -341.333771, 23131.050781, 255408.6875)" gradientUnits="userSpaceOnUse" x1="-67.0167" x2="-67.0167" y1="748.2662" y2="746.7667">
|
||||
<stop offset="0" stop-color="#1e51ee"/>
|
||||
<stop offset="1" stop-color="#19e6ff"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<style>
|
||||
.apple-mail-icon__background {
|
||||
fill: url(#apple-mail-icon__gradient);
|
||||
}
|
||||
.apple-mail-icon__white-path {
|
||||
fill: #fff;
|
||||
}
|
||||
</style>
|
||||
<path class="apple-mail-icon__background" d="M 333.376 0 C 384.576 0 410.176 0 438.048 8.528 C 468.192 19.344 492.096 43.232 502.896 73.392 C 512 101.264 512 127.424 512 178.624 L 512 333.376 C 512 384.576 512 410.176 503.472 438.048 C 492.656 468.192 468.768 492.096 438.608 502.896 C 410.736 512 384.576 512 333.376 512 L 178.624 512 C 127.424 512 101.824 512 73.952 503.472 C 43.808 492.096 19.904 468.768 9.104 438.048 C 0 410.736 0 385.136 0 333.376 L 0 178.624 C 0 127.424 0 101.824 8.528 73.952 C 19.904 43.808 43.808 19.904 73.952 9.104 C 101.264 0 127.424 0 178.624 0 L 333.376 0 Z" id="Background_2_"/>
|
||||
<path class="apple-mail-icon__white-path" d="M 420.416 366.928 C 419.84 366.928 418.704 367.504 418.128 367.504 L 93.872 367.504 C 93.296 367.504 92.16 367.504 91.584 366.928 L 192.848 265.664 L 214.464 287.856 C 237.792 311.744 274.768 311.744 298.096 287.856 L 319.712 265.664 L 420.416 366.928 Z M 426.672 356.128 L 426.672 155.312 C 426.672 154.176 426.672 153.024 426.096 152.464 C 425.536 153.6 325.408 257.136 325.408 257.136 L 426.672 358.4 C 426.672 357.264 426.672 356.688 426.672 356.128 Z M 85.328 356.688 L 85.328 156.448 C 85.328 155.312 85.328 154.176 85.904 153.6 C 86.464 154.736 186.592 258.272 186.592 258.272 L 85.904 358.976 C 85.328 358.4 85.328 357.264 85.328 356.688 Z M 420.976 145.632 L 291.84 277.616 C 271.936 297.536 240.064 297.536 220.736 277.616 L 91.584 145.632 C 91.024 145.072 420.976 145.632 420.976 145.632 Z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
31
public/icons/instagram.svg
Normal file
31
public/icons/instagram.svg
Normal file
|
@ -0,0 +1,31 @@
|
|||
<svg class="instagram-icon" aria-hidden="true" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="instagram-icon__gradient" gradientUnits="userSpaceOnUse" x1="328.27" x2="183.73" y1="508.05" y2="3.95" gradientTransform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<stop offset="0" stop-color="#ffdb73"/>
|
||||
<stop offset="0.08" stop-color="#fdad4e"/>
|
||||
<stop offset="0.15" stop-color="#fb832e"/>
|
||||
<stop offset="0.19" stop-color="#fa7321"/>
|
||||
<stop offset="0.23" stop-color="#f6692f"/>
|
||||
<stop offset="0.37" stop-color="#e84a5a"/>
|
||||
<stop offset="0.48" stop-color="#e03675"/>
|
||||
<stop offset="0.55" stop-color="#dd2f7f"/>
|
||||
<stop offset="0.68" stop-color="#b43d97"/>
|
||||
<stop offset="0.97" stop-color="#4d60d4"/>
|
||||
<stop offset="1" stop-color="#4264db"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<style>
|
||||
.instagram-icon__background {
|
||||
fill: url(#instagram-icon__gradient);
|
||||
}
|
||||
.instagram-icon__white-path {
|
||||
fill: #fff;
|
||||
}
|
||||
</style>
|
||||
<g transform="matrix(1.100933, 0, 0, 1.100933, -25.838909, -25.838909)">
|
||||
<rect class="instagram-icon__background" height="465.06" rx="107.23" ry="107.23" width="465.06" y="23.47" x="23.47"/>
|
||||
<path class="instagram-icon__white-path" d="M 331 115.22 C 367.748 115.368 397.502 145.122 397.65 181.87 L 397.65 330.13 C 397.502 366.878 367.748 396.632 331 396.78 L 181 396.78 C 144.252 396.632 114.498 366.878 114.35 330.13 L 114.35 181.87 C 114.498 145.122 144.252 115.368 181 115.22 L 331 115.22 M 331 84.22 L 181 84.22 C 127.29 84.22 83.34 128.22 83.34 181.88 L 83.34 330.13 C 83.34 383.84 127.34 427.79 181 427.79 L 331 427.79 C 384.71 427.79 428.66 383.79 428.66 330.13 L 428.66 181.87 C 428.66 128.16 384.71 84.21 331 84.21 L 331 84.22 Z"/>
|
||||
<path class="instagram-icon__white-path" d="M 256 198.13 C 300.548 198.13 328.391 246.355 306.117 284.935 C 283.843 323.515 228.157 323.515 205.883 284.935 C 200.804 276.138 198.13 266.158 198.13 256 C 198.169 224.055 224.055 198.169 256 198.13 M 256 167.13 C 187.588 167.13 144.83 241.188 179.036 300.435 C 213.242 359.682 298.758 359.682 332.964 300.435 C 340.764 286.925 344.87 271.6 344.87 256 C 344.87 206.918 305.082 167.13 256 167.13 Z"/>
|
||||
<circle class="instagram-icon__white-path" cx="346.81" cy="163.23" r="21.07"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
6
public/icons/logo.svg
Normal file
6
public/icons/logo.svg
Normal file
|
@ -0,0 +1,6 @@
|
|||
<svg viewBox="0 0 3814 1912" xmlns="http://www.w3.org/2000/svg">
|
||||
<g transform="matrix(1, 0, 0, -1, 1426.537109, 1153.771606)">
|
||||
<path style="fill:none;stroke:#000;stroke-width:93.54299927;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" d="m 0,0 c -290.833,17.312 -697.633,-243.443 -961.355,-441.732 -463.22,-348.289 -491.716,-401.405 -327.464,98.265 42.11,128.104 133.935,713.436 134.825,1065.798 1.49,589.899 147.634,423.095 319.826,16.386 C -107.247,-978.225 558.099,-596.729 789.55,-160.404 800.123,-140.473 836,-55 836,-55 c 0,0 25.705,-95.875 94.192,-196.312 C 1081.909,-473.805 1640,-308 1770,-260 c 53.364,19.704 261,-145 571,-221"/>
|
||||
<path style="fill:none;stroke:#fff;stroke-width:8.50399971;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" d="m 0,0 c -290.833,17.312 -697.633,-243.443 -961.355,-441.732 -463.22,-348.289 -491.716,-401.405 -327.464,98.265 42.11,128.104 133.935,713.436 134.825,1065.798 1.49,589.899 147.634,423.095 319.826,16.386 C -107.247,-978.225 558.099,-596.729 789.55,-160.404 800.123,-140.473 836,-55 836,-55 c 0,0 25.705,-95.875 94.192,-196.312 C 1081.909,-473.805 1640,-308 1770,-260 c 53.364,19.704 261,-145 571,-221"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -32,6 +32,9 @@
|
|||
|
||||
{% block header %}
|
||||
<header>
|
||||
<div class="header__logo">
|
||||
{{ svg('icons/logo.svg') | raw }}
|
||||
</div>
|
||||
</header>
|
||||
{% endblock %}
|
||||
|
||||
|
@ -40,58 +43,17 @@
|
|||
|
||||
{% block footer %}
|
||||
<footer>
|
||||
<a class="footer__link" href="{{ instagram }}" target="_blank" title="Go to {{ site.title }}'s Instagram profile">
|
||||
<svg class="instagram-icon" aria-hidden="true" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="instagram-icon__gradient" gradientUnits="userSpaceOnUse" x1="328.27" x2="183.73" y1="508.05" y2="3.95" gradientTransform="matrix(1, 0, 0, 1, 0, 0)">
|
||||
<stop offset="0" stop-color="#ffdb73"/>
|
||||
<stop offset="0.08" stop-color="#fdad4e"/>
|
||||
<stop offset="0.15" stop-color="#fb832e"/>
|
||||
<stop offset="0.19" stop-color="#fa7321"/>
|
||||
<stop offset="0.23" stop-color="#f6692f"/>
|
||||
<stop offset="0.37" stop-color="#e84a5a"/>
|
||||
<stop offset="0.48" stop-color="#e03675"/>
|
||||
<stop offset="0.55" stop-color="#dd2f7f"/>
|
||||
<stop offset="0.68" stop-color="#b43d97"/>
|
||||
<stop offset="0.97" stop-color="#4d60d4"/>
|
||||
<stop offset="1" stop-color="#4264db"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<style>
|
||||
.instagram-icon__background {
|
||||
fill: url(#instagram-icon__gradient);
|
||||
}
|
||||
.instagram-icon__white-path {
|
||||
fill: #fff;
|
||||
}
|
||||
</style>
|
||||
<g transform="matrix(1.100933, 0, 0, 1.100933, -25.838909, -25.838909)">
|
||||
<rect class="instagram-icon__background" height="465.06" rx="107.23" ry="107.23" width="465.06" y="23.47" x="23.47"/>
|
||||
<path class="instagram-icon__white-path" d="M 331 115.22 C 367.748 115.368 397.502 145.122 397.65 181.87 L 397.65 330.13 C 397.502 366.878 367.748 396.632 331 396.78 L 181 396.78 C 144.252 396.632 114.498 366.878 114.35 330.13 L 114.35 181.87 C 114.498 145.122 144.252 115.368 181 115.22 L 331 115.22 M 331 84.22 L 181 84.22 C 127.29 84.22 83.34 128.22 83.34 181.88 L 83.34 330.13 C 83.34 383.84 127.34 427.79 181 427.79 L 331 427.79 C 384.71 427.79 428.66 383.79 428.66 330.13 L 428.66 181.87 C 428.66 128.16 384.71 84.21 331 84.21 L 331 84.22 Z"/>
|
||||
<path class="instagram-icon__white-path" d="M 256 198.13 C 300.548 198.13 328.391 246.355 306.117 284.935 C 283.843 323.515 228.157 323.515 205.883 284.935 C 200.804 276.138 198.13 266.158 198.13 256 C 198.169 224.055 224.055 198.169 256 198.13 M 256 167.13 C 187.588 167.13 144.83 241.188 179.036 300.435 C 213.242 359.682 298.758 359.682 332.964 300.435 C 340.764 286.925 344.87 271.6 344.87 256 C 344.87 206.918 305.082 167.13 256 167.13 Z"/>
|
||||
<circle class="instagram-icon__white-path" cx="346.81" cy="163.23" r="21.07"/>
|
||||
</g>
|
||||
</svg>
|
||||
<a class="footer__link"
|
||||
href="{{ instagram }}"
|
||||
target="_blank"
|
||||
title="Go to {{ site.title }}'s Instagram profile">
|
||||
{{ svg('icons/instagram.svg') | raw }}
|
||||
</a>
|
||||
<a class="footer__link" href="mailto:{{ email }}" target="_blank" title="Write an email to {{ site.title }}">
|
||||
<svg class="apple-mail-icon" aria-hidden="true" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient id="apple-mail-icon__gradient" gradientTransform="matrix(341.333771, 0, 0, -341.333771, 23131.050781, 255408.6875)" gradientUnits="userSpaceOnUse" x1="-67.0167" x2="-67.0167" y1="748.2662" y2="746.7667">
|
||||
<stop offset="0" stop-color="#1e51ee"/>
|
||||
<stop offset="1" stop-color="#19e6ff"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<style>
|
||||
.apple-mail-icon__background {
|
||||
fill: url(#apple-mail-icon__gradient);
|
||||
}
|
||||
.apple-mail-icon__white-path {
|
||||
fill: #fff;
|
||||
}
|
||||
</style>
|
||||
<path class="apple-mail-icon__background" d="M 333.376 0 C 384.576 0 410.176 0 438.048 8.528 C 468.192 19.344 492.096 43.232 502.896 73.392 C 512 101.264 512 127.424 512 178.624 L 512 333.376 C 512 384.576 512 410.176 503.472 438.048 C 492.656 468.192 468.768 492.096 438.608 502.896 C 410.736 512 384.576 512 333.376 512 L 178.624 512 C 127.424 512 101.824 512 73.952 503.472 C 43.808 492.096 19.904 468.768 9.104 438.048 C 0 410.736 0 385.136 0 333.376 L 0 178.624 C 0 127.424 0 101.824 8.528 73.952 C 19.904 43.808 43.808 19.904 73.952 9.104 C 101.264 0 127.424 0 178.624 0 L 333.376 0 Z" id="Background_2_"/>
|
||||
<path class="apple-mail-icon__white-path" d="M 420.416 366.928 C 419.84 366.928 418.704 367.504 418.128 367.504 L 93.872 367.504 C 93.296 367.504 92.16 367.504 91.584 366.928 L 192.848 265.664 L 214.464 287.856 C 237.792 311.744 274.768 311.744 298.096 287.856 L 319.712 265.664 L 420.416 366.928 Z M 426.672 356.128 L 426.672 155.312 C 426.672 154.176 426.672 153.024 426.096 152.464 C 425.536 153.6 325.408 257.136 325.408 257.136 L 426.672 358.4 C 426.672 357.264 426.672 356.688 426.672 356.128 Z M 85.328 356.688 L 85.328 156.448 C 85.328 155.312 85.328 154.176 85.904 153.6 C 86.464 154.736 186.592 258.272 186.592 258.272 L 85.904 358.976 C 85.328 358.4 85.328 357.264 85.328 356.688 Z M 420.976 145.632 L 291.84 277.616 C 271.936 297.536 240.064 297.536 220.736 277.616 L 91.584 145.632 C 91.024 145.072 420.976 145.632 420.976 145.632 Z"/>
|
||||
</svg>
|
||||
<a class="footer__link"
|
||||
href="mailto:{{ email }}"
|
||||
target="_blank"
|
||||
title="Write an email to {{ site.title }}">
|
||||
{{ svg('icons/apple-mail.svg') | raw }}
|
||||
</a>
|
||||
</footer>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,33 +1,43 @@
|
|||
{% extends "base.twig" %}
|
||||
|
||||
{% block main %}
|
||||
<main>
|
||||
<main class="home">
|
||||
|
||||
<section class="gallery" aria-label="{{ site.title }}'s artwork gallery">
|
||||
<section class="home__gallery"
|
||||
aria-label="{{ site.title }}'s artwork gallery">
|
||||
{% for galleryItem in galleryItems %}
|
||||
{% if galleryItem.main_image().isNotEmpty %}
|
||||
{% set mainImage = galleryItem.main_image().toFile() %}
|
||||
<figure class="gallery__item">
|
||||
<figure class="home__gallery-item">
|
||||
{% if galleryItem.related_image().isNotEmpty %}
|
||||
{% set relatedImage = galleryItem.related_image().toFile() %}
|
||||
<div class="splide">
|
||||
<div class="home__carousel splide">
|
||||
<div class="splide__track">
|
||||
<ul class="splide__list">
|
||||
<li class="splide__slide">
|
||||
<img class="splide__image" src="{{ mainImage.url }}" srcset="{{ mainImage.srcset() }}" alt="{{ mainImage.alt_text }}">
|
||||
<img class="splide__image"
|
||||
src="{{ mainImage.url }}"
|
||||
srcset="{{ mainImage.srcset() }}"
|
||||
alt="{{ mainImage.alt_text }}">
|
||||
</li>
|
||||
<li class="splide__slide">
|
||||
<img class="splide__image" src="{{ relatedImage.url }}" srcset="{{ relatedImage.srcset() }}" alt="{{ relatedImage.alt_text }}">
|
||||
<img class="splide__image"
|
||||
src="{{ relatedImage.url }}"
|
||||
srcset="{{ relatedImage.srcset() }}"
|
||||
alt="{{ relatedImage.alt_text }}">
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<img class="gallery__main-image" src="{{ mainImage.url }}" srcset="{{ mainImage.srcset() }}" alt="{{ mainImage.alt_text }}">
|
||||
<img class="home__main-image"
|
||||
src="{{ mainImage.url }}"
|
||||
srcset="{{ mainImage.srcset() }}"
|
||||
alt="{{ mainImage.alt_text }}">
|
||||
{% endif %}
|
||||
{% if galleryItem.caption().isNotEmpty %}
|
||||
{% set caption = galleryItem.caption() %}
|
||||
<figcaption class="gallery__caption">{{ caption | raw }}</figcaption>
|
||||
<figcaption class="home__image-caption">{{ caption | raw }}</figcaption>
|
||||
{% endif %}
|
||||
</figure>
|
||||
{% endif %}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue