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
indent_style = tab
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
@ -11,6 +11,3 @@ insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[*.{yaml,yml}]
indent_style = space

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,33 +1,33 @@
{
"name": "paulnicoue/julienmonnerie",
"description": "Julien Monnerie",
"type": "project",
"homepage": "https://julienmonnerie.com",
"authors": [
{
"name": "Paul Nicoué",
"email": "contact@paulnicoue.com",
"homepage": "https://paulnicoue.com"
}
],
"require": {
"php": ">=7.3.0 <8.1.0",
"getkirby/cms": "^3.5",
"amteich/kirby-twig": "^4.1",
"sylvainjule/matomo": "^1.0",
"kirbyzone/sitemapper": "^1.2",
"mullema/k3-image-clip": "^3.0"
},
"scripts": {
"start": [
"Composer\\Config::disableProcessTimeout",
"@php -S localhost:8000 kirby/router.php"
]
},
"config": {
"optimize-autoloader": true,
"allow-plugins": {
"getkirby/composer-installer": true
}
}
"name": "paulnicoue/julienmonnerie",
"description": "Julien Monnerie",
"type": "project",
"homepage": "https://julienmonnerie.com",
"authors": [
{
"name": "Paul Nicoué",
"email": "contact@paulnicoue.com",
"homepage": "https://paulnicoue.com"
}
],
"require": {
"php": ">=7.3.0 <8.1.0",
"getkirby/cms": "^3.5",
"amteich/kirby-twig": "^4.1",
"sylvainjule/matomo": "^1.0",
"kirbyzone/sitemapper": "^1.2",
"mullema/k3-image-clip": "^3.0"
},
"scripts": {
"start": [
"Composer\\Config::disableProcessTimeout",
"@php -S localhost:8000 kirby/router.php"
]
},
"config": {
"optimize-autoloader": true,
"allow-plugins": {
"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": [
"> 0.5%",
"last 4 versions",
"Firefox ESR",
"not dead"
],
"devDependencies": {
"@splidejs/splide": "^4.0.7",
"@symfony/webpack-encore": "^3.0.0",
"autoprefixer": "^10.4.7",
"core-js": "^3.23.4",
"postcss-loader": "^7.0.1",
"sass": "^1.53.0",
"sass-loader": "^13.0.2",
"ts-loader": "^9.3.1",
"typescript": "^4.7.4",
"webpack-notifier": "^1.15.0"
},
"private": true,
"scripts": {
"build": "encore production --progress",
"dev": "encore dev",
"dev-server": "encore dev-server",
"watch": "encore dev --watch"
}
"browserslist": [
"> 0.5%",
"last 4 versions",
"Firefox ESR",
"not dead"
],
"devDependencies": {
"@splidejs/splide": "^4.0.7",
"@symfony/webpack-encore": "^3.0.0",
"autoprefixer": "^10.4.7",
"core-js": "^3.23.4",
"postcss-loader": "^7.0.1",
"sass": "^1.53.0",
"sass-loader": "^13.0.2",
"ts-loader": "^9.3.1",
"typescript": "^4.7.4",
"webpack-notifier": "^1.15.0"
},
"private": true,
"scripts": {
"build": "encore production --progress",
"dev": "encore dev",
"dev-server": "encore dev-server",
"watch": "encore dev --watch"
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,62 +1,62 @@
{% extends "base.twig" %}
{% block header %}
<header>
<header>
<div class="logo">
<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">
<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: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>
</a>
</div>
<div class="logo">
<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">
<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: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>
</a>
</div>
<div class="sidebar sidebar--fixed">
<nav class="sidebar__nav" aria-label="Menu">
{% if exhibitions is not empty %}
<ul class="sidebar__nav-menu">
{% for exhibition in exhibitions %}
<li class="sidebar__nav-item">
{% 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>
{% else %}
<a class="sidebar__nav-link sidebar__nav-link--blank" href="{{ exhibition.url }}" target="_blank">{{ exhibition.title }}</a>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</nav>
<div class="sidebar__social">
<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">
<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"/>
<rect height="10" width="10" x="98" y="20"/>
</svg>
</a>
<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">
<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>
</a>
</div>
</div>
<div class="sidebar sidebar--fixed">
<nav class="sidebar__nav" aria-label="Menu">
{% if exhibitions is not empty %}
<ul class="sidebar__nav-menu">
{% for exhibition in exhibitions %}
<li class="sidebar__nav-item">
{% 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>
{% else %}
<a class="sidebar__nav-link sidebar__nav-link--blank" href="{{ exhibition.url }}" target="_blank">{{ exhibition.title }}</a>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</nav>
<div class="sidebar__social">
<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">
<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"/>
<rect height="10" width="10" x="98" y="20"/>
</svg>
</a>
<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">
<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>
</a>
</div>
</div>
</header>
</header>
{% endblock %}
{% 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 %}

View file

@ -1,36 +1,36 @@
{% extends "base.twig" %}
{% block header %}
<header>
<header>
<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">
<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)">
<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"/>
</g>
</svg>
</a>
</div>
<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">
<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)">
<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"/>
</g>
</svg>
</a>
</div>
</header>
</header>
{% endblock %}
{% 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">
<ul class="splide__list">
{% for image in images %}
<li class="splide__slide" data-logo-color="{{ image.logo_color }}">
<img class="splide__image" src="{{ image.url }}" srcset="{{ image.srcset() }}" alt="{{ image.alt_text }}">
</li>
{% endfor %}
</ul>
</div>
</section>
<div class="splide__track">
<ul class="splide__list">
{% for image in images %}
<li class="splide__slide" data-logo-color="{{ image.logo_color }}">
<img class="splide__image" src="{{ image.url }}" srcset="{{ image.srcset() }}" alt="{{ image.alt_text }}">
</li>
{% endfor %}
</ul>
</div>
</section>
{% endblock %}

View file

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