Edit indentation style

This commit is contained in:
Paul Nicoué 2022-09-09 15:26:04 +02:00
parent 98499d98de
commit 955b13fc44
23 changed files with 14326 additions and 14329 deletions

View file

@ -2,7 +2,7 @@ root = true
[*] [*]
charset = utf-8 charset = utf-8
indent_style = tab indent_style = space
indent_size = 4 indent_size = 4
end_of_line = lf end_of_line = lf
insert_final_newline = true insert_final_newline = true
@ -11,6 +11,3 @@ insert_final_newline = true
[*.md] [*.md]
trim_trailing_whitespace = false trim_trailing_whitespace = false
[*.{yaml,yml}]
indent_style = space

View file

@ -11,84 +11,84 @@
// Fonts and colors // Fonts and colors
body { body {
font-family: var(--text-font-family); font-family: var(--text-font-family);
font-size: var(--text-font-size); font-size: var(--text-font-size);
line-height: var(--text-line-height); line-height: var(--text-line-height);
color: var(--black); color: var(--black);
background-color: var(--feldgrau); background-color: var(--feldgrau);
} }
h1 { h1 {
font-family: var(--title-font-family); font-family: var(--title-font-family);
font-size: var(--h1-font-size); font-size: var(--h1-font-size);
line-height: var(--h1-line-height); line-height: var(--h1-line-height);
} }
h2 { h2 {
font-family: var(--text-font-family); font-family: var(--text-font-family);
font-size: var(--h2-font-size); font-size: var(--h2-font-size);
line-height: var(--h2-line-height); line-height: var(--h2-line-height);
margin: 0 0 4rem 0; margin: 0 0 4rem 0;
} }
h3 { h3 {
font-family: var(--text-font-family); font-family: var(--text-font-family);
font-size: var(--h3-font-size); font-size: var(--h3-font-size);
line-height: var(--h3-line-height); line-height: var(--h3-line-height);
margin: 2rem 0 1rem 0; margin: 2rem 0 1rem 0;
} }
p { p {
text-align: justify; text-align: justify;
} }
strong { strong {
font-weight: var(--bold-font-weight); font-weight: var(--bold-font-weight);
} }
em { em {
font-style: italic; font-style: italic;
} }
@media screen and (min-width: $desktop-media-query) { @media screen and (min-width: $desktop-media-query) {
.body--white-background { .body--white-background {
background-color: var(--white); background-color: var(--white);
} }
} }
// Link style // Link style
a { a {
color: var(--black); color: var(--black);
text-decoration: none; text-decoration: none;
transition: text-decoration 200ms ease-in-out; transition: text-decoration 200ms ease-in-out;
&:hover, &:hover,
&:focus, &:focus,
&:active { &:active {
text-decoration: underline; text-decoration: underline;
} }
&:focus-visible { &:focus-visible {
outline: 1px dashed var(--black); outline: 1px dashed var(--black);
outline-offset: 2px; outline-offset: 2px;
animation: expand-outline 200ms ease-in-out; animation: expand-outline 200ms ease-in-out;
} }
} }
// General layout // General layout
body { body {
min-height: 100vh; min-height: 100vh;
overflow-x: hidden; overflow-x: hidden;
} }
@media screen and (min-width: $desktop-media-query) { @media screen and (min-width: $desktop-media-query) {
body { body {
overflow-y: hidden; overflow-y: hidden;
} }
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@ -98,180 +98,180 @@ body {
// Logo // Logo
.logo { .logo {
width: 100%; width: 100%;
padding: var(--logo-padding); padding: var(--logo-padding);
display: flex; display: flex;
justify-content: center; justify-content: center;
&--fixed-center { &--fixed-center {
z-index: 2; z-index: 2;
width: auto; width: auto;
padding: 0; padding: 0;
position: fixed; position: fixed;
top: 1rem; top: 1rem;
right: calc(50vw - (var(--logo-width) / 2)); right: calc(50vw - (var(--logo-width) / 2));
display: block; display: block;
} }
.logo__link { .logo__link {
width: var(--logo-width); width: var(--logo-width);
height: var(--logo-height); height: var(--logo-height);
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.logo__icon { .logo__icon {
width: 100%; width: 100%;
height: 100%; height: 100%;
&--black { &--black {
stroke: var(--black); stroke: var(--black);
transition: stroke 400ms ease-in-out; transition: stroke 400ms ease-in-out;
} }
&--white { &--white {
stroke: var(--white); stroke: var(--white);
transition: stroke 400ms ease-in-out; transition: stroke 400ms ease-in-out;
} }
&--rotate-horizontal-bottom { &--rotate-horizontal-bottom {
animation: rotate-horizontal-bottom 800ms ease-in-out infinite; animation: rotate-horizontal-bottom 800ms ease-in-out infinite;
} }
} }
} }
@media screen and (min-width: $desktop-media-query) { @media screen and (min-width: $desktop-media-query) {
.logo { .logo {
&--fixed-right { &--fixed-right {
z-index: 2; z-index: 2;
width: auto; width: auto;
padding: 0; padding: 0;
position: fixed; position: fixed;
top: 1rem; top: 1rem;
right: 1.5rem; right: 1.5rem;
display: block; display: block;
} }
} }
} }
// Sidebar // Sidebar
.sidebar { .sidebar {
width: 100%; width: 100%;
padding: var(--sidebar-padding); padding: var(--sidebar-padding);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
align-items: flex-start; align-items: flex-start;
background-color: transparent; background-color: transparent;
transition: background-color 400ms ease-in-out; transition: background-color 400ms ease-in-out;
.sidebar__nav { .sidebar__nav {
max-width: 100%; max-width: 100%;
} }
.sidebar__nav-item { .sidebar__nav-item {
+ .sidebar__nav-item { + .sidebar__nav-item {
margin: 0.5rem 0 0 0; margin: 0.5rem 0 0 0;
} }
} }
.sidebar__nav-link { .sidebar__nav-link {
display: inline-block; display: inline-block;
max-width: 100%; max-width: 100%;
overflow-x: hidden; overflow-x: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
color: var(--black); color: var(--black);
transition: color 400ms ease-in-out; transition: color 400ms ease-in-out;
} }
.sidebar__social { .sidebar__social {
width: 100%; width: 100%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
margin: 1rem 0 0 0; margin: 1rem 0 0 0;
} }
.sidebar__social-link { .sidebar__social-link {
width: var(--icon-size); width: var(--icon-size);
height: var(--icon-size); height: var(--icon-size);
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
+ .sidebar__social-link { + .sidebar__social-link {
margin: 0 0 0 1rem; margin: 0 0 0 1rem;
} }
} }
.sidebar__instagram-icon, .sidebar__instagram-icon,
.sidebar__email-icon { .sidebar__email-icon {
width: 100%; width: 100%;
height: 100%; height: 100%;
fill: var(--black); fill: var(--black);
transition: fill 400ms ease-in-out; transition: fill 400ms ease-in-out;
} }
} }
@media screen and (min-width: $desktop-media-query) { @media screen and (min-width: $desktop-media-query) {
.sidebar { .sidebar {
&--fixed { &--fixed {
z-index: 1; z-index: 1;
overflow-y: auto; overflow-y: auto;
position: fixed; position: fixed;
top: 0; top: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
} }
&--slimmed { &--slimmed {
width: 15%; width: 15%;
min-width: 15rem; min-width: 15rem;
.sidebar__nav-link { .sidebar__nav-link {
color: var(--transparent-black); color: var(--transparent-black);
} }
.sidebar__instagram-icon, .sidebar__instagram-icon,
.sidebar__email-icon { .sidebar__email-icon {
fill: var(--transparent-black); fill: var(--transparent-black);
} }
&:hover { &:hover {
background-color: var(--transparent-feldgrau); background-color: var(--transparent-feldgrau);
.sidebar__nav-link { .sidebar__nav-link {
color: var(--black); color: var(--black);
} }
.sidebar__instagram-icon, .sidebar__instagram-icon,
.sidebar__email-icon { .sidebar__email-icon {
fill: var(--black); fill: var(--black);
} }
} }
} }
&--white-background { &--white-background {
&:hover { &:hover {
background-color: var(--transparent-white); background-color: var(--transparent-white);
} }
} }
.sidebar__social { .sidebar__social {
width: auto; width: auto;
justify-content: flex-start; justify-content: flex-start;
} }
} }
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@ -282,35 +282,35 @@ body {
.splide { .splide {
&__image { &__image {
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: cover; object-fit: cover;
} }
} }
// Exhibition section // Exhibition section
.exhibition-section { .exhibition-section {
display: none; display: none;
} }
@media screen and (min-width: $desktop-media-query) { @media screen and (min-width: $desktop-media-query) {
.exhibition-section { .exhibition-section {
display: block; display: block;
width: 100vw; width: 100vw;
height: 100vh; height: 100vh;
} }
.exhibition { .exhibition {
opacity: 0; opacity: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
transition: opacity 400ms ease-in-out; transition: opacity 400ms ease-in-out;
&--visible { &--visible {
opacity: 1; opacity: 1;
} }
} }
} }

View file

@ -6,23 +6,23 @@
.k-textarea-field { .k-textarea-field {
.k-toolbar { .k-toolbar {
.k-dropdown { .k-dropdown {
.k-button:nth-of-type(2), .k-button:nth-of-type(2),
.k-button:nth-of-type(3) { .k-button:nth-of-type(3) {
display: none; display: none;
} }
} }
} }
} }
// Visual image crop field properties // Visual image crop field properties
.kirby-imagecrop-field { .kirby-imagecrop-field {
.k-column:nth-of-type(2) { .k-column:nth-of-type(2) {
display: none; display: none;
} }
} }

View file

@ -3,26 +3,26 @@
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@keyframes expand-outline { @keyframes expand-outline {
0% { 0% {
outline-offset: 0; outline-offset: 0;
} }
100% { 100% {
outline-offset: 2px; outline-offset: 2px;
} }
} }
@keyframes rotate-horizontal-bottom { @keyframes rotate-horizontal-bottom {
0% { 0% {
transform: rotateX(0); transform: rotateX(0);
transform-origin: bottom; transform-origin: bottom;
} }
50% { 50% {
transform: rotateX(180deg); transform: rotateX(180deg);
transform-origin: bottom; transform-origin: bottom;
} }
100% { 100% {
transform: rotateX(0); transform: rotateX(0);
transform-origin: bottom; transform-origin: bottom;
} }
} }

View file

@ -4,41 +4,41 @@
:root { :root {
// Fonts // Fonts
--text-font-family: Helvetica, sans-serif; --text-font-family: Helvetica, sans-serif;
--title-font-family: Helvetica, sans-serif; --title-font-family: Helvetica, sans-serif;
--regular-font-weight: 400; --regular-font-weight: 400;
--medium-font-weight: 500; --medium-font-weight: 500;
--semi-bold-font-weight: 600; --semi-bold-font-weight: 600;
--bold-font-weight: 700; --bold-font-weight: 700;
--text-font-size: 1rem; --text-font-size: 1rem;
--text-line-height: calc(var(--text-font-size) * 1.2); --text-line-height: calc(var(--text-font-size) * 1.2);
--footnote-font-size: 0.8rem; --footnote-font-size: 0.8rem;
--footnote-line-height: calc(var(--footnote-font-size) * 1.2); --footnote-line-height: calc(var(--footnote-font-size) * 1.2);
--h1-font-size: 1.6rem; --h1-font-size: 1.6rem;
--h1-line-height: calc(var(--h1-font-size) * 1.2); --h1-line-height: calc(var(--h1-font-size) * 1.2);
--h2-font-size: 1.4rem; --h2-font-size: 1.4rem;
--h2-line-height: calc(var(--h2-font-size) * 1.2); --h2-line-height: calc(var(--h2-font-size) * 1.2);
--h3-font-size: 1.2rem; --h3-font-size: 1.2rem;
--h3-line-height: calc(var(--h3-font-size) * 1.2); --h3-line-height: calc(var(--h3-font-size) * 1.2);
// Dimensions // Dimensions
--logo-width: 6rem; --logo-width: 6rem;
--logo-height: 3rem; --logo-height: 3rem;
--logo-padding: 1rem; --logo-padding: 1rem;
--icon-size: 2.25rem; --icon-size: 2.25rem;
--sidebar-padding: 1rem; --sidebar-padding: 1rem;
// Colors // Colors
--black: #000; --black: #000;
--transparent-black: rgba(0, 0, 0, 0.3); --transparent-black: rgba(0, 0, 0, 0.3);
--white: #fff; --white: #fff;
--transparent-white: rgba(255, 255, 255, 0.9); --transparent-white: rgba(255, 255, 255, 0.9);
--feldgrau: #4B6259; --feldgrau: #4B6259;
--transparent-feldgrau: rgba(75, 98, 89, 0.9); --transparent-feldgrau: rgba(75, 98, 89, 0.9);
} }
// Media queries // Media queries

View file

@ -25,8 +25,8 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
h1, h1,
@ -35,44 +35,44 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
font-size: 100%; font-size: 100%;
font-weight: normal; font-weight: normal;
} }
ul { ul {
list-style: none; list-style: none;
} }
button, button,
input, input,
select { select {
margin: 0; margin: 0;
} }
html { html {
box-sizing: border-box; box-sizing: border-box;
} }
*, *::before, *::after { *, *::before, *::after {
box-sizing: inherit; box-sizing: inherit;
} }
img, img,
video { video {
height: auto; height: auto;
max-width: 100%; max-width: 100%;
} }
iframe { iframe {
border: 0; border: 0;
} }
table { table {
border-collapse: collapse; border-collapse: collapse;
border-spacing: 0; border-spacing: 0;
} }
td, td,
th { th {
padding: 0; padding: 0;
} }

View file

@ -23,7 +23,7 @@ const exhibitionIframe = document.querySelector('.exhibition');
// NAV LINKS TARGET // NAV LINKS TARGET
const mediaQueries = { const mediaQueries = {
remTabletWidth: 48, remTabletWidth: 48,
remDesktopWidth: 62 remDesktopWidth: 62
} }
@ -35,195 +35,195 @@ const mediaQueries = {
// Enable CSS :active pseudo-class in Safari Mobile // Enable CSS :active pseudo-class in Safari Mobile
function enableActivePseudoClass() { function enableActivePseudoClass() {
document.addEventListener("touchstart", function() {},false); document.addEventListener("touchstart", function() {},false);
} }
// Convert rem to pixels by getting font-size CSS property // Convert rem to pixels by getting font-size CSS property
function convertRemToPixels(rem) { function convertRemToPixels(rem) {
let fontSize = parseFloat(window.getComputedStyle(body).getPropertyValue('font-size')); let fontSize = parseFloat(window.getComputedStyle(body).getPropertyValue('font-size'));
return rem * fontSize; return rem * fontSize;
} }
// SPLIDE SLIDER // SPLIDE SLIDER
function setUpSlider() { function setUpSlider() {
if (slider) { if (slider) {
slider = new Splide('.splide', { slider = new Splide('.splide', {
type: 'fade', type: 'fade',
rewind: true, rewind: true,
rewindByDrag: true, rewindByDrag: true,
speed: 400, speed: 400,
fixedWidth: '100vw', fixedWidth: '100vw',
fixedHeight: '100vh', fixedHeight: '100vh',
arrows: false, arrows: false,
pagination: false, pagination: false,
easing: 'ease-in-out', easing: 'ease-in-out',
drag: true, drag: true,
wheel: true wheel: true
}); });
} }
} }
function mountSlider() { function mountSlider() {
if (slider) { if (slider) {
slider.mount(); slider.mount();
} }
} }
function goToNextSlideOnClick() { function goToNextSlideOnClick() {
if (slider) { if (slider) {
slider.on('click', function(e) { slider.on('click', function(e) {
slider.go('>'); slider.go('>');
}); });
} }
} }
function turnLogoToBlack() { function turnLogoToBlack() {
if (logo) { if (logo) {
logo.classList.remove('logo__icon--white'); logo.classList.remove('logo__icon--white');
logo.classList.add('logo__icon--black'); logo.classList.add('logo__icon--black');
} }
} }
function turnLogoToWhite() { function turnLogoToWhite() {
if (logo) { if (logo) {
logo.classList.remove('logo__icon--black'); logo.classList.remove('logo__icon--black');
logo.classList.add('logo__icon--white'); logo.classList.add('logo__icon--white');
} }
} }
function editLogoColor(slide) { function editLogoColor(slide) {
if (slide) { if (slide) {
if (slide.getAttribute('data-logo-color') === 'white') { if (slide.getAttribute('data-logo-color') === 'white') {
turnLogoToWhite(); turnLogoToWhite();
} else if (slide.getAttribute('data-logo-color') === 'black') { } else if (slide.getAttribute('data-logo-color') === 'black') {
turnLogoToBlack(); turnLogoToBlack();
} }
} }
} }
function editLogoColorOnSliderMounted() { function editLogoColorOnSliderMounted() {
if (slider && slides) { if (slider && slides) {
slider.on('mounted', function() { slider.on('mounted', function() {
editLogoColor(slides[0]); editLogoColor(slides[0]);
}) })
} }
} }
function editLogoColorOnSlideActive() { function editLogoColorOnSlideActive() {
if (slider) { if (slider) {
slider.on('active', function(e) { slider.on('active', function(e) {
editLogoColor(e.slide); editLogoColor(e.slide);
}); });
} }
} }
function enableLogoRotation() { function enableLogoRotation() {
if (logo) { if (logo) {
logo.classList.add('logo__icon--rotate-horizontal-bottom'); logo.classList.add('logo__icon--rotate-horizontal-bottom');
} }
} }
function disableLogoRotation() { function disableLogoRotation() {
if (logo) { if (logo) {
logo.classList.remove('logo__icon--rotate-horizontal-bottom'); logo.classList.remove('logo__icon--rotate-horizontal-bottom');
} }
} }
function rotateLogoOnSliderMove() { function rotateLogoOnSliderMove() {
if (slider && logo) { if (slider && logo) {
slider.on('move', function(e) { slider.on('move', function(e) {
logo.removeEventListener('animationiteration', disableLogoRotation); logo.removeEventListener('animationiteration', disableLogoRotation);
enableLogoRotation(); enableLogoRotation();
}); });
slider.on('moved', function(e) { slider.on('moved', function(e) {
logo.addEventListener('animationiteration', disableLogoRotation); logo.addEventListener('animationiteration', disableLogoRotation);
}); });
} }
} }
// EXHIBITION IFRAME // EXHIBITION IFRAME
function slimDownSidebar() { function slimDownSidebar() {
if (sidebar && !sidebar.classList.contains('sidebar--slimmed')) { if (sidebar && !sidebar.classList.contains('sidebar--slimmed')) {
sidebar.classList.add('sidebar--slimmed'); sidebar.classList.add('sidebar--slimmed');
} }
} }
function enableExhibitionIframeVisibility() { function enableExhibitionIframeVisibility() {
if (exhibitionIframe) { if (exhibitionIframe) {
exhibitionIframe.classList.add('exhibition--visible'); exhibitionIframe.classList.add('exhibition--visible');
} }
} }
function disableExhibitionIframeVisibility() { function disableExhibitionIframeVisibility() {
if (exhibitionIframe) { if (exhibitionIframe) {
exhibitionIframe.classList.remove('exhibition--visible'); exhibitionIframe.classList.remove('exhibition--visible');
} }
} }
function editBackgroundColor(sidebarNavLink) { function editBackgroundColor(sidebarNavLink) {
if (body && sidebar) { if (body && sidebar) {
if (sidebarNavLink.getAttribute('data-background') === 'feldgrau') { if (sidebarNavLink.getAttribute('data-background') === 'feldgrau') {
body.classList.remove('body--white-background'); body.classList.remove('body--white-background');
sidebar.classList.remove('sidebar--white-background'); sidebar.classList.remove('sidebar--white-background');
} else if (sidebarNavLink.getAttribute('data-background') === 'white') { } else if (sidebarNavLink.getAttribute('data-background') === 'white') {
body.classList.add('body--white-background'); body.classList.add('body--white-background');
sidebar.classList.add('sidebar--white-background'); sidebar.classList.add('sidebar--white-background');
} }
} }
} }
function loadExhibitionIframe() { function loadExhibitionIframe() {
if (sidebarNavLinks.length > 0 && exhibitionIframe) { if (sidebarNavLinks.length > 0 && exhibitionIframe) {
for (let i = 0; i < sidebarNavLinks.length; i++) { for (let i = 0; i < sidebarNavLinks.length; i++) {
sidebarNavLinks[i].addEventListener('click', function(e) { sidebarNavLinks[i].addEventListener('click', function(e) {
if (window.innerWidth >= convertRemToPixels(mediaQueries.remDesktopWidth)) { if (window.innerWidth >= convertRemToPixels(mediaQueries.remDesktopWidth)) {
logo.removeEventListener('animationiteration', disableLogoRotation); logo.removeEventListener('animationiteration', disableLogoRotation);
enableLogoRotation(); enableLogoRotation();
disableExhibitionIframeVisibility(); disableExhibitionIframeVisibility();
exhibitionIframe.addEventListener('load', function(e) { exhibitionIframe.addEventListener('load', function(e) {
logo.addEventListener('animationiteration', disableLogoRotation); logo.addEventListener('animationiteration', disableLogoRotation);
slimDownSidebar(); slimDownSidebar();
enableExhibitionIframeVisibility(); enableExhibitionIframeVisibility();
editBackgroundColor(sidebarNavLinks[i]); editBackgroundColor(sidebarNavLinks[i]);
}); });
} }
}); });
} }
} }
} }
// NAV LINKS TARGET // NAV LINKS TARGET
function setNavLinksIframeTarget() { function setNavLinksIframeTarget() {
if (sidebarNavLinks) { if (sidebarNavLinks) {
for (let i = 0; i < sidebarNavLinks.length; i++) { for (let i = 0; i < sidebarNavLinks.length; i++) {
sidebarNavLinks[i].setAttribute('target', 'exhibition'); sidebarNavLinks[i].setAttribute('target', 'exhibition');
} }
} }
} }
function setNavLinksBlankTarget() { function setNavLinksBlankTarget() {
if (sidebarNavLinks) { if (sidebarNavLinks) {
for (let i = 0; i < sidebarNavLinks.length; i++) { for (let i = 0; i < sidebarNavLinks.length; i++) {
sidebarNavLinks[i].setAttribute('target', '_blank'); sidebarNavLinks[i].setAttribute('target', '_blank');
} }
} }
} }
function editNavLinksTarget() { function editNavLinksTarget() {
if (window.innerWidth >= convertRemToPixels(mediaQueries.remDesktopWidth)) { if (window.innerWidth >= convertRemToPixels(mediaQueries.remDesktopWidth)) {
setNavLinksIframeTarget(); setNavLinksIframeTarget();
} else { } else {
setNavLinksBlankTarget(); setNavLinksBlankTarget();
} }
} }
function editNavLinksTargetOnResize() { function editNavLinksTargetOnResize() {
window.addEventListener('resize', function(e) { window.addEventListener('resize', function(e) {
editNavLinksTarget(); editNavLinksTarget();
}) })
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View file

@ -1,33 +1,33 @@
{ {
"name": "paulnicoue/julienmonnerie", "name": "paulnicoue/julienmonnerie",
"description": "Julien Monnerie", "description": "Julien Monnerie",
"type": "project", "type": "project",
"homepage": "https://julienmonnerie.com", "homepage": "https://julienmonnerie.com",
"authors": [ "authors": [
{ {
"name": "Paul Nicoué", "name": "Paul Nicoué",
"email": "contact@paulnicoue.com", "email": "contact@paulnicoue.com",
"homepage": "https://paulnicoue.com" "homepage": "https://paulnicoue.com"
} }
], ],
"require": { "require": {
"php": ">=7.3.0 <8.1.0", "php": ">=7.3.0 <8.1.0",
"getkirby/cms": "^3.5", "getkirby/cms": "^3.5",
"amteich/kirby-twig": "^4.1", "amteich/kirby-twig": "^4.1",
"sylvainjule/matomo": "^1.0", "sylvainjule/matomo": "^1.0",
"kirbyzone/sitemapper": "^1.2", "kirbyzone/sitemapper": "^1.2",
"mullema/k3-image-clip": "^3.0" "mullema/k3-image-clip": "^3.0"
}, },
"scripts": { "scripts": {
"start": [ "start": [
"Composer\\Config::disableProcessTimeout", "Composer\\Config::disableProcessTimeout",
"@php -S localhost:8000 kirby/router.php" "@php -S localhost:8000 kirby/router.php"
] ]
}, },
"config": { "config": {
"optimize-autoloader": true, "optimize-autoloader": true,
"allow-plugins": { "allow-plugins": {
"getkirby/composer-installer": true "getkirby/composer-installer": true
} }
} }
} }

27244
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,27 +1,27 @@
{ {
"browserslist": [ "browserslist": [
"> 0.5%", "> 0.5%",
"last 4 versions", "last 4 versions",
"Firefox ESR", "Firefox ESR",
"not dead" "not dead"
], ],
"devDependencies": { "devDependencies": {
"@splidejs/splide": "^4.0.7", "@splidejs/splide": "^4.0.7",
"@symfony/webpack-encore": "^3.0.0", "@symfony/webpack-encore": "^3.0.0",
"autoprefixer": "^10.4.7", "autoprefixer": "^10.4.7",
"core-js": "^3.23.4", "core-js": "^3.23.4",
"postcss-loader": "^7.0.1", "postcss-loader": "^7.0.1",
"sass": "^1.53.0", "sass": "^1.53.0",
"sass-loader": "^13.0.2", "sass-loader": "^13.0.2",
"ts-loader": "^9.3.1", "ts-loader": "^9.3.1",
"typescript": "^4.7.4", "typescript": "^4.7.4",
"webpack-notifier": "^1.15.0" "webpack-notifier": "^1.15.0"
}, },
"private": true, "private": true,
"scripts": { "scripts": {
"build": "encore production --progress", "build": "encore production --progress",
"dev": "encore dev", "dev": "encore dev",
"dev-server": "encore dev-server", "dev-server": "encore dev-server",
"watch": "encore dev --watch" "watch": "encore dev --watch"
} }
} }

View file

@ -1,5 +1,5 @@
module.exports = { module.exports = {
plugins: { plugins: {
autoprefixer: {} // Browserlist configuration is defined in package.json autoprefixer: {} // Browserlist configuration is defined in package.json
} }
} }

View file

@ -1,16 +1,16 @@
{ {
"name": "Julien Monnerie", "name": "Julien Monnerie",
"short_name": "Julien Monnerie", "short_name": "Julien Monnerie",
"icons": [ "icons": [
{ {
"src": "julien-monnerie-favicon-192px.png", "src": "julien-monnerie-favicon-192px.png",
"sizes": "192x192", "sizes": "192x192",
"type": "image/png" "type": "image/png"
}, },
{ {
"src": "julien-monnerie-favicon-512px.png", "src": "julien-monnerie-favicon-512px.png",
"sizes": "512x512", "sizes": "512x512",
"type": "image/png" "type": "image/png"
} }
] ]
} }

View file

@ -1,10 +1,10 @@
<?php <?php
return [ return [
// Kirby configuration settings (production environment) // Kirby configuration settings (production environment)
'debug' => false, 'debug' => false,
// Matomo plugin options (critical keys) // Matomo plugin options (critical keys)
'sylvainjule.matomo' => [ 'sylvainjule.matomo' => [
'token' => '03a62d1dda1a7b68e706b7b688d22a5a' 'token' => '03a62d1dda1a7b68e706b7b688d22a5a'
] ]
]; ];

View file

@ -1,10 +1,10 @@
<?php <?php
return [ return [
// Kirby configuration settings (development environment) // Kirby configuration settings (development environment)
'debug' => true, 'debug' => true,
// Matomo plugin options (critical keys) // Matomo plugin options (critical keys)
'sylvainjule.matomo' => [ 'sylvainjule.matomo' => [
'token' => '03a62d1dda1a7b68e706b7b688d22a5a' 'token' => '03a62d1dda1a7b68e706b7b688d22a5a'
] ]
]; ];

View file

@ -1,37 +1,37 @@
<?php <?php
return [ return [
// Kirby configuration settings // Kirby configuration settings
'home' => 'gallery', 'home' => 'gallery',
'panel' => [ 'panel' => [
'language' => 'fr', 'language' => 'fr',
'css' => 'build/panel.css' 'css' => 'build/panel.css'
], ],
// Sitemapper plugin options // Sitemapper plugin options
'kirbyzone.sitemapper' => [ 'kirbyzone.sitemapper' => [
'intro' => false, 'intro' => false,
'byLine' => 'Sitemap generated with <a href="https://github.com/kirbyzone/sitemapper" target="_blank">Sitemapper by Kirbyzone</a>.' 'byLine' => 'Sitemap generated with <a href="https://github.com/kirbyzone/sitemapper" target="_blank">Sitemapper by Kirbyzone</a>.'
], ],
// Hooks // Hooks
'hooks' => [ 'hooks' => [
'file.create:after' => function($file) { 'file.create:after' => function($file) {
// Populate file_type field with $file->type() method after file creation // Populate file_type field with $file->type() method after file creation
if ($file->type()) { if ($file->type()) {
$file->update([ $file->update([
'file_type' => $file->type() 'file_type' => $file->type()
]); ]);
} }
} }
], ],
// Thumbnails and srcsets presets // Thumbnails and srcsets presets
'thumbs' => [ 'thumbs' => [
'srcsets' => [ 'srcsets' => [
'default' => [ 'default' => [
'640w' => ['width' => 640, 'quality' => 80], '640w' => ['width' => 640, 'quality' => 80],
'1280w' => ['width' => 1280, 'quality' => 80], '1280w' => ['width' => 1280, 'quality' => 80],
'1920w' => ['width' => 1920, 'quality' => 80], '1920w' => ['width' => 1920, 'quality' => 80],
'2560w' => ['width' => 2560, 'quality' => 80] '2560w' => ['width' => 2560, 'quality' => 80]
] ]
] ]
] ]
]; ];

View file

@ -2,9 +2,9 @@
return function ($site) { return function ($site) {
// Get home page object // Get home page object
$homePage = $site->homePage(); $homePage = $site->homePage();
// Redirect to home page // Redirect to home page
return go($homePage->url()); return go($homePage->url());
}; };

View file

@ -2,25 +2,25 @@
return function ($site, $page) { return function ($site, $page) {
// Get home page object // Get home page object
$homePage = $site->homePage(); $homePage = $site->homePage();
// Get exhibitions field content (stored as yaml) and parse it to return an array // Get exhibitions field content (stored as yaml) and parse it to return an array
$exhibitions = $page->exhibitions()->yaml(); $exhibitions = $page->exhibitions()->yaml();
// Add url based title to each exhibition // Add url based title to each exhibition
foreach ($exhibitions as &$exhibition) { foreach ($exhibitions as &$exhibition) {
$exhibition['title'] = str_replace(['http://', 'https://', 'www.'], '', $exhibition['url']); $exhibition['title'] = str_replace(['http://', 'https://', 'www.'], '', $exhibition['url']);
} }
// Get contact fields content // Get contact fields content
$email = $page->email(); $email = $page->email();
$instagram = $page->instagram(); $instagram = $page->instagram();
return [ return [
'homePage' => $homePage, 'homePage' => $homePage,
'exhibitions' => $exhibitions, 'exhibitions' => $exhibitions,
'email' => $email, 'email' => $email,
'instagram' => $instagram 'instagram' => $instagram
]; ];
}; };

View file

@ -2,14 +2,14 @@
return function ($pages, $page) { return function ($pages, $page) {
// Get exhibition page object // Get exhibition page object
$exhibitionsPage = $pages->template('exhibitions')->first(); $exhibitionsPage = $pages->template('exhibitions')->first();
// Get image files section content // Get image files section content
$images = $page->files()->template("full_screen_image")->sortBy('sort'); $images = $page->files()->template("full_screen_image")->sortBy('sort');
return [ return [
'exhibitionsPage' => $exhibitionsPage, 'exhibitionsPage' => $exhibitionsPage,
'images' => $images 'images' => $images
]; ];
}; };

View file

@ -11,11 +11,11 @@
{# Description #} {# Description #}
{% if page.meta_description is not empty %} {% if page.meta_description is not empty %}
<meta name="description" content="{{ page.meta_description }}"> <meta name="description" content="{{ page.meta_description }}">
<meta id="schema_description" itemprop="description" content="{{ page.meta_description }}"> <meta id="schema_description" itemprop="description" content="{{ page.meta_description }}">
{% elseif site.homePage.meta_description is not empty %} {% elseif site.homePage.meta_description is not empty %}
<meta name="description" content="{{ site.homePage.meta_description }}"> <meta name="description" content="{{ site.homePage.meta_description }}">
<meta id="schema_description" itemprop="description" content="{{ site.homePage.meta_description }}"> <meta id="schema_description" itemprop="description" content="{{ site.homePage.meta_description }}">
{% endif %} {% endif %}
{# Canonical URL #} {# Canonical URL #}
@ -29,44 +29,44 @@
{# Image #} {# Image #}
{% if page.meta_image is not empty %} {% if page.meta_image is not empty %}
<meta id="schema_image" itemprop="image" content="{{ page.meta_image.toImage.url }}"> <meta id="schema_image" itemprop="image" content="{{ page.meta_image.toImage.url }}">
{% elseif site.homePage.meta_image is not empty %} {% elseif site.homePage.meta_image is not empty %}
<meta id="schema_image" itemprop="image" content="{{ site.homePage.meta_image.toImage.url }}"> <meta id="schema_image" itemprop="image" content="{{ site.homePage.meta_image.toImage.url }}">
{% endif %} {% endif %}
{% if page.template != 'error' %} {% if page.template != 'error' %}
{# Open Graph #} {# Open Graph #}
<meta property="og:title" content="{{ site.title ~ ' | ' ~ page.title }}"> <meta property="og:title" content="{{ site.title ~ ' | ' ~ page.title }}">
{% if page.meta_description is not empty %} {% if page.meta_description is not empty %}
<meta property="og:description" content="{{ page.meta_description }}"> <meta property="og:description" content="{{ page.meta_description }}">
{% elseif site.homePage.meta_description is not empty %} {% elseif site.homePage.meta_description is not empty %}
<meta property="og:description" content="{{ site.homePage.meta_description }}"> <meta property="og:description" content="{{ site.homePage.meta_description }}">
{% endif %} {% endif %}
{% if page.meta_image is not empty %} {% if page.meta_image is not empty %}
<meta property="og:image" content="{{ page.meta_image.toImage.clip(1200, 675).url }}"> <meta property="og:image" content="{{ page.meta_image.toImage.clip(1200, 675).url }}">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="675"> <meta property="og:image:height" content="675">
{% elseif site.homePage.meta_image is not empty %} {% elseif site.homePage.meta_image is not empty %}
<meta property="og:image" content="{{ site.homePage.meta_image.toImage.clip(1200, 675).url }}"> <meta property="og:image" content="{{ site.homePage.meta_image.toImage.clip(1200, 675).url }}">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="675"> <meta property="og:image:height" content="675">
{% endif %} {% endif %}
<meta property="og:url" content="{{ page.url }}"> <meta property="og:url" content="{{ page.url }}">
<meta property="og:type" content="{{ page.og_type }}"> <meta property="og:type" content="{{ page.og_type }}">
{# Twitter Card #} {# Twitter Card #}
<meta name="twitter:card" content="{{ page.twitter_card_type.value }}"> <meta name="twitter:card" content="{{ page.twitter_card_type.value }}">
<meta name="twitter:title" content="{{ site.title ~ ' | ' ~ page.title }}"> <meta name="twitter:title" content="{{ site.title ~ ' | ' ~ page.title }}">
{% if page.meta_description is not empty %} {% if page.meta_description is not empty %}
<meta name="twitter:description" content="{{ page.meta_description }}"> <meta name="twitter:description" content="{{ page.meta_description }}">
{% elseif site.homePage.meta_description is not empty %} {% elseif site.homePage.meta_description is not empty %}
<meta name="twitter:description" content="{{ site.homePage.meta_description }}"> <meta name="twitter:description" content="{{ site.homePage.meta_description }}">
{% endif %} {% endif %}
{% if page.meta_image is not empty %} {% if page.meta_image is not empty %}
<meta name="twitter:image" content="{{ page.meta_image.toImage.clip(1200, 675).url }}"> <meta name="twitter:image" content="{{ page.meta_image.toImage.clip(1200, 675).url }}">
{% elseif site.homePage.meta_image is not empty %} {% elseif site.homePage.meta_image is not empty %}
<meta name="twitter:image" content="{{ site.homePage.meta_image.toImage.clip(1200, 675).url }}"> <meta name="twitter:image" content="{{ site.homePage.meta_image.toImage.clip(1200, 675).url }}">
{% endif %} {% endif %}
{% endif %} {% endif %}

View file

@ -4,44 +4,44 @@
<head> <head>
{{ snippet('metadata') }} {{ snippet('metadata') }}
{{ snippet('favicon') }} {{ snippet('favicon') }}
{# CSS #} {# CSS #}
{% block stylesheets %} {% block stylesheets %}
<link rel="stylesheet" href="build/main.css"> <link rel="stylesheet" href="build/main.css">
{% endblock %} {% endblock %}
{# JavaScript #} {# JavaScript #}
{% block scripts %} {% block scripts %}
<script src="build/app.js" defer></script> <script src="build/app.js" defer></script>
{% endblock %} {% endblock %}
{# Matomo #} {# Matomo #}
<script> <script>
var _paq = window._paq = window._paq || []; var _paq = window._paq = window._paq || [];
_paq.push(['disableCookies']); _paq.push(['disableCookies']);
_paq.push(['trackPageView']); _paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']); _paq.push(['enableLinkTracking']);
(function() { (function() {
var u="//matomo.paulnicoue.com/"; var u="//matomo.paulnicoue.com/";
_paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '3']); _paq.push(['setSiteId', '3']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; 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); g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})(); })();
</script> </script>
</head> </head>
<body> <body>
{% block header %} {% block header %}
{% endblock %} {% endblock %}
{% block main %} {% block main %}
{% endblock %} {% endblock %}
</body> </body>

View file

@ -1,62 +1,62 @@
{% extends "base.twig" %} {% extends "base.twig" %}
{% block header %} {% block header %}
<header> <header>
<div class="logo"> <div class="logo">
<a class="logo__link logo--fixed-right" href="{{ homePage.url }}" target="_self" aria-label="Go to {{ site.title }}'s gallery page"> <a class="logo__link logo--fixed-right" href="{{ homePage.url }}" target="_self" aria-label="Go to {{ site.title }}'s gallery page">
<svg class="logo__icon" aria-hidden="true" viewBox="0 0 3814 1912" xmlns="http://www.w3.org/2000/svg"> <svg class="logo__icon" aria-hidden="true" viewBox="0 0 3814 1912" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1, 0, 0, -1, 1426.537109, 1153.771606)"> <g transform="matrix(1, 0, 0, -1, 1426.537109, 1153.771606)">
<path style="fill:none;stroke:currentColor;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:currentColor;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:currentColor;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"/> <path style="fill:none;stroke:currentColor;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> </g>
</svg> </svg>
</a> </a>
</div> </div>
<div class="sidebar sidebar--fixed"> <div class="sidebar sidebar--fixed">
<nav class="sidebar__nav" aria-label="Menu"> <nav class="sidebar__nav" aria-label="Menu">
{% if exhibitions is not empty %} {% if exhibitions is not empty %}
<ul class="sidebar__nav-menu"> <ul class="sidebar__nav-menu">
{% for exhibition in exhibitions %} {% for exhibition in exhibitions %}
<li class="sidebar__nav-item"> <li class="sidebar__nav-item">
{% if exhibition.external_link == 'false' %} {% if exhibition.external_link == 'false' %}
<a class="sidebar__nav-link sidebar__nav-link--iframe" href="{{ exhibition.url }}" target="exhibition" data-background="{{ exhibition.background_color }}">{{ exhibition.title }}</a> <a class="sidebar__nav-link sidebar__nav-link--iframe" href="{{ exhibition.url }}" target="exhibition" data-background="{{ exhibition.background_color }}">{{ exhibition.title }}</a>
{% else %} {% else %}
<a class="sidebar__nav-link sidebar__nav-link--blank" href="{{ exhibition.url }}" target="_blank">{{ exhibition.title }}</a> <a class="sidebar__nav-link sidebar__nav-link--blank" href="{{ exhibition.url }}" target="_blank">{{ exhibition.title }}</a>
{% endif %} {% endif %}
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
</nav> </nav>
<div class="sidebar__social"> <div class="sidebar__social">
<a class="sidebar__social-link" href="{{ instagram }}" target="_blank" aria-label="Go to {{ site.title }}'s Instagram profile"> <a class="sidebar__social-link" href="{{ instagram }}" target="_blank" aria-label="Go to {{ site.title }}'s Instagram profile">
<svg class="sidebar__instagram-icon" aria-hidden="true" viewBox="0 0 128 128" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> <svg class="sidebar__instagram-icon" aria-hidden="true" viewBox="0 0 128 128" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M 128 0 L 0 0 L 0 128 L 128 128 L 128 0 Z M 119.874 119.874 L 8.126 119.874 L 8.126 8.126 L 119.874 8.126 L 119.874 119.874 Z"/> <path d="M 128 0 L 0 0 L 0 128 L 128 128 L 128 0 Z M 119.874 119.874 L 8.126 119.874 L 8.126 8.126 L 119.874 8.126 L 119.874 119.874 Z"/>
<path d="M64,93c16,0,29-13,29-29S80,35,64,35S35,48,35,64S48,93,64,93z M64,43c11.6,0,21,9.4,21,21s-9.4,21-21,21s-21-9.4-21-21 S52.4,43,64,43z"/> <path d="M64,93c16,0,29-13,29-29S80,35,64,35S35,48,35,64S48,93,64,93z M64,43c11.6,0,21,9.4,21,21s-9.4,21-21,21s-21-9.4-21-21 S52.4,43,64,43z"/>
<rect height="10" width="10" x="98" y="20"/> <rect height="10" width="10" x="98" y="20"/>
</svg> </svg>
</a> </a>
<a class="sidebar__social-link" href="mailto:{{ email }}" target="_blank" aria-label="Write an email to {{ site.title }}"> <a class="sidebar__social-link" href="mailto:{{ email }}" target="_blank" aria-label="Write an email to {{ site.title }}">
<svg class="sidebar__email-icon" aria-hidden="true" viewBox="0 0 48 48" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> <svg class="sidebar__email-icon" aria-hidden="true" viewBox="0 0 48 48" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
<path d="M 0 48 L 0 0 L 48 0 L 48 48 L 0 48 Z M 24 24.35 L 3.1 7.126 L 3.1 44.5 L 44.9 44.5 L 44.9 7.126 L 24 24.35 Z M 24 20.35 L 44.9 3.5 L 3.1 3.5 L 24 20.35 Z M 3.1 7.126 L 3.1 3.5 L 3.1 7.126 Z"/> <path d="M 0 48 L 0 0 L 48 0 L 48 48 L 0 48 Z M 24 24.35 L 3.1 7.126 L 3.1 44.5 L 44.9 44.5 L 44.9 7.126 L 24 24.35 Z M 24 20.35 L 44.9 3.5 L 3.1 3.5 L 24 20.35 Z M 3.1 7.126 L 3.1 3.5 L 3.1 7.126 Z"/>
</svg> </svg>
</a> </a>
</div> </div>
</div> </div>
</header> </header>
{% endblock %} {% endblock %}
{% block main %} {% block main %}
<main> <main>
<section class="exhibition-section"> <section class="exhibition-section">
<iframe class="exhibition" name="exhibition" src=""></iframe> <iframe class="exhibition" name="exhibition" src=""></iframe>
</section> </section>
</main> </main>
{% endblock %} {% endblock %}

View file

@ -1,36 +1,36 @@
{% extends "base.twig" %} {% extends "base.twig" %}
{% block header %} {% block header %}
<header> <header>
<div class="logo logo--fixed-center logo--fixed-right"> <div class="logo logo--fixed-center logo--fixed-right">
<a class="logo__link" href="{{ exhibitionsPage.url }}" target="_self" aria-label="Go to {{ site.title }}'s exhibitions page"> <a class="logo__link" href="{{ exhibitionsPage.url }}" target="_self" aria-label="Go to {{ site.title }}'s exhibitions page">
<svg class="logo__icon" aria-hidden="true" viewBox="0 0 3814 1912" xmlns="http://www.w3.org/2000/svg"> <svg class="logo__icon" aria-hidden="true" viewBox="0 0 3814 1912" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1, 0, 0, -1, 1426.537109, 1153.771606)"> <g transform="matrix(1, 0, 0, -1, 1426.537109, 1153.771606)">
<path style="fill:none;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-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-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"/> <path style="fill:none;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> </g>
</svg> </svg>
</a> </a>
</div> </div>
</header> </header>
{% endblock %} {% endblock %}
{% block main %} {% block main %}
<section class="splide" aria-label="{{ site.title }}'s artwork gallery"> <section class="splide" aria-label="{{ site.title }}'s artwork gallery">
<div class="splide__track"> <div class="splide__track">
<ul class="splide__list"> <ul class="splide__list">
{% for image in images %} {% for image in images %}
<li class="splide__slide" data-logo-color="{{ image.logo_color }}"> <li class="splide__slide" data-logo-color="{{ image.logo_color }}">
<img class="splide__image" src="{{ image.url }}" srcset="{{ image.srcset() }}" alt="{{ image.alt_text }}"> <img class="splide__image" src="{{ image.url }}" srcset="{{ image.srcset() }}" alt="{{ image.alt_text }}">
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
</section> </section>
{% endblock %} {% endblock %}

View file

@ -1,44 +1,44 @@
const Encore = require('@symfony/webpack-encore'); const Encore = require('@symfony/webpack-encore');
if (!Encore.isRuntimeEnvironmentConfigured()) { if (!Encore.isRuntimeEnvironmentConfigured()) {
Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev'); Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
} }
Encore Encore
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// PATHS // PATHS
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
.setOutputPath('public/build/') .setOutputPath('public/build/')
.setPublicPath('/build') .setPublicPath('/build')
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// ENTRIES // ENTRIES
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
.addEntry('app', './assets/js/app.js') .addEntry('app', './assets/js/app.js')
.addStyleEntry('main', './assets/css/main.scss') .addStyleEntry('main', './assets/css/main.scss')
.addStyleEntry('panel', './assets/css/panel.scss') .addStyleEntry('panel', './assets/css/panel.scss')
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// FEATURES // FEATURES
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
.disableSingleRuntimeChunk() .disableSingleRuntimeChunk()
.cleanupOutputBeforeBuild() .cleanupOutputBeforeBuild()
.enableBuildNotifications() .enableBuildNotifications()
.enableSourceMaps(!Encore.isProduction()) .enableSourceMaps(!Encore.isProduction())
.configureBabel((config) => { .configureBabel((config) => {
config.plugins.push('@babel/plugin-proposal-class-properties'); config.plugins.push('@babel/plugin-proposal-class-properties');
}) })
.configureBabelPresetEnv((config) => { .configureBabelPresetEnv((config) => {
config.useBuiltIns = 'usage'; config.useBuiltIns = 'usage';
config.corejs = 3; config.corejs = 3;
}) })
.enableTypeScriptLoader() .enableTypeScriptLoader()
.enableSassLoader() .enableSassLoader()
.enablePostCssLoader() .enablePostCssLoader()
; ;
module.exports = Encore.getWebpackConfig(); module.exports = Encore.getWebpackConfig();