diff --git a/.github/workflows/test-with-example.yml b/.github/workflows/test-with-example.yml index ee46c094409b91e719266d2bc7cd560233179e38..3190dd0428ab6424c214ffa72d9fb6a0bc133a48 100644 --- a/.github/workflows/test-with-example.yml +++ b/.github/workflows/test-with-example.yml @@ -2,7 +2,7 @@ name: Test with example on: pull_request: - types: [opened, reopened] + types: [opened, reopened, synchronize] jobs: build: @@ -32,4 +32,4 @@ jobs: echo "== Pushing branch ==" git add . git commit -m "Updated theme to ${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} branch." - git push -f origin theme--${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} \ No newline at end of file + git push -f origin theme--${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 192ada95f83b1e93671ff0d02aa0e544a67abad2..f0ceb48b1ac3086d82dafb48da59ba10166be3b4 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -25,7 +25,7 @@ jobs: - name: Commit & Push uses: Andro999b/push@v1.3 with: - github_token: ${{ secrets.GITHUB_TOKEN }} + github_token: ${{ secrets.OSUNY_BOT_GITHUB_TOKEN }} branch: main force: true message: 'Write version to file' @@ -40,4 +40,4 @@ jobs: uses: dkershner6/post-api-call-action@v1 with: url: ${{ secrets.OSUNY_STAGING_API_AUTOUPDATE_THEME_URL }} - data: "{\"secret_key\":\"${{ secrets.OSUNY_API_AUTOUPDATE_THEME_KEY }}\"}" \ No newline at end of file + data: "{\"secret_key\":\"${{ secrets.OSUNY_API_AUTOUPDATE_THEME_KEY }}\"}" diff --git a/assets/js/theme/blocks/draggableBlocks.js b/assets/js/theme/blocks/draggableBlocks.js new file mode 100644 index 0000000000000000000000000000000000000000..fcde80907af054d6068d5a757e9358fadcd7e148 --- /dev/null +++ b/assets/js/theme/blocks/draggableBlocks.js @@ -0,0 +1,170 @@ +const draggableBlocks = document.querySelectorAll('.block-timeline--horizontal, .block-posts--carousel'); + +class DraggableBlock { + constructor (block) { + this.block = block; + this.content = this.block.querySelector('.draggable-container'); + this.list = this.block.querySelector('ol, ul'); + this.items = this.list.querySelectorAll('.draggable-item'); + this.previous = this.block.querySelector('.previous'); + this.next = this.block.querySelector('.next'); + this.isPointerDown = false; + + this.index = 0; + + this.listen(); + this.resize(); + this.goTo(0); + } + + listen () { + window.addEventListener('resize', this.resize.bind(this)); + + this.items.forEach((item, i) => { + item.addEventListener('click', this.onClickItem.bind(this, i)); + }); + + if (this.previous && this.next) { + this.handleArrows(); + } + + this.handlePointers(); + this.handleScroll(); + } + + resize () { + let maxTitleHeight = 0; + + this.block.style = ''; + + this.itemWidth = this.items[0].offsetWidth; + + this.items.forEach((item) => { + maxTitleHeight = Math.max(item.querySelector('.title, [itemprop="headline"]').offsetHeight, maxTitleHeight); + }); + + this.block.style.setProperty('--min-title-height', maxTitleHeight + 'px'); + this.update(); + } + + onClickItem(i) { + if (!this.isManipulated) { + this.goTo(i); + } + } + + handleArrows () { + this.previous.addEventListener('click', () => { + this.goTo(this.index-1); + }); + + this.next.addEventListener('click', () => { + this.goTo(this.index+1); + }); + } + + handlePointers () { + let startX, + endX, + threshold = 30; + // j'ai initialisé isPointerDown au début du code : this.isPointerDown + // j'ai enlevé endEvents = ['pointerup'] parce qu'il était seul ? + this.block.style.touchAction = 'pan-y'; + + // on passe de this.content à this.block sur chaque événement pour grab sur tout le bloc + this.block.addEventListener('pointerdown', (event) => { + // On vérifie que l'on ne soit pas en train de cliquer sur les boutons (car on cible tout le bloc pour le grab) + if (event.target !== this.next && event.target !== this.previous) { + // on utilise partout this.isPointerDown car la navigation avec les arrow buguait + // parfois ça naviguait de 2 items + this.isPointerDown = true; + this.content.classList.add('is-grabbing'); + startX = event.clientX; + } + }); + + this.block.addEventListener('pointermove', (event) => { + endX = event.clientX; + // On vérifie que l'événement pointerdown a été activé + if (this.isPointerDown) { + event.preventDefault(); + this.items.forEach((item) => { + // on enlève le pointerevents pour que les liens ne soient pas cliquable au drag + item.style.pointerEvents = "none"; + }); + } + }); + + // anciennement géré avec endEvents = ['pointerup'] (j'enlève le forEach) + this.block.addEventListener('pointerup', (event) => { + endX = event.clientX; + // on vérifie encore isPointerDown pour éviter le pb des arrows + if (this.isPointerDown) { + this.isPointerDown = false; + this.onManipulationEnd(startX, endX, threshold); + } + }); + } + + handleScroll() { + // On écoute le scroll sur le contenu du bloc + this.content.addEventListener('wheel', (event) => { + const deltaX = event.deltaX; + const deltaY = event.deltaY; + // navigation entre les items (comme onManipulationEnd) + if (Math.abs(deltaX) > Math.abs(deltaY)) { + if (deltaX !== 0) { + if (deltaX > 0) { + this.goTo(this.index + 1); + } else { + this.goTo(this.index - 1); + } + } + } + }); + } + + onManipulationEnd (start, end, threshold) { + if (start > end + threshold) { + this.goTo(this.index+1); + } else if (start < end - threshold) { + this.goTo(this.index-1); + } + + this.content.classList.remove('is-grabbing'); + this.items.forEach((item) => { + // On rend le pointervents pour pouvoir cliquer sur le lien si on drag pas + item.style.pointerEvents = "all"; + }); + + setTimeout(() => { + this.isManipulated = false; + }, 100); + } + + goTo (_index) { + this.index = Math.min(Math.max(_index, 0), this.items.length-1); + this.update(); + } + + update () { + this.list.style.marginLeft = `${-this.index * this.itemWidth}px`; + + this.items.forEach((item, index) => { + if (index < this.index) { + item.classList.add('is-passed'); + } else { + item.classList.remove('is-passed'); + } + }); + + if (this.previous && this.next) { + this.previous.disabled = this.index === 0; + this.next.disabled = this.index === this.items.length - 1; + } + } +} + +draggableBlocks.forEach((block) => { + new DraggableBlock(block); +}); diff --git a/assets/js/theme/blocks/timeline.js b/assets/js/theme/blocks/timeline.js deleted file mode 100644 index 1cab898f388b1f5a5f0da6f2353673f115a033e1..0000000000000000000000000000000000000000 --- a/assets/js/theme/blocks/timeline.js +++ /dev/null @@ -1,132 +0,0 @@ -const timelines = document.querySelectorAll('.block-timeline--horizontal'); - -class BlockTimeline { - constructor (block) { - this.block = block; - this.content = this.block.querySelector('.timeline'); - this.list = this.block.querySelector('.timeline-events ol'); - this.items = this.list.querySelectorAll('.timeline-event'); - this.previous = this.block.querySelector('.previous'); - this.next = this.block.querySelector('.next'); - this.isManipulated = false; - - this.index = 0; - - this.listen(); - this.resize(); - this.goTo(0); - } - - listen () { - window.addEventListener('resize', this.resize.bind(this)); - - this.items.forEach((item, i) => { - item.addEventListener('click', this.onClickItem.bind(this, i)); - }); - - if (this.previous && this.next) { - this.handleArrows(); - } - - this.handlePointers(); - } - - resize () { - let maxTitleHeight = 0; - - this.block.style = ''; - - this.itemWidth = this.items[0].offsetWidth; - - this.items.forEach((item) => { - maxTitleHeight = Math.max(item.querySelector('.title').offsetHeight, maxTitleHeight); - }); - - this.block.style.setProperty('--min-title-height', maxTitleHeight + 'px'); - this.update(); - } - - onClickItem(i) { - if (!this.isManipulated) { - this.goTo(i); - } - } - - handleArrows () { - this.previous.addEventListener('click', () => { - this.goTo(this.index-1); - }); - this.next.addEventListener('click', () => { - this.goTo(this.index+1); - }); - } - - handlePointers () { - let endEvents = ['pointerup'], - startX, - endX, - threshold = 30, - isPointerDown = false; - - this.content.style.touchAction = 'pan-y'; - - this.content.addEventListener('pointerdown', (event) => { - this.content.classList.add('is-grabbing'); - startX = event.clientX; - isPointerDown = true; - }); - - this.content.addEventListener('pointermove', (event) => { - this.isManipulated = isPointerDown; - endX = event.clientX; - }); - - endEvents.forEach(event => { - this.content.addEventListener(event, (event) => { - isPointerDown = false; - this.onManipulationEnd(startX, endX, threshold); - }); - }); - } - - onManipulationEnd (start, end, threshold) { - if (start > end + threshold) { - this.goTo(this.index+1); - } else if (start < end - threshold) { - this.goTo(this.index-1); - } - - this.content.classList.remove('is-grabbing'); - - // Add delay to avoid conflict with item clicked - setTimeout(() => { - this.isManipulated = false; - }, 100); - } - - goTo (_index) { - this.index = Math.min(Math.max(_index, 0), this.items.length-1); - this.update(); - } - - update () { - this.list.style.marginLeft = `${-this.index * this.itemWidth}px`; - - this.items.forEach((item, index) => { - if (index < this.index) { - item.classList.add('is-passed'); - } else { - item.classList.remove('is-passed'); - } - }); - - if (this.previous && this.next) { - this.previous.disabled = this.index === 0; - this.next.disabled = this.index === this.items.length - 1; - } - } -} - -timelines.forEach((timeline) => { - new BlockTimeline(timeline); -}); diff --git a/assets/js/theme/design-system/mainMenu.js b/assets/js/theme/design-system/mainMenu.js index 1612759f85573531eecfd0bfc1e046da479eae43..cb24b4e134bf01c2e6dc409ad48bd2f5d66ea119 100644 --- a/assets/js/theme/design-system/mainMenu.js +++ b/assets/js/theme/design-system/mainMenu.js @@ -12,7 +12,7 @@ class MainMenu { constructor (selector) { this.element = document.querySelector(selector); this.menu = this.element.querySelector('.menu'); - this.mainButton = this.element.querySelector('button'); + this.mainButton = this.element.querySelector('button.header-button'); this.dropdownsButtons = this.element.querySelectorAll('.has-children [role="button"]'); this.state = { @@ -62,7 +62,7 @@ class MainMenu { const isMobile = window.innerWidth <= breakpoints.md; document.documentElement.style.setProperty('--header-height', this.element.offsetHeight + 'px'); document.documentElement.style.setProperty('--header-menu-max-height', (window.innerHeight - this.element.offsetHeight) + 'px'); - + // is state changed ? if (this.state.isMobile === isMobile) { return null; @@ -71,7 +71,6 @@ class MainMenu { this.state.isMobile = isMobile; this.closeEverything(); - } toggleMainMenu (open = !this.state.isOpened) { @@ -150,7 +149,7 @@ class MainMenu { if (y > this.state.previousScrollY + threshold && !isNearTop) { document.documentElement.classList.add(CLASSES.scrollingDown); hasChanged = true; - } else if (y < this.state.previousScrollY - threshold){ + } else if (y < this.state.previousScrollY - threshold) { document.documentElement.classList.remove(CLASSES.scrollingDown); hasChanged = true; } diff --git a/assets/js/theme/index.js b/assets/js/theme/index.js index 5dc97bb8ec7e3c3e26fc77abafc75bfff9144365..98f75c1c3f810d4ba5ca0751d677168bf82aa0a1 100644 --- a/assets/js/theme/index.js +++ b/assets/js/theme/index.js @@ -8,5 +8,5 @@ import './design-system/search'; import './design-system/toc'; import './blocks/keyFigures'; import './blocks/organizations'; -import './blocks/timeline'; +import './blocks/draggableBlocks.js'; import './blocks/videos.js'; diff --git a/assets/js/vendors/carousel.js b/assets/js/vendors/carousel.js index 41d1afa93a711b7adc3bb8a7c1f0b52d307d58ea..a983e5fc05614fadd6fd7a6d87df8eadabeb29a7 100644 --- a/assets/js/vendors/carousel.js +++ b/assets/js/vendors/carousel.js @@ -1,17 +1,21 @@ import Splide from '@splidejs/splide'; -Splide.defaults = { - i18n: { - first: 'Aller au premier slide', - last: 'Aller au dernier slide', - next: 'Slide suivant', - pageX: 'Aller à la page %s', - pause: 'Mettre en pause le carousel', - play: 'Démarrer le carousel', - prev: 'Slide précedent', - slideX: 'Aller au slide %s' - } -}; +let siteLang = document.querySelector('html').getAttribute('lang'); + +if (siteLang == "fr") { + Splide.defaults = { + i18n: { + first: 'Aller au premier slide', + last: 'Aller au dernier slide', + next: 'Slide suivant', + pageX: 'Aller à la page %s', + pause: 'Mettre en pause le carousel', + play: 'Démarrer le carousel', + prev: 'Slide précedent', + slideX: 'Aller au slide %s' + } + }; +} class Carousel { constructor (element) { diff --git a/assets/js/vendors/lightbox.js b/assets/js/vendors/lightbox.js index b2cb76170eee2e4539d69146e2d38341a4050aaa..b8c477970840c1b4283c9f217b4e6335c7f5f264 100644 --- a/assets/js/vendors/lightbox.js +++ b/assets/js/vendors/lightbox.js @@ -1,6 +1,39 @@ import gLightbox from 'glightbox'; -gLightbox({ +let siteLang = document.querySelector('html').getAttribute('lang'); + +let lightboxBtn; + +const lightbox = gLightbox({ + selector: '.glightbox', openEffect: 'fade', - closeEffect: 'fade' + closeEffect: 'fade', + onOpen: () => { + lightboxBtn = document.activeElement; + const lightboxContainer = document.querySelector('#glightbox-body'); + lightboxContainer.setAttribute('aria-modal', 'true'); + + if(siteLang == "fr") { + const nextButton = document.querySelector('.gnext'); + const prevButton = document.querySelector('.gprev'); + const closeButton = document.querySelector('.gclose'); + + nextButton.setAttribute('aria-label', 'Suivant'); + prevButton.setAttribute('aria-label', 'Précédent'); + closeButton.setAttribute('aria-label', 'Fermer'); + } + }, + onClose: () => { + if (lightboxBtn) { + lightboxBtn.focus(); + } + } }); + +lightbox.on('slide_changed', () => { + const currentSlide = document.querySelector('.gslide.current'); + if (currentSlide) { + currentSlide.setAttribute("tabindex", "0"); + currentSlide.focus(); + } +}); \ No newline at end of file diff --git a/assets/sass/_theme/_configuration.sass b/assets/sass/_theme/_configuration.sass index 5f6d13b4ea1aa0b90941ddd9fe2d2895d88742f9..9a2e0a7d31ee23648622d53b6f77877ed04109f3 100644 --- a/assets/sass/_theme/_configuration.sass +++ b/assets/sass/_theme/_configuration.sass @@ -2,27 +2,52 @@ $color-accent: #0038FF !default $color-text: #000000 !default $color-text-alt: #454545 !default -$color-border: rgba(0, 0, 0, 0.30) !default -$color-background-alt: #F2F2F2 !default $color-background: #FFFFFF !default - -$body-color: $color-text !default -$body-background-color: $color-background !default -$link-color: $color-text !default - -// Grid -$grid-gutter: px2rem(64) !default -$grid-max-width: px2rem(1980) !default -$grid-gutter-sm: px2rem(44) !default +$color-background-alt: #F2F2F2 !default +$color-border: rgba(0, 0, 0, 0.30) !default +$color-selection: $color-background !default +$color-selection-background: rgba($color-text, .7) !default + +// Scheme Dark colors (enable dark mode in your hugo configuration file) +$has-dark-mode: false !default +$color-dark-accent: rgb(120, 208, 255) !default +$color-dark-text: #ffffff !default +$color-dark-text-alt: #cbcbcb !default +$color-dark-background: #000000 !default +$color-dark-background-alt: #181919 !default +$color-dark-border: rgba(255, 255, 255, 0.3) !default +$color-dark-selection: $color-dark-background !default +$color-dark-selection-background: rgba($color-dark-text, .7) !default + +$body-color: var(--color-text) !default +$body-background-color: var(--color-background) !default +$link-color: var(--color-text) !default + +// Grid System +$grid-gutter: pxToRem(24) !default +$grid-gutter-lg: pxToRem(48) !default +$grid-gutter-xxl: pxToRem(64) !default +$grid-max-width: pxToRem(1980) !default // Spacing -$space-unit: 4 !default -$spacing0: space(3) !default -$spacing1: space(6) !default -$spacing2: space(12) !default -$spacing3: space(16) !default -$spacing4: space(32) !default -$spacing5: space(64) !default +$space-unit: 4 +$spacing-1: space(2) // 8px +$spacing-2: space(3) // 12px +$spacing-3: space(6) // 24px +$spacing-4: space(12) // 48px +$spacing-5: space(16) // 64px +$spacing-6: space(32) // 128px +$spacing-7: space(64) // 256px + +// Deprecated variables +// $spacing0: space(3) --> $spacing-2 +// $spacing1: space(6) --> $spacing-3 +// $spacing2: space(12) --> $spacing-4 +// $spacing3: space(16) --> $spacing-5 +// $spacing4: space(32) --> $spacing-6 +// $spacing5: space(64) --> $spacing-7 + +$minimum-accessible-size: 44px // TYPOGRAPHY @@ -35,103 +60,119 @@ $heading-font-weight: normal !default // h1 $h1-font-family: $heading-font-family !default -$h1-size-desktop: px2rem(60) !default -$h1-size: px2rem(30) !default +$h1-size-desktop: pxToRem(60) !default +$h1-size: pxToRem(30) !default $h1-line-height: 120% !default +$h1-line-height-desktop: $h1-line-height !default $h1-weight: bold !default $h1-text-transform: none !default // h2 $h2-font-family: $heading-font-family !default -$h2-size-desktop: px2rem(40) !default -$h2-size: px2rem(24) !default +$h2-size-desktop: pxToRem(40) !default +$h2-size: pxToRem(24) !default $h2-line-height: 120% !default +$h2-line-height-desktop: $h2-line-height !default $h2-weight: $heading-font-weight !default $h2-text-transform: none !default // h3 $h3-font-family: $heading-font-family !default -$h3-size-desktop: px2rem(28) !default -$h3-size: px2rem(20) !default +$h3-size-desktop: pxToRem(28) !default +$h3-size: pxToRem(20) !default $h3-line-height: 130% !default +$h3-line-height-desktop: $h3-line-height !default $h3-weight: bold !default $h3-text-transform: none !default // h4 $h4-font-family: $heading-font-family !default -$h4-size-desktop: px2rem(22) !default -$h4-size: px2rem(16) !default +$h4-size-desktop: pxToRem(22) !default +$h4-size: pxToRem(16) !default $h4-line-height: 130% !default +$h4-line-height-desktop: $h4-line-height !default $h4-weight: bold !default $h4-text-transform: none !default // h5 or Section $h5-font-family: $heading-font-family !default -$h5-size-desktop: px2rem(24) !default -$h5-size: px2rem(20) !default +$h5-size-desktop: pxToRem(24) !default +$h5-size: pxToRem(20) !default $h5-line-height: 130% !default +$h5-line-height-desktop: $h5-line-height !default $h5-weight: $heading-font-weight !default $h5-text-transform: uppercase !default // h6 or Tab $h6-font-family: $heading-font-family !default -$h6-size-desktop: px2rem(20) !default -$h6-size: px2rem(14) !default +$h6-size-desktop: pxToRem(20) !default +$h6-size: pxToRem(14) !default $h6-line-height: 130% !default +$h6-line-height-desktop: $h6-line-height !default $h6-weight: $heading-font-weight !default $h6-text-transform: uppercase !default // Lead $lead-font-family: $heading-font-family !default -$lead-size-desktop: px2rem(60) !default -$lead-size: px2rem(24) !default +$lead-size-desktop: pxToRem(60) !default +$lead-size: pxToRem(24) !default $lead-line-height: 120% !default +$lead-line-height-desktop: $lead-line-height !default $lead-weight: $heading-font-weight !default $lead-sidebar-font-family: $lead-font-family !default -$lead-sidebar-size-desktop: px2rem(32) !default +$lead-sidebar-size-desktop: pxToRem(32) !default +$lead-sidebar-size: $lead-size !default $lead-sidebar-line-height: $lead-line-height !default +$lead-sidebar-line-height-desktop: $lead-sidebar-line-height !default $lead-sidebar-weight: $lead-weight !default $lead-hero-font-family: $lead-sidebar-font-family !default $lead-hero-size: $lead-size !default $lead-hero-size-desktop: $lead-sidebar-size-desktop !default $lead-hero-line-height: $lead-sidebar-line-height !default +$lead-hero-line-height-desktop: $lead-hero-line-height !default $lead-hero-weight: $lead-sidebar-weight !default // Body -$body-size-desktop: px2rem(22) !default -$body-size: px2rem(18) !default +$body-size-desktop: pxToRem(22) !default +$body-size: pxToRem(18) !default $body-line-height: 160% !default +$body-line-height-desktop: $body-line-height !default $body-weight: normal !default // Small $small-font-family: $body-font-family !default -$small-size-desktop: px2rem(18) !default -$small-size: px2rem(14) !default +$small-size-desktop: pxToRem(18) !default +$small-size: pxToRem(14) !default $small-line-height: 130% !default +$small-line-height-desktop: $small-line-height !default $small-weight: normal !default // Signature $signature-font-family: $heading-font-family !default -$signature-size-desktop: px2rem(22) !default -$signature-size: px2rem(18) !default +$signature-size-desktop: pxToRem(22) !default +$signature-size: pxToRem(18) !default $signature-line-height: 130% !default +$signature-line-height-desktop: $signature-line-height !default $signature-weight: $heading-font-weight !default // Meta $meta-font-family: $heading-font-family !default -$meta-size-desktop: px2rem(16) !default -$meta-size: px2rem(14) !default +$meta-size-desktop: pxToRem(16) !default +$meta-size: pxToRem(14) !default $meta-line-height: 150% !default +$meta-line-height-desktop: $meta-line-height !default $meta-weight: $heading-font-weight !default // Quotes $quote-font-family: $body-font-family !default -$quote-size-desktop-short: px2rem(60) !default -$quote-size-desktop-long: px2rem(40) !default -$quote-size: px2rem(24) !default +$quote-size-desktop-short: pxToRem(60) !default +$quote-size-desktop-long: pxToRem(40) !default +$quote-size-desktop: pxToRem(40) !default +$quote-size: pxToRem(24) !default $quote-line-height: 120% !default +$quote-line-height-desktop: $quote-line-height !default $quote-weight: normal !default $quote-style: italic !default @@ -141,27 +182,35 @@ $link-underline-thickness: 1px !default $link-transition: text-decoration-color .3s ease !default $link-unhover-decoration-color-alpha: 0.3 !default -// Buttons -$btn-font-size-desktop: px2rem(18) !default // TODO -$btn-font-size: px2rem(14) !default -$btn-padding-x-desktop: $spacing1 !default -$btn-padding-y-desktop: px2rem(15) !default -$btn-padding-x: $spacing1 !default -$btn-padding-y: $spacing0 !default -$btn-border-radius: px2rem(4) !default -$btn-border: 1px solid $color-text !default -$btn-hover-background: $color-background-alt !default +// Button +$btn-font-family: $heading-font-family !default +$btn-font-size: $meta-size !default +$btn-font-size-desktop: $meta-size-desktop !default +$btn-font-weight: normal !default +$btn-text-transform: none !default +$btn-color: var(--color-text) !default +$btn-hover-color: var(--color-text) !default +$btn-background: transparent !default +$btn-hover-background: var(--color-background) !default +$btn-border: pxToRem(1) solid var(--color-border) !default +$btn-border-desktop: $btn-border !default +$btn-border-radius: pxToRem(4) !default +$btn-border-radius-desktop: $btn-border-radius !default +$btn-padding: pxToRem(12) pxToRem(10) !default +$btn-padding-desktop: pxToRem(18) pxToRem(16) !default +$btn-min-width: pxToRem(100) !default +$btn-min-width-desktop: pxToRem(190) !default // Chip -$chip-background: $color-background !default -$chip-background-hover: $color-background-alt !default -$chip-border: 1px solid $color-border !default +$chip-background: var(--color-background) !default +$chip-background-hover: var(--color-background-alt) !default +$chip-border: 1px solid var(--color-border) !default $chip-border-radius: $btn-border-radius !default -$chip-color: $color-text !default +$chip-color: var(--color-text) !default // Form -$form-btn-color: $color-background !default -$form-btn-background-color: $color-accent !default +$form-btn-color: var(--color-background) !default +$form-btn-background-color: var(--color-accent) !default $form-input-border-radius: 4px !default // Z-index @@ -176,21 +225,21 @@ $zindex-aside: 48 !default $zindex-footer: 50 !default // Header -$header-color: $color-text !default -$header-hover-color: $color-accent !default // TODO : Réflechir à plus élégant / générique -$header-background: $color-background-alt !default +$header-color: var(--color-text) !default +$header-hover-color: var(--color-accent) !default // TODO : Réflechir à plus élégant / générique +$header-background: var(--color-background-alt) !default $header-transition: 0.3s !default $header-dropdown-full: false !default $header-dropdown-background: $header-background !default $header-dropdown-color: $header-color !default $header-dropdown-transition: $header-transition !default $header-sticky-enabled: true !default -$header-sticky-background: $color-background !default +$header-sticky-background: var(--color-background) !default $header-sticky-dropdown-background: $header-sticky-background !default $header-sticky-color: $header-color !default $header-sticky-transition: $header-transition !default -$header-nav-padding-y: px2rem(20) !default -$header-nav-padding-y-desktop: px2rem(30) !default +$header-nav-padding-y: pxToRem(20) !default +$header-nav-padding-y-desktop: pxToRem(30) !default $header-logo-height: 32px !default $header-logo-height-desktop: $header-logo-height !default $header-height: 87px !default @@ -202,63 +251,87 @@ $header-border-bottom-width: 1px !default $body-overlay-color: rgba(0, 0, 0, 0.3) !default // Footer -$footer-color: $color-text !default -$footer-background-color: $color-background-alt !default +$footer-color: var(--color-text) !default +$footer-background-color: var(--color-background-alt) !default $footer-logo-height: $header-logo-height !default $footer-logo-height-desktop: $footer-logo-height !default $footer-icons-enabled: true !default -$footer-icons-size: px2rem(32) !default +$footer-icons-size: pxToRem(32) !default $footer-text-hidden: false !default -$dropdown-i18n-background-color: $color-background !default -$dropdown-i18n-color: $color-text !default +$dropdown-i18n-background-color: var(--color-background) !default +$dropdown-i18n-color: var(--color-text) !default // Hero $hero-height: 300px !default $hero-height-desktop: 500px !default -$hero-color: $color-text !default -$hero-background-color: $color-background-alt !default +$hero-color: var(--color-text) !default +$hero-background-color: var(--color-background-alt) !default +$hero-credit-color: var(--color-text-alt) !default // Breadcrumb $breadcrumb-color: $hero-color !default $breadcrumb-color-active: $hero-color !default $breadcrumb-icon: "caret-right" !default -$breadcrumb-icon-color: $color-text-alt !default +$breadcrumb-icon-color: var(--color-text-alt) !default // Icons $icons: () $icons: map-merge($icons, ("arrow": "\ff01")) +$icons: map-merge($icons, ("arrow-raw": "\e93a")) $icons: map-merge($icons, ("arrow-first": "\e906")) $icons: map-merge($icons, ("arrow-last": "\e907")) $icons: map-merge($icons, ("arrow-left": "\ff02")) +$icons: map-merge($icons, ("arrow-left-raw": "\e938")) $icons: map-merge($icons, ("arrow-next": "\e909")) $icons: map-merge($icons, ("arrow-previous": "\e908")) $icons: map-merge($icons, ("arrow-right": "\ff00")) +$icons: map-merge($icons, ("arrow-right-raw": "\e939")) +$icons: map-merge($icons, ("arrow-alt": "\e931")) +$icons: map-merge($icons, ("arrow-alt-raw": "\e936")) $icons: map-merge($icons, ("burger": "\e902")) $icons: map-merge($icons, ("burger-close": "\e905")) $icons: map-merge($icons, ("caret": "\e904")) +$icons: map-merge($icons, ("caret-raw": "\e940")) +$icons: map-merge($icons, ("caret-bottom": "\e911")) +$icons: map-merge($icons, ("caret-bottom-raw": "\e944")) +$icons: map-merge($icons, ("caret-left": "\e912")) +$icons: map-merge($icons, ("caret-left-raw": "\e942")) $icons: map-merge($icons, ("caret-top": "\e914")) +$icons: map-merge($icons, ("caret-top-raw": "\e941")) $icons: map-merge($icons, ("caret-right": "\e913")) -$icons: map-merge($icons, ("caret-left": "\e912")) -$icons: map-merge($icons, ("caret-bottom": "\e911")) +$icons: map-merge($icons, ("caret-right-raw": "\e943")) $icons: map-merge($icons, ("check": "\ff06")) $icons: map-merge($icons, ("check-inline": "\ff07")) +$icons: map-merge($icons, ("check-inline-raw": "\e945")) $icons: map-merge($icons, ("close": "\e90e")) $icons: map-merge($icons, ("copy": "\ff03")) +$icons: map-merge($icons, ("copy-raw": "\e946")) $icons: map-merge($icons, ("copy-inline": "\ff04")) $icons: map-merge($icons, ("download": "\e900")) +$icons: map-merge($icons, ("download-inline": "\e92f")) +$icons: map-merge($icons, ("download-raw": "\e937")) $icons: map-merge($icons, ("eye": "\e901")) $icons: map-merge($icons, ("facebook": "\e90b")) +$icons: map-merge($icons, ("facebook-raw": "\e93e")) $icons: map-merge($icons, ("globe": "\ff10")) +$icons: map-merge($icons, ("globe-raw": "\e934")) $icons: map-merge($icons, ("instagram": "\e90a")) +$icons: map-merge($icons, ("instagram-raw": "\e93b")) $icons: map-merge($icons, ("link-blank": "\e903")) $icons: map-merge($icons, ("link-blank-block": "\ff05")) +$icons: map-merge($icons, ("link-blank-raw": "\e932")) $icons: map-merge($icons, ("linkedin": "\e90c")) +$icons: map-merge($icons, ("linkedin-raw": "\e93c")) $icons: map-merge($icons, ("list-hyphen": "\e917")) +$icons: map-merge($icons, ("list-hyphen-raw": "\e93f")) $icons: map-merge($icons, ("pause": "\e90f")) $icons: map-merge($icons, ("play": "\e910")) $icons: map-merge($icons, ("search": "\e916")) $icons: map-merge($icons, ("search-inline": "\ee13")) +$icons: map-merge($icons, ("search-raw": "\e933")) $icons: map-merge($icons, ("social": "\e915")) +$icons: map-merge($icons, ("social-raw": "\e935")) +$icons: map-merge($icons, ("social-inline": "\e92e")) $icons: map-merge($icons, ("social-facebook": "\ee01")) $icons: map-merge($icons, ("social-instagram": "\ee02")) $icons: map-merge($icons, ("social-linkedin": "\ee03")) @@ -273,6 +346,7 @@ $icons: map-merge($icons, ("social-github": "\ee10")) $icons: map-merge($icons, ("social-email": "\ee11")) $icons: map-merge($icons, ("toc": "\e918")) $icons: map-merge($icons, ("twitter": "\e90d")) +$icons: map-merge($icons, ("twitter-raw": "\e90d")) $icons: map-merge($icons, ("whatsapp": "\e919")) $icons: map-merge($icons, ("email": "\e920")) $icons: map-merge($icons, ("telegram": "\e921")) @@ -288,9 +362,9 @@ $lightbox-overlay-color: rgba(0, 0, 0, 0.90) !default $lightbox-backdrop: blur(16px) !default // Table of content -$toc-color: $color-text !default -$toc-active-color: $color-accent !default // TODO : checker ce que ça fait -$toc-background-color: $color-background-alt !default +$toc-color: var(--color-text) !default +$toc-active-color: var(--color-accent) !default // TODO : checker ce que ça fait +$toc-background-color: var(--color-background-alt) !default $toc-font-family: $body-font-family !default $toc-font-size: $body-size !default $toc-font-size-desktop: $body-size-desktop !default @@ -307,57 +381,78 @@ $table-head-font-size-desktop: $h4-size-desktop !default $table-body-size: $body-size !default $table-body-size-desktop: $body-size-desktop !default +// HEADING + +// Under desktop breakpoint +$heading-margin-top: $spacing-4 !default +$heading-margin-bottom: 0 !default +// Upper desktop breakpoint without sidebar +$heading-margin-top-desktop: $spacing-6 !default +$heading-margin-bottom-desktop: $heading-margin-bottom !default +// Upper desktop breakpoint with sidebar +$heading-margin-top-with-sidebar: $spacing-5 !default +$heading-margin-bottom-with-sidebar: $heading-margin-bottom !default + // BLOCKS // Base -$block-space-y: $spacing3 !default + +// Under desktop breakpoint +$block-space-y: $spacing-4 !default +// Upper desktop breakpoint without sidebar +$block-space-y-desktop: $spacing-5 !default +// Upper desktop breakpoint with sidebar +$block-space-y-with-sidebar: $spacing-5 !default // Block call to action -$block-call-to-action-background: $color-accent !default -$block-call-to-action-color: $color-background !default -$block-call-to-action-button-background: $color-background !default -$block-call-to-action-button-color: $color-text !default -$block-call-to-action-button-hover-background: $color-text-alt !default -$block-call-to-action-button-hover-color: $color-background !default +$block-call-to-action-background: var(--color-accent) !default +$block-call-to-action-color: var(--color-background) !default +$block-call-to-action-button-background: var(--color-background) !default +$block-call-to-action-button-color: var(--color-text) !default +$block-call-to-action-button-hover-background: var(--color-text-alt) !default +$block-call-to-action-button-hover-color: var(--color-background) !default // Block chapter -$block-chapter-layout-accent-background: $color-accent !default -$block-chapter-layout-accent-color: $color-background !default -$block-chapter-layout-alt-background: $color-background-alt !default -$block-chapter-layout-alt-color: $color-text !default +$block-chapter-layout-accent-background: var(--color-accent) !default +$block-chapter-layout-accent-color: var(--color-background) !default +$block-chapter-layout-alt-background: var(--color-background-alt) !default +$block-chapter-layout-alt-color: var(--color-text) !default // Block definitions -$block-definition-border-color: $color-border !default -$block-definition-border-color-hovered: $color-accent !default -$block-definition-color-hovered: $color-accent !default +$block-definition-border-color: var(--color-border) !default +$block-definition-border-color-hovered: var(--color-accent) !default +$block-definition-color-hovered: var(--color-accent) !default $block-definition-font-size: $body-size !default $block-definition-font-size-desktop: $body-size-desktop !default // Block pages -$block-pages-card-background: $color-background-alt !default -$block-pages-card-page-background: $color-background !default -$block-pages-card-page-color: $color-text !default -$block-pages-card-page-background-hover: $color-accent !default -$block-pages-card-page-color-hover: $color-background !default +$block-pages-card-background: var(--color-background-alt) !default +$block-pages-card-page-background: var(--color-background) !default +$block-pages-card-page-color: var(--color-text) !default +$block-pages-card-page-background-hover: var(--color-accent) !default +$block-pages-card-page-color-hover: var(--color-background) !default // Block posts $block-posts-grid-columns: 3 !default +// Block programs +$block-programs-aspect-ratio: 16/9 !default + // Block timeline -$block-timeline-horizontal-background: $color-background-alt !default -$block-timeline-horizontal-color: $color-text !default +$block-timeline-horizontal-background: var(--color-background-alt) !default +$block-timeline-horizontal-color: var(--color-text) !default // Block testimonials $block-testimonials-xl-font-size: $quote-size-desktop-short !default $block-testimonials-xl-line-height: $quote-line-height !default $block-testimonials-xl-font-size-long-text: $quote-size-desktop-long !default $block-testimonials-xl-line-height-long-text: $quote-line-height !default -$block-testimonials-color: $color-accent !default +$block-testimonials-color: var(--color-accent) !default $block-testimonials-font-family: $quote-font-family !default $block-testimonials-font-size: $quote-size !default $block-testimonials-line-height: $quote-line-height !default $block-testimonials-style: $quote-style !default -$block-testimonials-pagination-background: $color-border !default -$block-testimonials-pagination-progress-background: $color-accent !default +$block-testimonials-pagination-background: var(--color-border) !default +$block-testimonials-pagination-progress-background: var(--color-accent) !default // Block key_figures @@ -365,24 +460,25 @@ $block-testimonials-pagination-progress-background: $color-accent !default $block-key_figures-number-font-family: $heading-font-family !default $block-key_figures-unit-font-weight: normal !default $block-key_figures-number-font-weight: bold !default +$block-key_figures-image-max-width: $spacing-6 !default -$block-key_figures-font-size: px2rem(16) !default -$block-key_figures-number-font-size: px2rem(32) !default +$block-key_figures-font-size: pxToRem(16) !default +$block-key_figures-number-font-size: pxToRem(32) !default -$block-key_figures-font-size-desktop: px2rem(18) !default -$block-key_figures-number-font-size-desktop: px2rem(40) !default +$block-key_figures-font-size-desktop: pxToRem(18) !default +$block-key_figures-number-font-size-desktop: pxToRem(40) !default -$block-key_figures-font-size-lg: px2rem(20) !default -$block-key_figures-number-font-size-lg: px2rem(50) !default +$block-key_figures-font-size-lg: pxToRem(20) !default +$block-key_figures-number-font-size-lg: pxToRem(50) !default $block-key_figures-font-size-xl: $block-key_figures-font-size-lg !default -$block-key_figures-number-font-size-xl: px2rem(60) !default +$block-key_figures-number-font-size-xl: pxToRem(60) !default $block-key_figures-font-size-xxl: $block-key_figures-font-size-xl !default -$block-key_figures-number-font-size-xxl: px2rem(80) !default +$block-key_figures-number-font-size-xxl: pxToRem(80) !default // Block gallery -$block-gallery-carousel-background: $color-background-alt !default +$block-gallery-carousel-background: var(--color-background-alt) !default $block-gallery-carousel-max-height: 70vh !default // Block image @@ -390,26 +486,30 @@ $block-image-max-height-with-sidebar: calc(100vh - var(--header-height)) !defaul $block-image-max-height-without-sidebar: none !default // Block video -$block-video-background: $color-background-alt !default +$block-video-background: var(--color-background-alt) !default // Sections -$article-media-background: color-contrast($color-background, 3%) !default $article-media-aspect-ratio: 2 !default -$post-media-background: $article-media-background !default -$post-categories-color: color-contrast($color-text, 20%) !default -$post-time-color: $color-text-alt !default +$post-time-color: var(--color-text-alt) !default // Si layout posts grid (ne concerne pas les blocks posts) $posts-grid-columns: $block-posts-grid-columns !default // Person -$persons-avatar-background-color: $color-background-alt !default +$persons-avatar-background-color: var(--color-background-alt) !default + +// Organization +$organization-background-color: $color-background-alt !default // Use sass variable color-background To avoid dark logo on darkmode background-alt color + +// Project +$project-infos-border-color: $color-border !default +$project-infos-color-text: $color-text !default +$project-infos-color-text-alt: $color-text-alt !default +$project-infos-color-accent: $color-accent !default // Program $program-essential-font-size: $meta-size !default $program-essential-font-size-desktop: $meta-size-desktop !default -$program-share-font-size: $meta-size !default -$program-share-font-size-desktop: $meta-size-desktop !default $program-zindex-toc: $zindex-toc !default // MISC @@ -422,5 +522,5 @@ $arrow-ease-transition-2: cubic-bezier(0, 0.65, 0.4, 1) !default $icon-burger-margin-right: -12px $icon-close-margin-right: -12px $icon-toc-margin-right: -14px -$icon-arrow-previous-margin-left: -22px // cf. testimonial -$icon-social-margin-right: -14px \ No newline at end of file +$icon-arrow-previous-margin-left: -18px // cf. testimonial +$icon-social-margin-right: -14px diff --git a/assets/sass/_theme/_utils.sass b/assets/sass/_theme/_utils.sass index 0e9fd77345bf757f181cbf8f230ad8f80780306c..8fe28937e1de3e2fd1d88dda102a1b1d5322e621 100644 --- a/assets/sass/_theme/_utils.sass +++ b/assets/sass/_theme/_utils.sass @@ -1,474 +1,12 @@ -@function pxToRem($size) - $remSize: $size / 16 - @return #{$remSize}rem - -@function px2rem($size) - @return pxToRem($size) - -$space-unit: 4 !default -@function space($spaces: 1) - @return #{$spaces * $space-unit / 16}rem - -@mixin in-page-with-sidebar - @include media-breakpoint-up(desktop) - body:not(.full-width) & - @content - -@mixin in-page-without-sidebar - @include media-breakpoint-up(desktop) - main > .blocks &, - body.full-width &, - @content - -// Use this mixin to override with-aside or without-aside rules -@mixin in-page-with-or-without-sidebar - @include media-breakpoint-up(desktop) - body:not(.full-width) &, - main > .blocks &, - body.full-width &, - @content - -// Aliases -@mixin full-page - @include in-page-without-sidebar - @content - -@mixin not-full-page - @include in-page-with-sidebar - @content - -@mixin in-page-program - .programs__section & - @content - -@function half($size) - @return calc(#{$size} / 2) - -@mixin link($color: $link-color, $unhover_decorated: true) - color: $color - text-decoration-line: underline - text-decoration-thickness: $link-underline-thickness - text-underline-offset: $link-underline-offset - transition: $link-transition - @if $unhover_decorated - text-decoration-color: rgba($color, $link-unhover-decoration-color-alpha) - @else - text-decoration-color: transparent - &:hover - text-decoration-color: rgba($color, 1) - text-decoration-thickness: $link-underline-thickness - -@mixin link-hovered-underline-only - &:not(:hover) - text-decoration: transparent - -@mixin hover-translate-icon($pseudo: after, $distance: 10) - &::#{$pseudo} - display: inline-block - transition: transform 0.55s $arrow-ease-transition - transform: translateX(0) - &:hover - &::#{$pseudo} - transform: translateX(#{px2rem($distance)}) - -@mixin sticky($offset-y: 0) - position: sticky - top: $offset-y - @if $header-sticky-enabled - transition: top $header-sticky-transition - html:not(.is-scrolling-down) & - top: calc(var(--header-height) + #{$offset-y}) - -// NEW UTILS -@mixin icon($icon-name: '', $pseudo-element: before, $non-breaking: false) - &::#{$pseudo-element} - content: map-get($icons, $icon-name) - display: inline-block - font-family: 'Icon' - font-style: normal - font-variant: normal - font-weight: normal - line-height: 1 - speak: never - text-transform: none - vertical-align: middle - @if $non-breaking - content: " #{map-get($icons, $icon-name)}" - display: inline - @content // TODO : important de documenter ça - -@mixin icon-block($icon-name: '', $pseudo-element: before, $non-breaking: false) - @include icon($icon-name, $pseudo-element, $non-breaking) - font-size: 44px - display: inline - @content - -@mixin container - margin-left: auto - margin-right: auto - max-width: $grid-max-width - padding-left: half($grid-gutter-sm) - padding-right: half($grid-gutter-sm) - width: 100% - @include media-breakpoint-up(desktop) - padding-left: $grid-gutter - padding-right: $grid-gutter - -@mixin grid($cols: 12, $breakpoint: false, $gap-y: $grid-gutter, $gap-x: $grid-gutter) - word-break: break-word - @if $breakpoint - @include media-breakpoint-up($breakpoint) - display: grid - grid-gap: $gap-y $gap-x - grid-template-columns: repeat($cols, 1fr) - @else - display: grid - grid-gap: $gap-y $gap-x - grid-template-columns: repeat($cols, 1fr) - @include media-breakpoint-down(desktop) - grid-gap: $grid-gutter-sm - -// This must be used for content inside columns -@function col($quantity, $base: 12) - $quantity-on-base: $quantity / $base * 12 - $width: calc( (100% + #{$grid-gutter}) / 12 * #{$quantity-on-base} - #{$grid-gutter} ) - @return #{$width} - -// This must be used for offset, outside columns -@function offset($quantity, $base: 12) - $quantity-on-base: $quantity / $base * 12 - $width: calc( (100% + #{$grid-gutter}) / 12 * #{$quantity-on-base} ) - @return #{$width} - -// This must be used for offset, inside columns -@function col-offset($quantity, $base: 12) - $quantity-on-base: $quantity / $base * 12 - $width: calc( (100% + #{$grid-gutter}) / 12 * #{$quantity-on-base} + #{$grid-gutter}) - @return #{$width} - -@function col-outside-container($quantity, $base: 12) - $responsive-grid-width: Min(100vw, (#{$grid-max-width})) - @return calc((#{$responsive-grid-width} + #{$grid-gutter} * 2) / #{$base} * #{$quantity} - #{$grid-gutter} * 2) - -@function container-margin-x - @return Max(#{$grid-gutter}, calc(50vw - #{$grid-max-width} / 2 + #{$grid-gutter})) - -@mixin container-margin-left - margin-left: container-margin-x() - -@mixin container-margin-right - margin-right: container-margin-x() - -@mixin stretched-link($pseudo-element: after) - &::#{$pseudo-element} - bottom: 0 - content: '' - left: 0 - position: absolute - right: 0 - top: 0 - z-index: $zindex-stretched-link - -@mixin aspect-ratio($ratio, $selector: 'iframe', $background: false) - @if $background - aspect-ratio: #{$ratio} - background: $background - #{$selector} - aspect-ratio: #{$ratio} - display: block - width: 100% - -@mixin handle-svg-fit - picture.is-svg - img - object-fit: contain - -@mixin article($background: null) - position: relative - display: flex - flex-direction: column - .media - @include handle-svg-fit - margin-bottom: $spacing1 - order: -1 - overflow: hidden - img - display: block - object-fit: cover - @if $article-media-aspect-ratio - aspect-ratio: $article-media-aspect-ratio - h2, h3, [itemprop=headline] - @include h3 - a - display: block - @include stretched-link - text-decoration: none - p + time - margin-top: $spacing0 - time - @include meta - color: $color-text-alt - display: block - -@mixin post-time-author-flex - .post-meta - display: flex - flex-wrap: wrap - .post-author p::before - content: ' • ' - - -@mixin list-section - @include list-reset - > li - border-bottom: 1px solid $color-border - padding-bottom: $spacing1 - padding-top: $spacing1 - position: relative - > .title - @include h2 - transition: color 0.55s - @include media-breakpoint-down(desktop) - @include icon(arrow-right, after, true) - bottom: $spacing0 - position: absolute - right: 0 - @include media-breakpoint-up(desktop) - @include arrow-right-hover - display: block - &::after - transform: translateX(0) - position: relative - &:hover - &::after - transform: translateX($spacing0) - a - text-decoration: none - &:hover - color: $color-accent - - @include media-breakpoint-down(desktop) - a:nth-child(2) - margin-top: calc(#{$spacing0} / 2) - a, p - display: block - @include media-breakpoint-up(desktop) - align-items: baseline - display: flex - justify-content: space-between - - -@mixin visually-hidden - clip: rect(0,0,0,0) !important - border: 0 !important - height: 1px !important - margin: -1px !important - overflow: hidden !important - padding: 0 !important - position: absolute !important - white-space: nowrap !important - width: 1px !important - -@mixin button-reset - appearance: none - background: transparent - border: none - border-radius: 0 - cursor: pointer - user-select: none - &:active, - &:focus - box-shadow: inset 0 0 0 0.25rem rgba($color-text, 0.25) - // TODO : vérifier si l'outline 0 est vraiment nécessaire - // outline: 0 - -@mixin list-reset - list-style: none - padding-left: 0 - margin-bottom: 0 - margin-top: 0 - -@mixin inset($top: 0, $right: $top, $bottom: $top, $left: $top) - inset: $top $right $bottom $left - // polyfill for inset - @supports not (inset: $top) - bottom: $bottom - left: $left - right: $right - top: $top - -@function color-contrast($color, $amount) - @if lightness($color) > 50% - $amount: $amount * -1 - @return scale-color($color, $lightness: $amount) - -@mixin button-icon($icon: false) - @include button-reset - line-height: $body-line-height - border: 1px solid $hero-color - padding: half($spacing0) $spacing1 - white-space: nowrap - @if $icon - @include icon-block($icon, after) - -@mixin text-underline - text-decoration-color: $color-border - text-decoration-line: underline - text-decoration-thickness: 1px - text-underline-offset: 3px - text-decoration-line: underline - -@mixin arrow-right-hover - position: relative - display: flex - justify-content: space-between - align-items: center - @include icon(arrow, after) - opacity: 0 - transform: translateX(-20px) - transition: 0.55s $arrow-ease-transition - position: absolute - right: 0 - &:hover - &:after - opacity: 1 - transform: translateX(0) - -@mixin top-flex - @include in-page-without-sidebar - align-items: baseline - display: flex - .block-title - width: col(4) - &:not(.hidden) + .description - margin-left: $grid-gutter - .description - margin-top: 0 - width: col(8) - -@mixin collapsed-figcaption - figcaption - @include meta - color: $color-text-alt - position: absolute - display: block - left: 0 - right: 0 - text-align: right - z-index: 10 - &::before - @include meta - content: '©' - position: absolute - right: 0 - top: 0 - background: $hero-background-color - text-align: center - padding: half($spacing0) - display: block - .credit-content - @include meta - background: $hero-background-color - display: none - padding: half($spacing0) - padding-right: $spacing1 - a - color: inherit - text-decoration-color: inherit - &:focus - .credit-content - display: block - @include media-breakpoint-up(desktop) - &:before - padding-right: 0 - @include media-breakpoint-down(desktop) - position: relative - background: $color-background - &::before - background: transparent - .credit-content - display: block - background: transparent - position: relative - - &:hover - figcaption .credit-content - display: block - -@mixin dropdown-i18n - position: relative - .dropdown-menu - margin-top: $header-nav-padding-y - padding-left: $spacing1 - padding-bottom: $spacing0 - padding-top: $spacing0 - padding-right: $spacing1 - right: 0 - li a - padding-bottom: half($spacing0) - padding-top: half($spacing0) - display: block - &.is-checked - display: flex - justify-content: space-between - align-items: center - gap: $spacing2 - text-decoration: none !important - @include icon(caret, after) - transform: rotate(-14deg) skewX(-30deg) - -// https://gist.github.com/jonathantneal/d0460e5c2d5d7f9bc5e6 -@function str-replace($string, $search, $replace: "") - $index: str-index($string, $search) - @if $index - @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); - @return $string - -@mixin font-face($name, $path, $weight: 400, $style: normal, $exts: (eot woff2 woff ttf svg)) - $src: null - - $extmods: (eot:"?", svg:"#" + str-replace($name," ","_")) - $formats: (otf: "opentype", ttf: "truetype") - - @each $ext in $exts - $extmod: if(map-has-key($extmods, $ext), $ext + map-get($extmods, $ext), $ext) - $format: if(map-has-key($formats, $ext), map-get($formats, $ext), $ext) - $src: append($src, url(quote("/assets/fonts/" + $path + "." + $extmod)) format(quote($format)), comma,) - - @font-face - font-family: quote($name) - font-style: $style - font-weight: $weight - font-display: swap - src: $src - -@mixin sidebar($side: start) - @include media-breakpoint-down(desktop) - padding: 0 half($grid-gutter-sm) - margin-bottom: $spacing3 - @include media-breakpoint-up(desktop) - @if $side == start - @include container-margin-left - left: 0 - @else - @include container-margin-right - right: 0 - margin-top: 0 - top: 0 - height: 100% - position: absolute - width: col-outside-container(4) - & > div - @include sticky($spacing1) - .toc-container - border-top: 1px solid $color-border - padding-top: $spacing1 - position: static - margin-left: 0 - -// Old browsers support - -@mixin browser-under-safari-16 - @media not all and (min-resolution:.001dpcm) - @supports (-webkit-appearance:none) and (display:flow-root) - @content \ No newline at end of file +@import utils/fonts +@import utils/colors +@import utils/grid +@import utils/icons +@import utils/links +@import utils/media +@import utils/normalize +@import utils/sidebar +@import utils/sizes +@import utils/blocks + +@import utils/shame \ No newline at end of file diff --git a/assets/sass/_theme/_variables.sass b/assets/sass/_theme/_variables.sass new file mode 100644 index 0000000000000000000000000000000000000000..1a4c90200b9dea2559ff02faf67ba37b2ebac69f --- /dev/null +++ b/assets/sass/_theme/_variables.sass @@ -0,0 +1,161 @@ +\:root + // -------------- // + // COLORS // + // ---------------// + --color-accent: #{$color-accent} + --color-text: #{$color-text} + --color-text-alt: #{$color-text-alt} + --color-selection: #{$color-selection} + --color-selection-background: #{$color-selection-background} + --color-border: #{$color-border} + --color-background-alt: #{$color-background-alt} + --color-background: #{$color-background} + + @if $has-dark-mode + @media (prefers-color-scheme: dark) + --color-accent: #{$color-dark-accent} + --color-text: #{$color-dark-text} + --color-text-alt: #{$color-dark-text-alt} + --color-border: #{$color-dark-border} + --color-background-alt: #{$color-dark-background-alt} + --color-background: #{$color-dark-background} + --color-selection: #{$color-dark-selection} + --color-selection-background: #{$color-dark-selection-background} + + // -------------- // + // TYPOGRAPHY // + // ---------------// + --h1-size: #{$h1-size} + --h1-line-height: #{$h1-line-height} + + --h2-size: #{$h2-size} + --h2-line-height: #{$h2-line-height} + + --h3-size: #{$h3-size} + --h3-line-height: #{$h3-line-height} + + --h4-size: #{$h4-size} + --h4-line-height: #{$h4-line-height} + + --h5-size: #{$h5-size} + --h5-line-height: #{$h5-line-height} + + --h6-size: #{$h6-size} + --h6-line-height: #{$h6-line-height} + + --lead-size: #{$lead-size} + --lead-line-height: #{$lead-line-height} + + --lead-sidebar-size: #{$lead-sidebar-size} + --lead-sidebar-line-height: #{$lead-sidebar-line-height} + + --lead-hero-size: #{$lead-hero-size} + --lead-hero-line-height: #{$lead-hero-line-height} + + --body-size: #{$body-size} + --body-line-height: #{$body-line-height} + + --small-size: #{$small-size} + --small-line-height: #{$small-line-height} + + --signature-size: #{$signature-size} + --signature-line-height: #{$signature-line-height} + + --meta-size: #{$meta-size} + --meta-line-height: #{$meta-line-height} + + --quote-size: #{$quote-size} + --quote-line-height: #{$quote-line-height} + + @include media-breakpoint-up(desktop) + --h1-size: #{$h1-size-desktop} + --h1-line-height: #{$h1-line-height-desktop} + + --h2-size: #{$h2-size-desktop} + --h2-line-height: #{$h2-line-height-desktop} + + --h3-size: #{$h3-size-desktop} + --h3-line-height: #{$h3-line-height-desktop} + + --h4-size: #{$h4-size-desktop} + --h4-line-height: #{$h4-line-height-desktop} + + --h5-size: #{$h5-size-desktop} + --h5-line-height: #{$h5-line-height-desktop} + + --h6-size: #{$h6-size-desktop} + --h6-line-height: #{$h6-line-height-desktop} + + --lead-size: #{$lead-size-desktop} + --lead-line-height: #{$lead-line-height-desktop} + + --lead-sidebar-size: #{$lead-sidebar-size-desktop} + --lead-sidebar-line-height: #{$lead-sidebar-line-height-desktop} + + --lead-hero-size: #{$lead-hero-size-desktop} + --lead-hero-line-height: #{$lead-hero-line-height-desktop} + + --body-size: #{$body-size-desktop} + --body-line-height: #{$body-line-height-desktop} + + --small-size: #{$small-size-desktop} + --small-line-height: #{$small-line-height-desktop} + + --signature-size: #{$signature-size-desktop} + --signature-line-height: #{$signature-line-height-desktop} + + --meta-size: #{$meta-size-desktop} + --meta-line-height: #{$meta-line-height-desktop} + + --quote-size: #{$quote-size-desktop} + --quote-line-height: #{$quote-line-height-desktop} + + // -------------- // + // BUTTONS // + // ---------------// + --btn-font-family: #{$btn-font-family} + --btn-font-size: #{$btn-font-size} + --btn-font-weight: #{$btn-font-weight} + --btn-text-transform: #{$btn-text-transform} + --btn-color: #{$btn-color} + --btn-hover-color: #{$btn-hover-color} + --btn-background: #{$btn-background} + --btn-hover-background: #{$btn-hover-background} + --btn-border: #{$btn-border} + --btn-border-radius: #{$btn-border-radius} + --btn-padding: #{$btn-padding} + --btn-min-width: #{$btn-min-width} + @include media-breakpoint-up(desktop) + --btn-font-size: #{$btn-font-size-desktop} + --btn-padding: #{$btn-padding-desktop} + --btn-border: #{$btn-border-desktop} + --btn-border-radius: #{$btn-border-radius-desktop} + --btn-min-width: #{$btn-min-width-desktop} + + // -------------- // + // GRID // + // ---------------// + + // Largeur maximum de la grille définie dans _configuration.sass + --grid-max-width: #{$grid-max-width} + + // Largeur de la grille + // Elle inclut les gouttières extérieures + // Si la largeur de l'écran est inférieure à 1980px, on prend la largeur totale. + // La grille n'est jamais plus grande que 1980px + --grid-width: Min(var(--grid-max-width), 100vw) + + // Largeur d'une colonne + // On soustrait à la largeur de la grille les 13 gouttières (les 2 extérieures et les 11 intérieures), puis on divise par 12 + --column-width: calc( (var(--grid-width) - var(--grid-gutter) * 13) / 12) + + // Taille de la gouttière + // Les largeurs des gouttières en fonction des breakpoints sont définies dans _configuration.sass + --grid-gutter: #{$grid-gutter} + --grid-gutter-negative: #{-$grid-gutter} + @include media-breakpoint-up(lg) + --grid-gutter: #{$grid-gutter-lg} + --grid-gutter-negative: #{-$grid-gutter-lg} + @include media-breakpoint-up(xxl) + --grid-gutter: #{$grid-gutter-xxl} + --grid-gutter-negative: #{-$grid-gutter-xxl} \ No newline at end of file diff --git a/assets/sass/_theme/blocks/base.sass b/assets/sass/_theme/blocks/base.sass index 0adf48cef3fa0d87d9645aeae2ab83934847f5d5..1c231475e64557e3718fc1936f1c724f770b96e2 100644 --- a/assets/sass/_theme/blocks/base.sass +++ b/assets/sass/_theme/blocks/base.sass @@ -1,23 +1,35 @@ .block - margin-top: $block-space-y - margin-bottom: $block-space-y + --block-space-y: #{$block-space-y} + margin-top: var(--block-space-y) + margin-bottom: var(--block-space-y) .block-title @include h5 .top .block-title + .description - margin-top: $spacing1 + margin-top: $spacing-3 .block-title.hidden + .description margin-top: 0 + @include in-page-without-sidebar + --block-space-y: #{$block-space-y-desktop} + @include in-page-with-sidebar + --block-space-y: #{$block-space-y-with-sidebar} .heading + --heading-margin-top: #{$heading-margin-top} + --heading-margin-bottom: #{$heading-margin-bottom} + margin-bottom: var(--heading-margin-bottom) &:not(:first-child) - margin-top: $spacing3 + margin-top: var(--heading-margin-top) + @include in-page-with-sidebar + --heading-margin-top: #{ $heading-margin-top-with-sidebar} + --heading-margin-bottom: #{$heading-margin-bottom-with-sidebar} @include in-page-without-sidebar - margin-top: $spacing4 + --heading-margin-top: #{ $heading-margin-top-desktop} + --heading-margin-bottom: #{$heading-margin-bottom-desktop} @include in-page-without-sidebar h2 - width: col(8) + width: columns(8) // Specific $backgrounded_blocks: ".block-call_to_action, .block-chapter--accent_background, .block-chapter--alt_background, .block-timeline--horizontal, .block-pages--cards" @@ -32,16 +44,10 @@ $backgrounded_blocks: ".block-call_to_action, .block-chapter--accent_background, // Heading + chapter .heading + .block-chapter - margin-top: $spacing1 + margin-top: $spacing-3 // Following chapters .block-chapter &--alt_background, &--accent_background & + & margin-top: 0 - -// Heading + block_cta + full-width -// .heading + .block-call_to_action -// margin-top: $spacing3 -// padding-top: 0 - diff --git a/assets/sass/_theme/blocks/call_to_action.sass b/assets/sass/_theme/blocks/call_to_action.sass index 2d7fab7c6992e13a1166ae233a9bb2089889cd68..aa1ec4a787fd00f9505f556b321ff7d68ff3593a 100644 --- a/assets/sass/_theme/blocks/call_to_action.sass +++ b/assets/sass/_theme/blocks/call_to_action.sass @@ -4,7 +4,7 @@ .top margin-bottom: 0 .block-title - margin-bottom: $spacing0 + margin-bottom: $spacing-2 + .description margin-top: 0 .description @@ -17,7 +17,7 @@ .description a color: inherit - text-decoration-color: $block-call-to-action-color + text-decoration-color: $block-call-to-action-color p @include h2 .actions @@ -27,27 +27,24 @@ flex-direction: column a @include meta + @extend %underline-on-hover color: $block-call-to-action-color - margin-right: $spacing1 - margin-top: $spacing1 - text-decoration-color: rgba($block-call-to-action-color, .3) + margin-right: $spacing-3 + margin-top: $spacing-3 display: inline-block - &:hover - text-decoration-color: $block-call-to-action-color + text-decoration-color: alphaColor($block-call-to-action-color, 0.3) &:first-child - @include btn - background: $block-call-to-action-button-background - color: $block-call-to-action-button-color - transition: background .3s ease, color .3s ease - &:hover, - &:focus-visible, - &:focus - background: $block-call-to-action-button-hover-background - color: $block-call-to-action-button-hover-color + --btn-background: #{$block-call-to-action-button-background} + --btn-color: #{$block-call-to-action-button-color} + --btn-hover-background: #{$block-call-to-action-button-hover-background} + --btn-hover-color: #{$block-call-to-action-button-hover-color} + --btn-border: none + --btn-min-width: #{columns(2)} + @extend .button &:last-child margin-bottom: 0 * + .actions - margin-top: calc(#{$spacing2} - #{$spacing1}) + margin-top: $spacing-3 img display: block @@ -56,13 +53,13 @@ padding-top: 0 padding-bottom: 0 .call_to_action - padding: $spacing3 0 + padding: var(--block-space-y) 0 .actions a &:last-child margin-bottom: 0 .call_to_action--with-image - padding-top: half($grid-gutter-sm) + padding-top: var(--grid-gutter) display: flex flex-direction: column > * @@ -80,7 +77,7 @@ > div // TODO : simplifier l'application d'une couleur de fond sur le CTA avec sidebar et sans sidebar background-color: var(--cta-background-color) - padding: $grid-gutter col(1, 8) + padding: columns(1) width: 100% position: relative &::after @@ -91,27 +88,28 @@ top: 0 bottom: 0 left: 100% - width: Max(#{$grid-gutter}, calc(50vw - #{half($grid-max-width)} + #{$grid-gutter})) + // Calcul de la largeur nécessaire pour remplir l'espace droit entre le container et le bord droit de la fenêtre + width: grid-external-space() &--with-image picture order: 1 - padding-left: col(1, 8) - padding-right: offset(4, 8) + padding-left: columns(1) + padding-right: offset(4) position: relative z-index: 2 img - margin-bottom: calc(-#{$grid-gutter} + -#{$spacing1}) + margin-bottom: calc(var(--grid-gutter-negative) + -#{$spacing-3}) > div - padding-top: calc(#{$grid-gutter} + #{$spacing3}) + padding-top: calc(var(--grid-gutter) * 2 + #{$spacing-3}) @include in-page-without-sidebar background-color: var(--cta-background-color) padding-top: 0 padding-bottom: 0 .block-content - padding: $spacing4 $grid-gutter - margin-left: -$grid-gutter - margin-right: -$grid-gutter + padding: $spacing-6 var(--grid-gutter) + margin-left: var(--grid-gutter-negative) + margin-right: var(--grid-gutter-negative) .call_to_action--with-image @include grid > div @@ -139,7 +137,7 @@ &:first-child margin-top: 0 a + a - margin-top: $spacing1 + margin-top: $spacing-3 &.call_to_action--with-title .actions grid-row: 2 diff --git a/assets/sass/_theme/blocks/chapter.sass b/assets/sass/_theme/blocks/chapter.sass index e5c0f3a3767e84344f5eba3195c3b20e0548bf38..ff06e83d5204c932c97aa66214845bf43f4fdce7 100644 --- a/assets/sass/_theme/blocks/chapter.sass +++ b/assets/sass/_theme/blocks/chapter.sass @@ -2,7 +2,7 @@ p:last-child margin-bottom: 0 .notes - margin-top: $spacing1 + margin-top: $spacing-3 * @include small sub, sup @@ -19,7 +19,7 @@ .text order: 2 figure - margin-bottom: $spacing1 + margin-bottom: $spacing-3 &--alt_background background: $block-chapter-layout-alt-background .block-content @@ -31,56 +31,57 @@ a @include link($block-chapter-layout-accent-color) - &--alt_background, &--accent_background + &--alt_background, + &--accent_background margin-bottom: 0 - + .block-chapter--alt_background, + .block-chapter--accent_background + + .block-chapter--alt_background, + + .block-chapter--accent_background margin-top: 0 @include media-breakpoint-down(desktop) - &--alt_background, &--accent_background - padding-top: $grid-gutter - padding-bottom: $grid-gutter - - &--with-image - &.block-chapter--alt_background, &.block-chapter--accent_background - padding-top: half($grid-gutter-sm) + &--alt_background, + &--accent_background + padding-top: var(--grid-gutter) + padding-bottom: var(--grid-gutter) @include in-page-with-sidebar figure - max-width: col(6, 8) + max-width: columns(6) &.image-portrait, &.image-square - max-width: col(4, 8) - &--alt_background, &--accent_background + max-width: columns(4) + &--alt_background, + &--accent_background background: none padding-bottom: 0 padding-top: 0 .chapter .text - padding: $grid-gutter + padding: var(--grid-gutter) figure margin-bottom: 0 figcaption - padding-left: $grid-gutter - + padding-left: var(--grid-gutter) &--alt_background .chapter background: $block-chapter-layout-alt-background &--accent_background .chapter background: $block-chapter-layout-accent-background + @include in-page-without-sidebar - &--alt_background, &--accent_background - padding-top: $grid-gutter - padding-bottom: $grid-gutter + &--alt_background, + &--accent_background + padding-top: var(--grid-gutter) + padding-bottom: var(--grid-gutter) margin-bottom: 0 .chapter flex-direction: row + justify-content: space-between .text order: 0 - width: col(7) + width: columns(7) figure - width: col(4) - margin-left: col-offset(1) + width: columns(4) margin-bottom: 0 text-align: right img diff --git a/assets/sass/_theme/blocks/contact.sass b/assets/sass/_theme/blocks/contact.sass index be14a1d894192873ea9c494d5fc8827fec3a18fc..acc9cf80aed24df47e756ce702605106a9ca9028 100644 --- a/assets/sass/_theme/blocks/contact.sass +++ b/assets/sass/_theme/blocks/contact.sass @@ -3,7 +3,7 @@ @include top-flex margin-bottom: 0 + .informations - margin-top: $spacing2 + margin-top: $spacing-4 .informations p, @@ -14,21 +14,20 @@ [itemprop="name"] @include h4 a - &:not(:hover) - text-decoration-color: transparent + @extend %underline-on-hover + ul - margin-top: $spacing2 + margin-top: $spacing-4 ul @include list-reset li display: flex flex-wrap: wrap - padding-bottom: $spacing0 + padding-bottom: $spacing-2 &:first-of-type padding-top: 0 + li - padding-top: $spacing0 - border-top: 1px solid $color-border + padding-top: $spacing-2 + border-top: 1px solid var(--color-border) @include media-breakpoint-down(desktop) justify-content: end flex-wrap: wrap @@ -47,18 +46,18 @@ time + time @include icon(arrow-right, before) display: inline-block - padding: 0 px2rem(7) 0 px2rem(3) + padding: 0 pxToRem(7) 0 pxToRem(3) @include in-page-without-sidebar .top - margin-bottom: $spacing2 + margin-bottom: $spacing-4 .informations display: flex margin-top: 0 address - width: col(4) + width: columns(4) margin-top: 0 ul margin-top: 0 - width: col(8) - margin-left: $grid-gutter \ No newline at end of file + width: columns(8) + margin-left: var(--grid-gutter) \ No newline at end of file diff --git a/assets/sass/_theme/blocks/datatable.sass b/assets/sass/_theme/blocks/datatable.sass index e3eb5c243aa22ac9c4cc5aa6daa7c52244ca8cb2..b5a8f2c9ce3ee989ca6989354ebe86ae0b4b99d5 100644 --- a/assets/sass/_theme/blocks/datatable.sass +++ b/assets/sass/_theme/blocks/datatable.sass @@ -2,8 +2,8 @@ th white-space: nowrap caption - color: $color-text-alt + color: var(--color-text-alt) @include media-breakpoint-up(desktop) .top p - width: col(8) + width: columns(8) diff --git a/assets/sass/_theme/blocks/definitions.sass b/assets/sass/_theme/blocks/definitions.sass index ff72015af4391988e8d0e72ea05d975246255ca2..766c4e4843ba388157b97a1e7613b76089e835ae 100644 --- a/assets/sass/_theme/blocks/definitions.sass +++ b/assets/sass/_theme/blocks/definitions.sass @@ -25,7 +25,7 @@ font-size: $block-definition-font-size-desktop p margin-block-start: 0 - margin-block-end: $spacing1 + margin-block-end: $spacing-3 &::after content: "" border-bottom: 1px solid $block-definition-border-color @@ -36,6 +36,6 @@ .definitions details p - padding-left: col(4) - margin-left: $grid-gutter + padding-left: columns(4) + margin-left: var(--grid-gutter) diff --git a/assets/sass/_theme/blocks/features.sass b/assets/sass/_theme/blocks/features.sass index b225b1b586cafe45a591b72154af8ab8fba7924d..375807f872ff0af02bee806ce6b499fc704d2fa8 100644 --- a/assets/sass/_theme/blocks/features.sass +++ b/assets/sass/_theme/blocks/features.sass @@ -5,9 +5,9 @@ display: flex flex-direction: column + li - margin-top: $spacing3 + margin-top: $spacing-5 .name - margin-bottom: $spacing0 + margin-bottom: $spacing-2 figure order: -1 img @@ -15,20 +15,20 @@ margin: auto figcaption @include meta - margin-top: $spacing0 + margin-top: $spacing-2 text-align: right @include in-page-with-sidebar li flex-direction: row figure - width: calc(#{col(2, 8)} + #{half($grid-gutter)}) + width: columns(2) flex-shrink: 0 - margin-right: half($grid-gutter) + margin-right: var(--grid-gutter) @include in-page-without-sidebar .top - width: col(8) + width: columns(8) ul @include list-reset @include grid(3, desktop) @@ -37,5 +37,5 @@ + li margin-top: 0 .name - margin-top: $spacing1 + margin-top: $spacing-3 diff --git a/assets/sass/_theme/blocks/files.sass b/assets/sass/_theme/blocks/files.sass index f890850fd3f325ead5e1f66abe9cdb3f12002193..de109a8ad5780983a2dac8f56b65215455876b3f 100644 --- a/assets/sass/_theme/blocks/files.sass +++ b/assets/sass/_theme/blocks/files.sass @@ -10,19 +10,19 @@ position: relative &::before align-items: center - border: 1px solid $color-border + border: 1px solid var(--color-border) display: flex flex-shrink: 0 - height: px2rem(60) + height: pxToRem(60) justify-content: center - margin-right: $spacing0 + margin-right: $spacing-2 transition: background 0.3s ease, border 0.3s ease - width: px2rem(60) + width: pxToRem(60) &:hover &::before - background-color: $color-text + background-color: var(--color-text) border-color: transparent - color: $color-background + color: var(--color-background) a @include stretched-link(before) @include small @@ -32,17 +32,17 @@ content: none !important // Remove default icon _blank figcaption @include meta - margin-top: half($spacing0) + margin-top: $spacing-1 @include media-breakpoint-down(desktop) .files li + li - margin-top: $spacing1 + margin-top: $spacing-3 @include in-page-with-sidebar .files - @include grid(2, desktop, half($grid-gutter)) + @include grid(2, desktop, $spacing-3) @include in-page-without-sidebar .files - @include grid(3, desktop, half($grid-gutter)) + @include grid(3, desktop, $spacing-3) diff --git a/assets/sass/_theme/blocks/gallery.sass b/assets/sass/_theme/blocks/gallery.sass index 609e87c3552240b2c451940e187cc179d2b39877..f75ddd42a15ed6fae94ec58b6f296d95c1cb0b66 100644 --- a/assets/sass/_theme/blocks/gallery.sass +++ b/assets/sass/_theme/blocks/gallery.sass @@ -2,15 +2,13 @@ figure display: block margin-bottom: 0 + position: relative > a, img, picture display: block > a - transition: filter .3s ease - &:hover - // if low opacity means not selected, selected needs to be darker - filter: brightness(95%) + @include stretched-link img height: auto width: 100% @@ -30,40 +28,30 @@ &--grid .gallery - align-items: baseline @include in-page-with-sidebar - @include grid(3, desktop, half($grid-gutter), half($grid-gutter)) + @include flexbox-grid(2) @include in-page-without-sidebar - @include grid(4, desktop) + @include flexbox-grid(4) @include media-breakpoint-down(desktop) - @include grid(2) - grid-gap: half($grid-gutter-sm) !important + @include flexbox-grid(2) &--with-text @include in-page-without-sidebar - @include grid(4, desktop, $spacing0) + @include flexbox-grid(4) figure - display: grid - grid-template-columns: subgrid - gap: space(3) - figcaption - &::after - content: ' ' + display: flex + flex-direction: column + gap: $spacing-2 &--carousel overflow: hidden position: relative z-index: 0 @include in-page-without-sidebar background: $block-gallery-carousel-background - padding-bottom: $grid-gutter - padding-top: $grid-gutter + padding-bottom: var(--grid-gutter) + padding-top: var(--grid-gutter) .block-gallery + &, .block-pages--cards + & margin-top: 0 - .container - .top - padding-right: half($grid-gutter-sm) - @include media-breakpoint-up(desktop) - padding-right: half($grid-gutter) .splide display: flex flex-direction: column @@ -73,7 +61,7 @@ opacity: 0.1 &__track overflow: visible - margin-right: half(-$grid-gutter-sm) + margin-right: var(--grid-gutter-negative) @include in-page-with-sidebar .splide__slide transition: opacity .3s ease @@ -82,14 +70,12 @@ opacity: 0.6 &.is-active opacity: 1 - @include media-breakpoint-up(desktop) - margin-right: half(-$grid-gutter) &__slide flex-shrink: initial &:last-child padding-right: 20% figure - margin-right: half($grid-gutter) + margin-right: $spacing-3 @include media-breakpoint-down(desktop) display: flex flex-direction: column @@ -100,18 +86,18 @@ max-height: $block-gallery-carousel-max-height width: auto height: auto - max-width: calc(100vw - #{$grid-gutter-sm} * 2) + max-width: calc(100vw - #{var(--grid-gutter)} * 2) @include media-breakpoint-up(desktop) height: $block-gallery-carousel-max-height width: auto max-width: none figcaption - margin-top: space(3) + margin-top: $spacing-2 > * + * - margin-top: space(2) + margin-top: $spacing-1 &__arrows - margin-left: px2rem(-18) + margin-left: pxToRem(-18) order: 2 @media (min-height: 800px) padding-top: space(10) @@ -120,10 +106,10 @@ &--next @include button-reset @include icon(arrow-left, before) - height: space(12) + height: $spacing-4 padding: 0 position: static - width: space(12) + width: $spacing-4 svg display: none &--next @@ -132,10 +118,10 @@ @include in-page-without-sidebar .splide figure - margin-left: $grid-gutter - margin-right: half(-$grid-gutter) + margin-left: var(--grid-gutter) + margin-right: -$spacing-3 &__slide &:first-child - margin-left: $grid-gutter + margin-left: var(--grid-gutter) &__track - margin-left: -$grid-gutter \ No newline at end of file + margin-left: var(--grid-gutter-negative) \ No newline at end of file diff --git a/assets/sass/_theme/blocks/image.sass b/assets/sass/_theme/blocks/image.sass index 926546d7722e4d1c75efd20b72747fd535d9e3ce..27cfd7b2108857d595aa3a40ebd759cd6dc16cac 100644 --- a/assets/sass/_theme/blocks/image.sass +++ b/assets/sass/_theme/blocks/image.sass @@ -4,24 +4,24 @@ height: auto max-width: 100% figcaption - margin-top: $spacing0 + margin-top: $spacing-2 p margin-bottom: 0 margin-top: 0 + .credit - margin-top: $spacing0 + margin-top: $spacing-2 .credit p @include meta picture display: block - margin-left: half(-$grid-gutter-sm) - margin-right: half(-$grid-gutter-sm) + margin-left: var(--grid-gutter-negative) + margin-right: var(--grid-gutter-negative) @include in-page-with-sidebar picture margin-left: 0 - margin-right: -$grid-gutter + margin-right: var(--grid-gutter-negative) img max-height: $block-image-max-height-with-sidebar width: auto @@ -30,7 +30,6 @@ figure img max-height: $block-image-max-height-without-sidebar - // max-height: calc(100vh - var(--header-height)) width: auto max-width: 100% &.image-portrait, &.image-square @@ -38,27 +37,26 @@ position: relative .top position: absolute - width: col(5) + width: columns(5) figure display: flex align-items: flex-end - > a - width: col(7) - margin-left: half($grid-gutter) + > a + width: columns(7) + margin-left: var(--grid-gutter) display: block order: 2 picture margin-left: 0 - margin-right: -$grid-gutter figcaption - width: calc(#{col(5)} + #{$grid-gutter} / 2) + width: columns(5) order: 1 display: block text-align: right &.image-landscape picture - margin-left: -$grid-gutter - margin-right: -$grid-gutter + margin-left: var(--grid-gutter-negative) + margin-right: var(--grid-gutter-negative) @media screen and (min-width: $grid-max-width) margin-left: 0 margin-right: 0 @@ -67,7 +65,7 @@ justify-content: space-between align-items: baseline p - max-width: col(8) + max-width: columns(8) * flex: 1 1 .credit diff --git a/assets/sass/_theme/blocks/key_figures.sass b/assets/sass/_theme/blocks/key_figures.sass index 3a9ca43047a7b401c501073be863e39701685665..64126a161eb8adc3aaecd984d939aa656b4a266c 100644 --- a/assets/sass/_theme/blocks/key_figures.sass +++ b/assets/sass/_theme/blocks/key_figures.sass @@ -11,7 +11,7 @@ &.odd-items @include grid(3, desktop) .top:not(.hidden) + ul - margin-top: $spacing2 + margin-top: $spacing-4 dl margin-bottom: 0 margin-top: 0 @@ -26,6 +26,10 @@ font-size: $block-key_figures-number-font-size font-weight: $block-key_figures-number-font-weight margin-inline-end: 0.1em + img + display: block + margin-bottom: $spacing-2 + max-width: $block-key_figures-image-max-width @include media-breakpoint-up(desktop) font-size: $block-key_figures-font-size-desktop strong @@ -46,9 +50,9 @@ margin-bottom: 0 margin-left: 0 dt + dd - margin-top: $spacing0 + margin-top: $spacing-2 @include media-breakpoint-down(desktop) li + li - margin-top: $spacing1 + margin-top: $spacing-3 diff --git a/assets/sass/_theme/blocks/organizations.sass b/assets/sass/_theme/blocks/organizations.sass index 65dec22e92c5078680cd5d1b8a3c1160c86493ad..b74eb772d95fc20e96e444e9f3f40d46d8dfdd1b 100644 --- a/assets/sass/_theme/blocks/organizations.sass +++ b/assets/sass/_theme/blocks/organizations.sass @@ -22,7 +22,7 @@ margin-bottom: 0 .organization-title @include meta - padding: half($spacing0) $spacing0 + padding: $spacing-1 $spacing-2 margin: 0 // Cancel leaflet default style a color: black @@ -38,11 +38,10 @@ @include grid(2, md) @include grid(3, lg) @include grid(4, xl) - grid-column-gap: half($grid-gutter) @include in-page-without-sidebar .top .description - max-width: col(8) + max-width: columns(8) .map - margin-left: -$grid-gutter - margin-right: -$grid-gutter + margin-left: var(--grid-gutter-negative) + margin-right: var(--grid-gutter-negative) diff --git a/assets/sass/_theme/blocks/pages.sass b/assets/sass/_theme/blocks/pages.sass index 74ec85e673490317a52fe47b3521bfc13d7811db..c9a72db899d7ac88386fe5461403da1e9ca127f1 100644 --- a/assets/sass/_theme/blocks/pages.sass +++ b/assets/sass/_theme/blocks/pages.sass @@ -10,7 +10,7 @@ .media @include handle-svg-fit order: -1 - margin-bottom: $spacing1 + margin-bottom: $spacing-3 &:empty display: none img @@ -24,11 +24,11 @@ @include stretched-link(before) text-decoration: none + p - margin-top: $spacing0 + margin-top: $spacing-2 @include media-breakpoint-up(desktop) .top - margin-bottom: $spacing2 + margin-bottom: $spacing-4 @include media-breakpoint-down(desktop) .top @@ -37,7 +37,7 @@ .description @include h2 article - margin-top: $spacing1 + margin-top: $spacing-3 @include in-page-without-sidebar .top @@ -56,16 +56,14 @@ @include hover-translate-icon(after) @include media-breakpoint-up(desktop) .grid - @include grid(2, desktop) - @include in-page-with-sidebar - grid-column-gap: half($grid-gutter) !important + @include grid(2) @include in-page-without-sidebar - @include grid(3, desktop) + @include grid(3) &--cards background-color: $block-pages-card-background - padding-bottom: $grid-gutter - padding-top: $grid-gutter + padding-bottom: var(--grid-gutter) + padding-top: var(--grid-gutter) *:not(.heading) + & margin-top: 0 .blocks &:last-of-type @@ -74,17 +72,15 @@ @include top-flex .cards @include grid(2, desktop) - @include in-page-with-sidebar - grid-gap: half($grid-gutter) !important @include in-page-without-sidebar - @include grid(3, desktop) + @include grid(3) // TODO: move this // .block-gallery + &, .block-pages--cards + & margin-top: 0 // ----------------- // .card - padding: $spacing1 + padding: $spacing-3 background-color: $block-pages-card-page-background transition: background 0.3s, color 0.3s display: flex @@ -96,19 +92,18 @@ color: $block-pages-card-page-color .media margin-bottom: 0 - margin-left: -$spacing1 - margin-right: -$spacing1 - margin-top: -$spacing1 + margin-left: -$spacing-3 + margin-right: -$spacing-3 + margin-top: -$spacing-3 img min-width: 100% .more @include arrow-right-hover @include icon-block(arrow-right, after) @include link($block-pages-card-page-color) - @include text-underline position: relative margin-top: auto - padding-top: $spacing1 + padding-top: $spacing-3 display: flex justify-content: space-between align-items: center @@ -128,37 +123,33 @@ &--list ul @include list-reset - &.title-only - li - line-height: 1 li display: block + li - margin-top: $spacing0 + margin-top: $spacing-2 > a @include icon(arrow, before, true) - padding-right: $spacing0 + padding-right: $spacing-2 @include hover-translate-icon(before, 5) - @include link - text-decoration-color: rgba(0,0,0,0) + @extend %underline-on-hover article .page-title @include h3 a @include icon(arrow, after, true) @include hover-translate-icon(after) - text-decoration-color: transparent + @extend %underline-on-hover @include media-breakpoint-down(desktop) .top - margin-bottom: $spacing0 + margin-bottom: $spacing-2 ul - margin-top: $spacing1 + margin-top: $spacing-3 @include media-breakpoint-up(desktop) ul:not(.title-only) li + li - margin-top: $grid-gutter + margin-top: var(--grid-gutter) article - gap: $grid-gutter + gap: var(--grid-gutter) flex-direction: row .media flex-shrink: 0 @@ -166,23 +157,20 @@ @include in-page-with-sidebar .block-content .top - margin-bottom: $spacing1 - // .description - // margin-bottom: $spacing2 + margin-bottom: $spacing-3 ul.title-only - @include grid(2, desktop) - grid-row-gap: $spacing0 !important - grid-column-gap: half($grid-gutter) !important + @include grid(2, desktop, 0) + display: flex li margin-top: 0 a @include meta article - gap: half($grid-gutter) + gap: var(--grid-gutter) .media - width: calc(#{col(2, 8)} + #{half($grid-gutter)}) + width: columns(2) .page-content - width: col(6, 8) + width: columns(6) @include in-page-without-sidebar .block-title @@ -194,12 +182,12 @@ @include h2 article .media - width: col(4) + width: columns(2) .page-content - width: col(8) + width: columns(4) &:not(.with-description) ul.title-only - @include grid(4, desktop, space(2)) + @include grid(4, desktop, $spacing-1) grid-column: 1 / 13 li margin-top: 0 @@ -209,8 +197,7 @@ margin-top: 0 &.with-description .block-content - @include grid(12, desktop, $spacing2) - row-gap: half($grid-gutter) + @include grid(12, desktop, $spacing-4) .top align-items: initial grid-column: 1 / 8 @@ -229,9 +216,9 @@ grid-row: 2 display: block li + li - margin-top: $spacing0 + margin-top: $spacing-2 article - margin-top: $spacing3 + margin-top: $spacing-5 &.with-images .top grid-column: 1 / 7 @@ -247,7 +234,7 @@ aspect-ratio: unset @include media-breakpoint-up(desktop) article - width: col(4, 8) + width: columns(4) &:not(:first-child) margin-top: -5% &:nth-child(even) @@ -263,24 +250,24 @@ .description @include body-text .grid - width: col(10) + width: columns(10) margin-left: auto margin-right: auto article - width: col(4, 10) + width: columns(4) &--large .top @include top-flex .page position: relative + .page - margin-top: $spacing3 + margin-top: $spacing-5 .more @include icon(arrow, after, true) @include hover-translate-icon(after) &:hover .more:after - transform: translateX(#{px2rem(10)}) - &-title a + transform: translateX(#{pxToRem(10)}) + &-title a @include stretched-link .media img @@ -288,7 +275,7 @@ @include media-breakpoint-up(desktop) .page flex-direction: row - gap: $grid-gutter + gap: var(--grid-gutter) @include in-page-with-sidebar .page @@ -309,6 +296,6 @@ @include lead margin-bottom: space(4) &-content - width: col(5) - .media - width: col(6) + width: columns(5) + .media + width: columns(6) diff --git a/assets/sass/_theme/blocks/persons.sass b/assets/sass/_theme/blocks/persons.sass index f207f5f00be30093d58fd6eb360cfdd9df247895..2956bae9e064e42634ba82d42edbdf7b25c3350f 100644 --- a/assets/sass/_theme/blocks/persons.sass +++ b/assets/sass/_theme/blocks/persons.sass @@ -1,38 +1,38 @@ @mixin person-avatar-end display: flex flex-direction: row - gap: $spacing1 + gap: $spacing-3 .avatar margin-right: 0 - width: col(4) + width: columns(2) .description - margin-top: $spacing1 + margin-top: $spacing-3 text-align: left .block-persons article .description - margin-top: $spacing1 + margin-top: $spacing-3 @include in-page-with-sidebar .persons @include grid(1, desktop) - row-gap: $spacing0 + row-gap: $spacing-2 @include media-breakpoint-up(xxl) @include grid(2) article .avatar - width: col(1.5, 4) + width: columns(1.5) .description - margin-top: $spacing0 + margin-top: $spacing-2 article flex-direction: row - gap: $spacing1 + gap: $spacing-3 @include media-breakpoint-up(md) .avatar - width: col(2, 8) + width: columns(2) @include in-page-without-sidebar .top .description - max-width: col(8) + max-width: columns(8) &.block-with-long-text .persons @include grid(2) diff --git a/assets/sass/_theme/blocks/posts.sass b/assets/sass/_theme/blocks/posts.sass index b8446feb0a92620c17d581cc84bfecc9cdb3a797..5bbc3b2c3beeec4221305b7f43a9ddd7ab037c73 100644 --- a/assets/sass/_theme/blocks/posts.sass +++ b/assets/sass/_theme/blocks/posts.sass @@ -1,6 +1,6 @@ .block-posts .top - margin-bottom: $spacing2 + margin-bottom: $spacing-4 a @include icon(arrow-right, after, true) @include hover-translate-icon @@ -9,86 +9,88 @@ @include grid(1) @include grid($block-posts-grid-columns, desktop) article + @include author-and-time-side-to-side [itemprop=headline] a @include stretched-link text-decoration: none .post-content > * + * - margin-top: $spacing0 + margin-top: $spacing-2 .media margin-top: 0 - @include post-time-author-flex &--grid @include media-breakpoint-down(desktop) article + article - margin-top: $spacing3 + margin-top: $spacing-5 @include in-page-with-sidebar .grid - @include grid(2, desktop, $grid-gutter, half($grid-gutter)) + @include grid(2) @include in-page-without-sidebar .grid @include grid($block-posts-grid-columns) .media picture img width: 100% &--large - @include media-breakpoint-up(sm) - article - .post-meta - display: inline .post .more @include icon(arrow-right, after, true) - .post-author + + // Masquer le point entre l'auteur et la date (mixin author-and-time-side-to-side) + .post-author p::before display: none - @include media-breakpoint-down(desktop) + + // Permet d'aligner correctement les différents line-height des différents composants du post meta + .post-meta + display: block + line-height: 0 // Hack pour que les enfants de post-meta soient correctement + .post-categories * + display: inline + // Désactiver le ratio forcé de la configuration $article-media-aspect-ratio + .media + &, img + aspect-ratio: auto + @include media-breakpoint-down(desktop) + .post + .post - margin-top: $spacing2 + margin-top: $spacing-4 &-meta - .post-author - display: inline-flex + .post-author + display: inline + p + display: inline &::after - content: '—' - margin: 0 half($spacing0) - .post-categories - display: flex + content: ' — ' p[itemprop="articleBody"] margin-top: 0 @include media-breakpoint-up(desktop) .large .post flex-direction: row - gap: half($grid-gutter) + gap: var(--grid-gutter) + .post - margin-top: $spacing2 - p[itemprop="articleBody"] - margin-top: $spacing1 - &-title + margin-top: $spacing-4 + .post-title @include h2 + p[itemprop="articleBody"] + margin-top: $spacing-3 .post-meta > * display: inline - &:not(:first-child)::before - content: '—' - margin-right: half($spacing0) - > time - display: inline-block - margin-top: -2px + &:not(:last-child)::after + content: ' — ' .post-author p display: inline - li - margin-right: $spacing0 .post-categories li - display: inline-flex - margin-right: $spacing0 - padding-bottom: 3px - &:not(:last-child)::after + a + display: inline + &:not(:last-child) a::after content: ',' - + @include in-page-with-sidebar .large .post @@ -96,24 +98,26 @@ flex-direction: column gap: unset p[itemprop="articleBody"] - margin-top: $spacing0 + margin-top: $spacing-2 @include media-breakpoint-up(xl) .media, .post-content - width: calc(#{col(4, 8)} + #{half($grid-gutter)}) + width: columns(4) @include in-page-without-sidebar .large .post - gap: $grid-gutter + gap: var(--grid-gutter) .media - width: col(6) + width: columns(6) .post-content - width: col(5) + width: columns(5) + .post-title + @include lead p[itemprop="articleBody"] - margin-top: calc(#{$spacing1} + #{$spacing0}) + margin-top: calc(#{$spacing-3} + #{$spacing-2}) &--list article - border-bottom: 1px solid $color-border + border-bottom: 1px solid var(--color-border) .media background: none margin: 0 @@ -123,19 +127,19 @@ @include media-breakpoint-down(desktop) article position: relative - padding-bottom: half($spacing3) + padding-bottom: $spacing-3 + article - margin-top: half($spacing3) + margin-top: $spacing-3 .post-content display: flex flex-direction: column - padding-top: $spacing0 + padding-top: $spacing-2 [itemprop=headline] margin-bottom: 0 .post-categories margin-bottom: 0 p[itemprop="articleBody"] - margin-top: half($spacing0) + margin-top: $spacing-1 .media order: -1 max-width: 33% @@ -147,27 +151,27 @@ @include in-page-with-sidebar article - padding-bottom: $spacing1 + padding-bottom: $spacing-3 + article - margin-top: $spacing1 + margin-top: $spacing-3 .media - width: calc(#{col(2, 8)} + #{half($grid-gutter)}) + width: columns(2) .post-content - width: col(6, 8) - margin-left: half($grid-gutter) + width: columns(6) + margin-left: var(--grid-gutter) @include in-page-without-sidebar article - border-bottom: 1px solid $color-border - gap: $grid-gutter - padding-bottom: $spacing3 + border-bottom: 1px solid var(--color-border) + gap: var(--grid-gutter) + padding-bottom: $spacing-5 position: relative .media - width: col(3) + width: columns(3) .post-content - width: col(6) + width: columns(6) + article - margin-top: $spacing3 + margin-top: $spacing-5 .post-meta position: absolute right: 0 @@ -177,27 +181,27 @@ &--highlight .highlight-post [itemprop=headline] - margin-bottom: $spacing0 + margin-bottom: $spacing-2 .media - margin-bottom: $spacing0 + margin-bottom: $spacing-2 background: none .list - margin-top: half($spacing3) - border-top: 1px solid $color-border + margin-top: $spacing-3 + border-top: 1px solid var(--color-border) article - border-bottom: 1px solid $color-border + border-bottom: 1px solid var(--color-border) position: relative - padding-bottom: half($spacing3) - margin-top: half($spacing3) + padding-bottom: $spacing-3 + margin-top: $spacing-3 article > * + * - margin-top: $spacing0 + margin-top: $spacing-2 .media margin-top: 0 @include media-breakpoint-down(desktop) .list - border-top: 1px solid $color-border + border-top: 1px solid var(--color-border) p[itemprop="articleBody"] margin-top: 0 @@ -215,11 +219,11 @@ .post flex-direction: row .media - width: calc(#{col(3, 8)} + #{half($grid-gutter)}) + width: columns(3) margin-bottom: 0 .post-content - width: col(5, 8) - margin-left: half($grid-gutter) + width: columns(5) + margin-left: var(--grid-gutter) .list article @include grid(8, desktop, 0, 0) @@ -269,29 +273,81 @@ @include media-breakpoint-down(desktop) .post .post-meta - margin-top: half($spacing0) + margin-top: $spacing-1 .media - margin-bottom: $spacing0 + margin-bottom: $spacing-2 + .post - margin-top: $spacing3 + margin-top: $spacing-5 @include in-page-with-sidebar .post - width: col(4,8) + width: columns(4) @include in-page-without-sidebar - width: col(10) + width: columns(10) margin-left: auto margin-right: auto .post - width: col(4, 10) + width: columns(4) + &--carousel + @include draggable-block + .container + padding-right: 0 + .carousel + padding-bottom: $spacing-3 + &:hover + cursor: grab + &.is-grabbing + cursor: grabbing + li + list-style: none + .posts + display: flex + gap: unset + .post + margin: 0 calc(var(--grid-gutter) / 2) + .actions-arrows + justify-content: space-between + @include media-breakpoint-down(desktop) + .carousel + gap: half(var(--grid-gutter)) + .post + width: columns(10) + .grab-item:last-of-type + margin-right: half(var(--grid-gutter)) + .actions-arrows + margin-right: var(--grid-gutter) + @include media-breakpoint-up(desktop) + .next + margin-right: pxToRem(-27) // Marge négative pour aligner correctement le picto à la colonne + @include in-page-with-sidebar + .post + width: columns(3) + [itemprop="headline"] + @include h4 + .carousel + .actions-arrows + width: offset(6) + @include in-page-without-sidebar + .block-content + display: flex + gap: var(--grid-gutter) + .top + width: columns(3) + .carousel + width: columns(9) + .post + width: columns(4) + .carousel + .actions-arrows + width: offset(8) // Move this part to blocks/categories when categories block is ready .block-posts .categories--grid li - background: $color-background-alt - padding: $spacing1 + background: var(--color-background-alt) + padding: $spacing-3 position: relative a @include h3 diff --git a/assets/sass/_theme/blocks/programs.sass b/assets/sass/_theme/blocks/programs.sass index 8cb79f4be4295b5d460406de2a024f34372cd851..482b7701222ba007293c7819e4d8cfa8e783b7a5 100644 --- a/assets/sass/_theme/blocks/programs.sass +++ b/assets/sass/_theme/blocks/programs.sass @@ -1,19 +1,54 @@ .block-programs - .programs - li - display: block - a - @include h3 - @include arrow-right-hover - display: flex - justify-content: space-between - transition: color 0.55s - padding-right: $spacing2 - &:hover - color: $color-accent - @include in-page-without-sidebar + &--list .programs li + display: block a - @include h2 \ No newline at end of file + @include h3 + @include arrow-right-hover + display: flex + justify-content: space-between + transition: color 0.55s + padding-right: $spacing-4 + &:hover + color: var(--color-accent) + @include in-page-without-sidebar + .programs li a + @include h2 + + &--grid + .programs-grid + align-items: start + @include grid(1, false, $spacing-5) + @include grid(2, xl) + article + display: flex + flex-direction: column + .program-content + order: 2 + position: relative + &:hover + .more:after + transform: translateX($spacing-1) + [itemprop='name'] + margin-bottom: $spacing-1 + a + @include stretched-link + text-decoration: none + .more + @include icon(arrow, after, true) + @include hover-translate-icon + .media + order: 1 + margin-bottom: $spacing-3 + img + aspect-ratio: $block-programs-aspect-ratio + display: block + object-fit: cover + + + @include in-page-without-sidebar + @include grid(2) + @include grid(3, xl) + diff --git a/assets/sass/_theme/blocks/projects.sass b/assets/sass/_theme/blocks/projects.sass new file mode 100644 index 0000000000000000000000000000000000000000..0b74eec0c4b8352bcdb41bb5518a8ee0aab45a77 --- /dev/null +++ b/assets/sass/_theme/blocks/projects.sass @@ -0,0 +1,3 @@ +.block-projects + .grid + @include grid(2, md) \ No newline at end of file diff --git a/assets/sass/_theme/blocks/sitemap.sass b/assets/sass/_theme/blocks/sitemap.sass index bb45be78dfabbd6cc8eceefc2124610dcf8d940d..fb8ea0b26612c1164fbb0c37d997a7c166c23c3f 100644 --- a/assets/sass/_theme/blocks/sitemap.sass +++ b/assets/sass/_theme/blocks/sitemap.sass @@ -3,6 +3,6 @@ a text-decoration: none ul + h3 - margin-top: $spacing3 + margin-top: $spacing-5 &:first-of-type padding-top: 0 \ No newline at end of file diff --git a/assets/sass/_theme/blocks/summary.sass b/assets/sass/_theme/blocks/summary.sass index 8d40c67a5e00b4232e5e621787161712d3fed037..93be875c8e2a3967fc2590e713f69ee5bd2f4aae 100644 --- a/assets/sass/_theme/blocks/summary.sass +++ b/assets/sass/_theme/blocks/summary.sass @@ -6,5 +6,4 @@ padding-top: 0 @include in-page-without-sidebar - padding-top: 0 - margin-top: $block-space-y \ No newline at end of file + padding-top: 0 \ No newline at end of file diff --git a/assets/sass/_theme/blocks/testimonials.sass b/assets/sass/_theme/blocks/testimonials.sass index 338da01140524b2eae8277d0e7fa6c5559f939cf..693ef54e5e15cda8b16683069c051a4fa2fc16e3 100644 --- a/assets/sass/_theme/blocks/testimonials.sass +++ b/assets/sass/_theme/blocks/testimonials.sass @@ -8,7 +8,7 @@ font-style: $block-testimonials-style color: $block-testimonials-color @include media-breakpoint-up(desktop) - font-size: px2rem(30) // TODO : on peut peut-être la sortir avec du RFS ? + font-size: pxToRem(30) // TODO : on peut peut-être la sortir avec du RFS ? @include media-breakpoint-up(xl) font-size: $block-testimonials-xl-font-size line-height: $block-testimonials-xl-line-height @@ -23,17 +23,15 @@ figcaption align-items: center display: flex - margin-top: $spacing1 + margin-top: $spacing-3 span display: block .avatar flex-shrink: 0 - width: calc(#{col(1, 8)} + #{$grid-gutter} / 2) - min-width: px2rem(80) - margin-right: $spacing0 + width: columns(1) + min-width: pxToRem(80) + margin-right: $spacing-2 margin-bottom: 0 - @include media-breakpoint-up(desktop) - margin-right: calc(#{$grid-gutter} / 2) .splide .splide__slider @@ -53,9 +51,9 @@ font-size: 0 line-height: 1 span - color: $color-accent + color: var(--color-accent) &::before - font-size: 42px + font-size: pxToRem(42) .splide__pagination .is-active i width: 100% @@ -97,27 +95,17 @@ margin-right: offset(1) figure padding-right: offset(3) - // TODO: explain this, add min height equal with 2 cols width to avoid overflow on square picture - min-height: calc(#{col-outside-container(2)} + #{half($grid-gutter)}) + min-height: columns(2) &.with-picture padding-right: offset(1) padding-left: offset(3) position: relative figcaption display: block - margin-top: $spacing0 + margin-top: $spacing-2 .avatar position: absolute - left: col(1) + left: columns(1) top: 0 - margin-left: $grid-gutter - width: col(2) - - // TODO : en discuter en créa - // figure - // display: flex - // figcaption - // order: -1 - // display: block - // .avatar - // margin-bottom: $spacing1 \ No newline at end of file + margin-left: var(--grid-gutter) + width: columns(2) diff --git a/assets/sass/_theme/blocks/timeline.sass b/assets/sass/_theme/blocks/timeline.sass index 0c527962608f6bc0773634cca4986fda06e248cd..cb1be7fde5adc3a16af27eeae3d81ab2de5a9804 100644 --- a/assets/sass/_theme/blocks/timeline.sass +++ b/assets/sass/_theme/blocks/timeline.sass @@ -5,22 +5,22 @@ .timeline-event position: relative &:not(:last-child) - padding-bottom: $spacing2 + padding-bottom: $spacing-4 &::before - background: $color-text + background: var(--color-text) border-radius: 50% content: "" height: 9px - left: half(-$grid-gutter) + left: -$spacing-3 margin-top: 0.5em position: absolute width: 9px margin-left: -4px &::after - background: $color-text + background: var(--color-text) bottom: -0.5em content: "" - left: half(-$grid-gutter) + left: -$spacing-3 position: absolute top: 0.5em width: 1px @@ -31,11 +31,11 @@ .title @include h4 + p - margin-top: $spacing0 + margin-top: $spacing-2 @include media-breakpoint-down(desktop) .timeline-event - padding-left: half($grid-gutter-sm) + padding-left: $spacing-3 &::after, &::before left: 0 @@ -45,97 +45,57 @@ .timeline-event display: flex &::before, &::after - left: col(3) - margin-left: half($grid-gutter) + left: columns(3) + margin-left: calc(var(--grid-gutter) / 2) &::before transform: translateX(-4px) .title - width: col(3) + width: columns(3) text-align: right + p margin-top: 0 p - padding-left: $grid-gutter - width: col(7) + padding-left: var(--grid-gutter) + width: columns(7) &:first-child - margin-left: col(3) + margin-left: columns(3) &--horizontal + @include draggable-block --min-title-height: 0px background: $block-timeline-horizontal-background color: $block-timeline-horizontal-color - overflow: hidden - padding-bottom: $grid-gutter - padding-top: $grid-gutter + padding-bottom: var(--block-space-y) + padding-top: var(--block-space-y) &::before display: none - .timeline - &:hover - cursor: grab - &.is-grabbing - cursor: grabbing - - .timeline-arrows - display: flex - padding-left: half($grid-gutter) - > button - @include button-reset - background: none - border: none - color: $block-timeline-horizontal-color - cursor: pointer - &:first-child - @include icon-block(arrow-previous, before) - margin-left: $icon-arrow-previous-margin-left - &:last-child - @include icon-block(arrow-next, before) - &:disabled - cursor: default - opacity: 0.3 - .timeline-events - margin-left: half(-$grid-gutter) - margin-right: half(-$grid-gutter) - // TODO : fixer le px gap en desktop entre chaque event - ol - display: flex - flex-flow: row nowrap - list-style: none - padding-left: 0 - margin-top: $spacing0 - transition: margin 0.4s ease-in-out - width: 100% .timeline-event - flex: none - padding: 0 half($grid-gutter) - scroll-snap-align: start - transition: 0.3s opacity - width: 50% + padding: 0 calc(var(--grid-gutter) / 2) + width: columns(4) .title display: block min-height: var(--min-title-height) - padding-bottom: $spacing1 + padding-bottom: $spacing-3 @include signature .description @include small .line background: $block-timeline-horizontal-color height: 1px - margin-bottom: $spacing1 + margin-bottom: $spacing-3 opacity: 1 overflow: visible - width: calc(100% + #{half($grid-gutter)}) + width: calc(100% + var(--grid-gutter) / 2) &::before background: $block-timeline-horizontal-color border-radius: 50% content: "" display: block height: 9px + margin-left: -4px position: relative top: -4px width: 9px - - &.is-passed - opacity: 0.15 &:last-child .line background: transparent @@ -143,20 +103,21 @@ @include media-breakpoint-up(desktop) .timeline-event .line - width: calc(100% + #{$grid-gutter}) + width: calc(100% + var(--grid-gutter)) @include media-breakpoint-down(desktop) .timeline-events position: relative - .timeline-arrows + .actions-arrows left: 0 position: absolute - top: calc(#{$spacing2/2} + var(--min-title-height)) + top: calc(#{$spacing-2} + var(--min-title-height)) .timeline-event + margin-right: 0 padding-right: 0 width: 75% .line - margin-bottom: calc(#{$spacing2} + var(--min-title-height)) + margin-bottom: $spacing-5 @include in-page-without-sidebar @include media-breakpoint-up(xxl) diff --git a/assets/sass/_theme/blocks/video.sass b/assets/sass/_theme/blocks/video.sass index c946610acb2e3829ce1d81b3781c6e69e04a2d15..6ef2f0de51ee3616d0e5cfe722c7701dc43aa4fe 100644 --- a/assets/sass/_theme/blocks/video.sass +++ b/assets/sass/_theme/blocks/video.sass @@ -36,43 +36,42 @@ border: 1px solid white border-radius: 100% color: white - height: $spacing4 - padding: half($spacing0) + height: $spacing-6 + padding: $spacing-1 transition: background-color .3s ease - width: $spacing4 + width: $spacing-6 z-index: 3 &::before - font-size: px2rem(100) + font-size: pxToRem(100) transition: color .3s ease vertical-align: middle - padding-left: px2rem(5) + padding-left: pxToRem(5) &:hover background-color: white &::before color: black @include media-breakpoint-down(desktop) - height: $spacing3 - width: $spacing3 + height: $spacing-5 + width: $spacing-5 &::before - font-size: px2rem(40) - padding-left: px2rem(3) + font-size: pxToRem(40) + padding-left: pxToRem(3) iframe background: black + p - margin-top: $spacing0 + margin-top: $spacing-2 @include media-breakpoint-down(desktop) .video - margin-left: half(-$grid-gutter-sm) - margin-right: half(-$grid-gutter-sm) + margin-left: var(--grid-gutter-negative) + margin-right: var(--grid-gutter-negative) @include in-page-without-sidebar background: $block-video-background - margin-top: 0 .block-content @include grid(12, false, 0) padding-top: $block-space-y - padding-bottom: $spacing2 + padding-bottom: $spacing-4 .top grid-column: 1 / -1 .video diff --git a/assets/sass/_theme/dependencies/glightbox.sass b/assets/sass/_theme/dependencies/glightbox.sass index e2a881893bf17c229734470ea383b85321515402..a09d705b9162359cb199cc6ae1cdc79be845ee7b 100644 --- a/assets/sass/_theme/dependencies/glightbox.sass +++ b/assets/sass/_theme/dependencies/glightbox.sass @@ -6,7 +6,7 @@ &-media box-shadow: none img - padding: $spacing0 space(10) space(10) + padding: $spacing-2 space(10) space(10) &-description background-color: transparent &-title, @@ -34,7 +34,7 @@ @include icon(arrow-left) left: 0 .gdesc-inner - padding: 0 $spacing0 space(2) + padding: 0 $spacing-2 $spacing-1 text-align: center .gslide-desc @include meta @@ -56,11 +56,11 @@ bottom: 0 @include media-breakpoint-up(desktop) .gdesc-inner - padding-bottom: $spacing0 + padding-bottom: $spacing-2 .gslide &-media img - padding: $spacing0 space(10) + padding: $spacing-2 space(10) a.glightbox display: block diff --git a/assets/sass/_theme/dependencies/splide.sass b/assets/sass/_theme/dependencies/splide.sass index fce97da6a5c7e83d97a282e10b6a66caec7d5298..bc7396131441fbb13bc9730ffb3d883dfcd8fced 100644 --- a/assets/sass/_theme/dependencies/splide.sass +++ b/assets/sass/_theme/dependencies/splide.sass @@ -25,7 +25,7 @@ padding: 0 width: 48px &::before - background-color: rgba($link-color, 0.3) + background-color: alphaColor($link-color, 0.3) border-radius: 50% content: "" display: block @@ -35,7 +35,7 @@ width: 10px &:hover &::before - background-color: rgba($link-color, 0.6) + background-color: alphaColor($link-color, 0.6) &.is-active &::before background-color: $link-color diff --git a/assets/sass/_theme/design-system/a11y.sass b/assets/sass/_theme/design-system/a11y.sass index 9fbce2042a73076d5f2a81bd005b4de4fb9546e5..0eb7459a5d5742ef6b2e3abdd0b8c828f7577f97 100644 --- a/assets/sass/_theme/design-system/a11y.sass +++ b/assets/sass/_theme/design-system/a11y.sass @@ -1,5 +1,5 @@ .nav-accessibility - padding: $spacing1 + padding: $spacing-3 position: absolute transform: translateY(-300%) z-index: $zindex-nav-accessibility @@ -9,7 +9,7 @@ @include list-reset li display: inline-block - margin-right: px2rem(5) + margin-right: pxToRem(5) &:focus-within background: white transform: translateY(0) diff --git a/assets/sass/_theme/design-system/backlinks.sass b/assets/sass/_theme/design-system/backlinks.sass index c411a8d17f9822983dd631ee4d4738b33c098a27..9479aa5fd703e84c6d3639b052be780ed6b6ebc5 100644 --- a/assets/sass/_theme/design-system/backlinks.sass +++ b/assets/sass/_theme/design-system/backlinks.sass @@ -1,7 +1,7 @@ .organizations__page, .persons__page .backlinks > .block, > * - margin-top: $spacing4 + margin-top: $spacing-6 .block-pages .top display: block diff --git a/assets/sass/_theme/design-system/breadcrumb.sass b/assets/sass/_theme/design-system/breadcrumb.sass index 8c5a32ea02654738b296ab7fd3ab8013e2d3d74c..f5775c0fdd90a37dd0572966fd10e55bfe5df411 100644 --- a/assets/sass/_theme/design-system/breadcrumb.sass +++ b/assets/sass/_theme/design-system/breadcrumb.sass @@ -4,7 +4,7 @@ flex-wrap: nowrap overflow: auto display: flex - height: $spacing3 + height: $spacing-5 align-items: center li flex-shrink: 0 @@ -13,14 +13,19 @@ @include meta a color: $breadcrumb-color - text-decoration-color: rgba($breadcrumb-color, 0) line-height: 1 - &:hover - text-decoration-color: rgba($breadcrumb-color, 1) + @extend %underline-on-hover &.active color: $breadcrumb-color-active &:not(:first-child) - padding-left: $spacing0 + padding-left: $spacing-2 @include icon($breadcrumb-icon) - padding-right: $spacing0 + padding-right: $spacing-2 color: $breadcrumb-icon-color + +.breadcrumb-nav + @include media-breakpoint-down(desktop) + margin-left: var(--grid-gutter-negative) + margin-right: var(--grid-gutter-negative) + > ol + padding: 0 var(--grid-gutter) \ No newline at end of file diff --git a/assets/sass/_theme/design-system/button.sass b/assets/sass/_theme/design-system/button.sass index 60adbd146ac638d4dc53465255c6a469611d198c..fffdd2dbb288563a23417ef62283ca352feb4b52 100644 --- a/assets/sass/_theme/design-system/button.sass +++ b/assets/sass/_theme/design-system/button.sass @@ -1,30 +1,103 @@ +.button, .btn + @include button-reset + font-family: var(--btn-font-family) + font-size: var(--btn-font-size) + font-weight: var(--btn-font-weight) + text-transform: var(--btn-text-transform) + text-decoration: none + line-height: $body-line-height + color: var(--btn-color) + background: var(--btn-background) + border: var(--btn-border) + border-radius: var(--btn-border-radius) + padding: var(--btn-padding) + min-width: var(--btn-min-width) + text-align: center + display: inline-block + transition: background .3s ease, color .3s ease + &:hover, &:focus, &:focus-visible + color: var(--btn-hover-color) + background: var(--btn-hover-background) + +.button-accent + @extend .button + --btn-color: #{$color-background} + --btn-background: #{$color-accent} + --btn-hover-color: #{$color-background} + --btn-hover-background: #{alphaColor($color-accent, 0.85)} + +.button-alt + @extend .button + --btn-color: #{$color-background} + --btn-background: #{$color-text-alt} + --btn-hover-color: #{$color-background} + --btn-hover-background: #{$color-text} + .squared-button @include meta @include button-reset align-items: center + color: var(--color-text) cursor: pointer display: flex padding: 0 - @include media-breakpoint-up(desktop) - width: col(2,1) - &:first-child - margin-bottom: $spacing0 + text-decoration: none &::before - background-color: white - border: 1px solid $color-border - margin-right: $spacing0 - padding: half($spacing0) + background-color: var(--color-background) + border: 1px solid var(--color-border) + margin-right: $spacing-2 + padding: $spacing-1 transition: background 0.3s ease, border 0.3s ease @include media-breakpoint-up(desktop) - margin-right: $spacing1 + margin-right: $spacing-3 &:hover text-decoration: none &::before - background-color: $color-text + background-color: var(--color-text) border-color: transparent - color: $color-background - text-decoration: none -button.squared-button - @include icon-block(eye, before) -a.squared-button - @include icon-block(download, before) \ No newline at end of file + color: var(--color-background) + +@mixin link-icon($icon: false) + @include button-reset + line-height: $body-line-height + white-space: nowrap + min-width: fit-content + @if $icon + @include icon-block($icon, after) + +@mixin button-icon($icon: false) + white-space: nowrap + display: inline-flex + align-items: center + justify-content: space-between + gap: $spacing-1 + @if $icon + @include icon($icon, after) + +a.btn[target="_blank"] + @include button-icon(link-blank-raw) + +.dropdown-share + position: relative + .dropdown-menu + background: var(--btn-hover-background) + border: var(--btn-border) + border-radius: var(--btn-border-radius) + bottom: 0 + padding: 0 + position: absolute + top: 0 + width: 100% + .share + display: flex + align-items: center + height: 100% + li + margin: 0 + flex: 1 1 + text-align: center + a + display: block + color: var(--btn-hover-color) + &:hover + color: var(--color-accent) diff --git a/assets/sass/_theme/design-system/contacts.sass b/assets/sass/_theme/design-system/contacts.sass index 003b3cdb7cdc83d2543db12bb3d471afbb558956..d667181c1d1dace07a59de2c0e519492b6918c50 100644 --- a/assets/sass/_theme/design-system/contacts.sass +++ b/assets/sass/_theme/design-system/contacts.sass @@ -1,12 +1,12 @@ .contacts-details - margin-top: $spacing3 + margin-top: $spacing-5 ul @include list-reset padding-left: 0 li list-style-type: none + li - margin-top: $spacing1 + margin-top: $spacing-3 address @extend .p > span @@ -15,7 +15,7 @@ @include media-breakpoint-down(md) width: auto ul + ul - margin-top: $spacing1 + margin-top: $spacing-3 li align-items: baseline justify-content: space-between @@ -23,7 +23,7 @@ // text-align: right > span flex-shrink: 0 - margin-right: $spacing1 + margin-right: $spacing-3 text-align: left address text-align: right diff --git a/assets/sass/_theme/design-system/footer.sass b/assets/sass/_theme/design-system/footer.sass index 15836bae5b05bca34395f543eb3dc3b7d11712b3..f0870a8a1db94df86db86b976b4d8d0c80ab2ec6 100644 --- a/assets/sass/_theme/design-system/footer.sass +++ b/assets/sass/_theme/design-system/footer.sass @@ -1,38 +1,39 @@ footer#document-footer background: $footer-background-color color: $footer-color - padding-bottom: $spacing3 - padding-top: $spacing3 + padding-bottom: $spacing-5 + padding-top: $spacing-5 position: relative @include media-breakpoint-down(desktop) z-index: $zindex-footer a - @include link($footer-color) + color: $footer-color + @extend %underline-on-hover .logo + @extend %logo img height: $footer-logo-height max-width: 100% - width: auto @include media-breakpoint-up(desktop) height: $footer-logo-height-desktop ul @include list-reset - li - + li - margin-top: $spacing0 - a - @include link($footer-color) - text-decoration-color: transparent + li + li + margin-top: $spacing-2 .footer &-site @include small + * + * + margin-top: $spacing-2 &-social, &-legals, &-credit @include meta &-credit display: block - margin-top: $spacing0 + margin-top: $spacing-2 + a + text-decoration-color: alphaColor(currentColor, 0.3) &-search - padding-top: $spacing0 !important + padding-top: $spacing-2 !important &-i18n @include dropdown-i18n button @@ -51,40 +52,53 @@ footer#document-footer box-shadow: none &[aria-expanded="true"] background: $dropdown-i18n-background-color - justify-content: space-between color: $dropdown-i18n-color width: 100% + @include media-breakpoint-up(desktop) + justify-content: space-between + .dropdown-menu animation-duration: unset &::after transform: rotate(-180deg) &::before - margin-right: $spacing0 + margin-right: $spacing-2 &::after - margin-left: $spacing0 - button[aria-expanded="true"], - .dropdown-menu - outline: px2rem(10) solid $dropdown-i18n-background-color - min-width: $spacing4 + margin-left: $spacing-2 + button[aria-expanded="true"] + min-width: $spacing-6 + outline: $spacing-2 solid $dropdown-i18n-background-color .dropdown-menu @include meta background: $dropdown-i18n-background-color + margin-left: -$spacing-2 + margin-right: -$spacing-2 + margin-top: $spacing-2 a color: $dropdown-i18n-color + padding: $spacing-2 + ul + li + li + margin-top: 0 @include media-breakpoint-up(desktop) left: 0 - margin-top: px2rem(17) max-height: calc(100vh - var(--header-height)) padding: 0 position: absolute width: fit-content + min-width: calc(#{pxToRem(150)} + #{$spacing-2} * 2) + a + padding-top: 0 a:focus-visible outline-offset: -1px + @include media-breakpoint-down(desktop) + position: relative + li + border-top: 1px solid $color-border @if $footer-icons-enabled &-social .nav-social + .site-links - margin-top: $spacing1 + margin-top: $spacing-3 &.site-links li align-items: center display: flex @@ -119,13 +133,13 @@ footer#document-footer &::after font-size: $footer-icons-size @include media-breakpoint-up(desktop) - margin-right: half(-$spacing0) - padding-left: $spacing0 + margin-right: -0.2em + padding-left: $spacing-2 @include media-breakpoint-down(desktop) width: fit-content flex-direction: row-reverse &::after - margin-right: $spacing0 + margin-right: $spacing-2 transform: translateX(-25%) @if $footer-text-hidden &-social.site-links li @@ -135,16 +149,16 @@ footer#document-footer .container + .container, > * + * - margin-top: $spacing3 + margin-top: $spacing-5 @include media-breakpoint-up(desktop) .container display: flex justify-content: space-between - padding-bottom: $spacing3 + padding-bottom: $spacing-5 + .container align-items: flex-end - padding-top: $spacing3 + padding-top: $spacing-5 padding-bottom: 0 .footer &-site, &-social diff --git a/assets/sass/_theme/design-system/form.sass b/assets/sass/_theme/design-system/form.sass index 9c25792eb4bb904d834fc7bebd62f701bc9ad184..cdf6dd84b58b4bf619ad0d1a7761485081729d2a 100644 --- a/assets/sass/_theme/design-system/form.sass +++ b/assets/sass/_theme/design-system/form.sass @@ -2,26 +2,24 @@ form fieldset border: none padding: 0 - margin-bottom: $spacing1 + margin-bottom: $spacing-3 label @include meta .control--radio @include body-text + label - margin-left: half($spacing0) + margin-left: $spacing-1 @include body-text .radio + .radio - margin-left: $spacing0 + margin-left: $spacing-2 input[type="text"], input[type="search"], input[type="email"], input[type="tel"], input[type="password"] @include body-text border: 1px solid rgba(0, 0, 0, 0.3) border-radius: $form-input-border-radius - padding: half($spacing0) + padding: $spacing-1 input[type="submit"], button - @include button-reset - @include btn - @include meta - background: $form-btn-background-color - color: $form-btn-color + --btn-background: $form-btn-background-color + --btn-color: $form-btn-color + @extend .button label + input - margin-bottom: $spacing3 \ No newline at end of file + margin-bottom: $spacing-5 \ No newline at end of file diff --git a/assets/sass/_theme/design-system/header.sass b/assets/sass/_theme/design-system/header.sass index 38828d76b352ccdd138c253a70be269979aacda6..911a376a019a0a1711e7a35716345d6ac3269476 100644 --- a/assets/sass/_theme/design-system/header.sass +++ b/assets/sass/_theme/design-system/header.sass @@ -1,6 +1,6 @@ header#document-header background: $header-background - border-bottom: $header-border-bottom-width solid $color-border + border-bottom: $header-border-bottom-width solid var(--color-border) color: $header-color position: fixed left: 0 @@ -29,8 +29,9 @@ header#document-header span color: $header-sticky-color @if $header-sticky-invert-logo - .logo img - filter: invert(1) + .logo + img, .logo-text + filter: invert(1) html.is-scrolling-down:not(.has-menu-opened) & @include media-breakpoint-down(desktop) transform: translateY(-100%) @@ -38,11 +39,10 @@ header#document-header &:not(:hover) transform: translateY(-100%) .logo + @extend %logo color: $header-color img - display: block height: $header-logo-height - width: auto @if $header-sticky-invert-logo transition: filter $header-sticky-transition @include media-breakpoint-up(desktop) @@ -98,7 +98,7 @@ header#document-header display: flex flex-wrap: wrap justify-content: space-between - button[type="button"]:not(.pagefind-ui__button) + .header-button @include button-reset display: none border: 0 @@ -119,7 +119,7 @@ header#document-header align-items: center span:first-of-type @include meta - font-size: 14px + font-size: pxToRem(14) span:last-of-type background: none @include icon-block(burger, before) diff --git a/assets/sass/_theme/design-system/hero.sass b/assets/sass/_theme/design-system/hero.sass index 1cd7c5d3eaa3bf4b370051c5a0f06692cdf60586..6f6f6118019fc9398f7c23965d3d6d87b12f63fd 100644 --- a/assets/sass/_theme/design-system/hero.sass +++ b/assets/sass/_theme/design-system/hero.sass @@ -5,22 +5,22 @@ background-color: $hero-background-color color: $hero-color min-height: $hero-height - padding-bottom: $spacing3 + padding-bottom: $spacing-5 padding-top: var(--header-height) position: relative - margin-bottom: $spacing3 + margin-bottom: $spacing-5 @include media-breakpoint-up(desktop) min-height: $hero-height-desktop *:focus-visible outline-color: $hero-color .content align-items: start - padding-top: $spacing3 - > h1, > hgroup - margin-top: $spacing3 - + .hero-text + margin-top: $spacing-5 h1 + p - margin-top: $spacing1 + margin-top: $spacing-3 + .btn + margin-top: $spacing-3 .lead @include lead-hero figure @@ -35,60 +35,64 @@ .breadcrumb-nav + .content padding-top: 0 .content + .breadcrumb-nav - margin-top: $spacing3 + margin-top: $spacing-5 &--no-margin margin-bottom: 0 & + .document-content - margin-top: $spacing3 + margin-top: $spacing-5 + &--with-image + figure + position: relative + > a + @include stretched-link @include media-breakpoint-down(desktop) - .breadcrumb-nav - margin-left: half(-$grid-gutter-sm) - margin-right: half(-$grid-gutter-sm) - > ol - padding: 0 half($grid-gutter-sm) + .content + padding-top: 0 &--with-image padding-bottom: 0 .content - > h1, > hgroup - margin-bottom: $spacing2 + .hero-text + margin-bottom: $spacing-4 &--image-landscape .content figure - margin-left: half(-$grid-gutter-sm) - margin-right: half(-$grid-gutter-sm) + margin-left: var(--grid-gutter-negative) + margin-right: var(--grid-gutter-negative) &--image-portrait, &--image-square .container display: flex flex-direction: column - margin-bottom: $spacing5 + margin-bottom: $spacing-7 figure - margin-bottom: calc(#{-$spacing5} + #{$spacing2}) + margin-bottom: calc(#{-$spacing-7} + #{$spacing-4}) @include media-breakpoint-up(desktop) .content - > h1, > hgroup - width: col(9) + padding-top: $spacing-5 + .hero-text + width: columns(9) &--with-image .content display: flex justify-content: space-between - > h1, > hgroup - width: col(7) + .hero-text + width: columns(7) figure - width: col(5) + width: columns(5) &--image-portrait, &--image-square .breadcrumb-nav - width: calc(#{col(9)} + #{half($grid-gutter)}) -webkit-mask-image: linear-gradient(to right, black 0%, black 90%, transparent 100%) mask-image: linear-gradient(to right, black 0%, black 90%, transparent 100%) .breadcrumb - padding-right: 50px + padding-right: 10% .content - > h1, > hgroup - width: col(8) + .hero-text + width: columns(8) figure - width: col(3) + width: columns(3) + .breadcrumb-container margin-top: 0 + @include media-breakpoint-down(desktop) + margin-bottom: $spacing-5 diff --git a/assets/sass/_theme/design-system/image.sass b/assets/sass/_theme/design-system/image.sass index 0c2124cab50981e0552697c70b34243ee3db0557..f510bb241e3ba862ade8702d4ba44926d03a2e8a 100644 --- a/assets/sass/_theme/design-system/image.sass +++ b/assets/sass/_theme/design-system/image.sass @@ -13,7 +13,7 @@ img height: auto width: 100% figcaption - margin-top: px2rem(10) + margin-top: pxToRem(10) text-align: right &, p diff --git a/assets/sass/_theme/design-system/layout.sass b/assets/sass/_theme/design-system/layout.sass index 722758b5ebd320c54d5acb33b0f57e69f6d2628a..d4205042f2cc913177708242d6e50fc7b963bfc6 100644 --- a/assets/sass/_theme/design-system/layout.sass +++ b/assets/sass/_theme/design-system/layout.sass @@ -4,17 +4,16 @@ box-sizing: border-box \:root - --spacing0: #{$spacing0} - --spacing1: #{$spacing1} - --spacing2: #{$spacing2} - --spacing3: #{$spacing3} - --spacing4: #{$spacing4} - --spacing5: #{$spacing5} - --grid-gutter: #{$grid-gutter} - --grid-gutter-sm: #{$grid-gutter-sm} + --spacing-1: #{$spacing-1} + --spacing-2: #{$spacing-2} + --spacing-3: #{$spacing-3} + --spacing-4: #{$spacing-4} + --spacing-5: #{$spacing-5} + --spacing-6: #{$spacing-6} + --spacing-7: #{$spacing-7} --grid-max-width: #{$grid-max-width} --header-height: #{$header-height} - --header-menu-max-height: calc(100vh - var(--header-height) - #{$spacing4}) + --header-menu-max-height: calc(100vh - var(--header-height) - #{$spacing-6}) @include media-breakpoint-up(desktop) --header-height: #{$header-height-desktop} @@ -32,7 +31,7 @@ body main &:not(.page-with-blocks) - padding-bottom: $spacing3 + padding-bottom: $spacing-5 iframe border: none @@ -43,7 +42,7 @@ iframe .container @include container .hero + & - margin-top: $spacing3 + margin-top: $spacing-5 .hidden display: none @@ -59,7 +58,7 @@ ol .document-content .container > .lead - margin-bottom: $spacing3 + margin-bottom: $spacing-5 .document-content position: relative @@ -73,13 +72,13 @@ details transform: translateY(5px) summary @include meta - padding-bottom: $spacing0 - padding-top: $spacing0 + padding-bottom: $spacing-2 + padding-top: $spacing-2 position: relative cursor: pointer @include icon(caret, after) - margin-left: px2rem(10) - line-height: px2rem(22) + margin-left: pxToRem(10) + line-height: pxToRem(22) transition: transform 0.25s &::marker content: none @@ -107,16 +106,16 @@ details display: none .modal-content position: relative - background-color: $color-background-alt - padding: $spacing2 + background-color: var(--color-background-alt) + padding: $spacing-4 width: auto max-height: 100vh overflow-y: auto @include media-breakpoint-up(desktop) - padding: $spacing3 - width: col(8) + padding: $spacing-5 + width: columns(8) .modal-header - margin-bottom: $spacing0 + margin-bottom: $spacing-2 button @include button-reset @include icon-block(close, before) diff --git a/assets/sass/_theme/design-system/logo.sass b/assets/sass/_theme/design-system/logo.sass new file mode 100644 index 0000000000000000000000000000000000000000..6aafea148625fb6dff2174a60af8077acbae64d5 --- /dev/null +++ b/assets/sass/_theme/design-system/logo.sass @@ -0,0 +1,16 @@ +%logo + color: inherit + text-decoration: none + img + display: block + width: auto + .logo-darkmode + display: none + .logo-text + @include h2 + &.with-darkmode + @media (prefers-color-scheme: dark) + > img:first-child + display: none + .logo-darkmode + display: block \ No newline at end of file diff --git a/assets/sass/_theme/design-system/nav.sass b/assets/sass/_theme/design-system/nav.sass index 5abd9de7ead9e47a04770d020c990ea56bfbcf53..42cd02a7eed8b71c5d6107ab5c3ff653fe59e13e 100644 --- a/assets/sass/_theme/design-system/nav.sass +++ b/assets/sass/_theme/design-system/nav.sass @@ -11,7 +11,7 @@ -webkit-flex-basis: 100vw display: none flex-basis: 100vw - margin-top: $spacing1 + margin-top: $spacing-3 max-height: var(--header-menu-max-height) overflow: auto a, @@ -34,7 +34,7 @@ // text-decoration-color: transparent &[aria-expanded] @include icon(caret, after) - margin-left: px2rem(5) + margin-left: pxToRem(5) transition: transform 0.15s &[aria-expanded="true"] &::after @@ -49,27 +49,25 @@ display: none background: $header-dropdown-background @include media-breakpoint-down(desktop) - padding-bottom: $spacing1 + padding-bottom: $spacing-3 @include media-breakpoint-up(desktop) - padding: $spacing1 + padding: $spacing-3 position: absolute max-height: calc(100vh - var(--header-height)) overflow: auto a color: $header-dropdown-color - &:hover, - &:focus - text-decoration-color: $header-dropdown-color + @extend %underline-on-hover .dropdown-menu-title @include h2 .nav-level-1 display: flex > li - > a, span + > a, > span @include meta display: block - padding: half($spacing0) $spacing0 + padding: $spacing-1 $spacing-2 &:last-child a, span padding-right: 0 @@ -88,7 +86,7 @@ .nav-level-3 display: block - padding-top: half($spacing0) + padding-top: $spacing-1 a, span @include meta @@ -102,7 +100,7 @@ align-items: center .nav-level-3 li - margin-top: $spacing0 + margin-top: $spacing-2 .has-children:not(.header-i18n) // avoid @if $header-dropdown-full .dropdown-menu @@ -111,7 +109,7 @@ // inset: 100% 0 auto 0 padding-left: 0 padding-right: 0 - padding-bottom: $spacing2 + padding-bottom: $spacing-4 &:not(.is-titled) .nav-level-2 @include container @@ -120,38 +118,38 @@ .container align-items: baseline display: flex - gap: $grid-gutter + gap: var(--grid-gutter) .dropdown-menu-title - width: col(5) + width: columns(5) .nav-level-2 - width: col(7) + width: columns(7) li - margin-bottom: $spacing0 + margin-bottom: $spacing-2 @else position: relative .dropdown-menu margin-top: $header-nav-padding-y min-width: 400px - padding-left: $spacing1 - padding-top: $spacing0 - padding-right: $spacing1 + padding-left: $spacing-3 + padding-top: $spacing-2 + padding-right: $spacing-3 right: 0 text-align: right &.is-titled .dropdown-menu-title @include h3 - margin-bottom: $spacing0 + margin-bottom: $spacing-2 .container padding-left: 0 padding-right: 0 .nav-level-2 > li > a - padding-bottom: half($spacing0) - padding-top: half($spacing0) + padding-bottom: $spacing-1 + padding-top: $spacing-1 display: block + li.has-children - margin-top: $spacing1 + margin-top: $spacing-3 .header-i18n @include dropdown-i18n @@ -170,14 +168,14 @@ display: block li a, span - padding: half($spacing0) 0 + padding: $spacing-1 0 display: block > li:not(:last-child) border-bottom: 1px solid #adb5bd > li > a, > span - padding-bottom: $spacing1 - padding-top: $spacing1 + padding-bottom: $spacing-3 + padding-top: $spacing-3 li.has-children [role="button"] align-items: center @@ -201,7 +199,7 @@ padding-right: 0 .nav-level-2 > .has-children + li - margin-top: $spacing1 + margin-top: $spacing-3 .nav-level-3 padding-top: 0 @@ -215,8 +213,8 @@ margin-right: 1rem a text-decoration: none - padding: $spacing0 - font-size: px2rem(24) + padding: $spacing-2 + font-size: pxToRem(24) &:hover opacity: 0.7 &::after diff --git a/assets/sass/_theme/design-system/pagination.sass b/assets/sass/_theme/design-system/pagination.sass index 1c00405cb47904fdf4987318c33ba690e2fcda45..c39cf32843bdda5b91add7e18d17964af3a15701 100644 --- a/assets/sass/_theme/design-system/pagination.sass +++ b/assets/sass/_theme/design-system/pagination.sass @@ -5,47 +5,51 @@ align-items: center display: flex flex-wrap: wrap - margin-top: $spacing3 + margin-top: $spacing-5 main.page-with-blocks & - padding-bottom: $spacing3 + padding-bottom: $spacing-5 li a color: inherit - padding: calc(#{$spacing0}/2) $spacing0 + display: block + line-height: $spacing-4 + min-width: $minimum-accessible-size + min-height: $minimum-accessible-size + padding: 0 $spacing-2 + text-align: center text-decoration: none transition: background-color .15s ease-in-out &.active - color: $color-accent + color: var(--color-accent) &.disabled pointer-events: none a::before opacity: .3 &:not(.disabled) a:hover - background-color: $color-background-alt + background-color: var(--color-background-alt) &:first-child a @include icon-block(arrow-first, before) - padding-left: 0 - padding-right: 0 &:nth-child(2) a @include icon-block(arrow-previous, before) - padding-left: 0 - padding-right: 0 &:nth-last-child(2) a @include icon-block(arrow-next, before) - padding-left: 0 - padding-right: 0 &:last-child a @include icon-block(arrow-last, before) + &:first-child, + &:nth-child(2), + &:nth-last-child(2), + &:last-child + a padding-left: 0 padding-right: 0 .posts-navigation, .siblings-navigation - border-top: 1px solid $color-border + border-top: 1px solid var(--color-border) ul @include list-reset display: flex @@ -58,33 +62,33 @@ display: block text-decoration: none &:hover - color: $color-accent + color: var(--color-accent) span @include meta text-decoration: none display: block - margin-bottom: $spacing0 + margin-bottom: $spacing-2 .previous span @include icon(arrow-left, before) - margin-right: px2rem(5) + margin-right: pxToRem(5) .next text-align: right span @include icon(arrow-right, after) - margin-left: px2rem(5) + margin-left: pxToRem(5) @include media-breakpoint-up(desktop) ul - padding-top: $spacing1 - gap: $spacing1 + padding-top: $spacing-3 + gap: $spacing-3 @include media-breakpoint-down(desktop) ul flex-direction: column-reverse .previous, .next - border-bottom: 1px solid $color-border + border-bottom: 1px solid var(--color-border) display: flex align-items: center span @@ -94,11 +98,11 @@ content: none a display: block - padding: $spacing1 0 + padding: $spacing-3 0 .previous @include icon(arrow-left, before) - margin-right: $spacing0 + margin-right: $spacing-2 .next justify-content: end @include icon(arrow-right, after) - margin-left: $spacing0 \ No newline at end of file + margin-left: $spacing-2 \ No newline at end of file diff --git a/assets/sass/_theme/design-system/search.sass b/assets/sass/_theme/design-system/search.sass index 8560a31ddb04fba2f7ac6e64ab354528406a01bb..844e04318e653f1078ac00413b2263d339ae72fd 100644 --- a/assets/sass/_theme/design-system/search.sass +++ b/assets/sass/_theme/design-system/search.sass @@ -18,19 +18,20 @@ @include icon(search-inline, after) &::after line-height: inherit - margin-left: half($spacing0) + margin-left: $spacing-1 &:not(.pagefind-menu) - padding: half($spacing0) $spacing0 + padding: $spacing-1 $spacing-2 &.toggle-icon::after - font-size: $h3-size - @include media-breakpoint-up(desktop) - margin-top: px2rem(5) + font-size: $h2-size + &.toggle-both + .menu & span + padding-right: 0 span, &::after display: inline @include media-breakpoint-down(desktop) &.pagefind-menu - padding: $spacing1 0 + padding: $spacing-3 0 width: 100% @include media-breakpoint-up(desktop) &.toggle-icon::after @@ -38,96 +39,94 @@ .search__close @include icon-block(close, after) position: fixed - right: $spacing3 + right: $spacing-5 padding: 0 z-index: 9 &::after display: inline-flex justify-content: center - margin-left: $spacing0 - width: px2rem(15) + margin-left: $spacing-2 + width: pxToRem(15) @include media-breakpoint-down(desktop) - right: $spacing1 - top: half($spacing0) + right: $spacing-3 + top: $spacing-1 #search - background: $color-background - color: $color-text + background: var(--color-background) + color: var(--color-text) height: 100vh left: 0 - padding-bottom: $spacing3 - padding-left: $spacing1 - padding-right: $spacing1 - padding-top: $spacing4 + padding-bottom: $spacing-5 + padding-left: var(--grid-gutter) + padding-right: var(--grid-gutter) + padding-top: $spacing-6 position: fixed overflow: auto top: 0 width: 100vw z-index: 80 @include media-breakpoint-up(desktop) - padding-right: $spacing3 - padding-left: $spacing3 - padding-top: space(7) + padding-top: $spacing-4 &[aria-hidden=true] display: none a - color: $color-text + color: var(--color-text) .pagefind-ui &::before content: "" - background: $color-background - height: space(27) + background: var(--color-background) + height: space(34) left: 0 position: fixed top: 0 width: 100% z-index: 5 @include media-breakpoint-down(desktop) - height: space(50) + height: space(52) &__form @include icon(search-inline, after) &::after - color: transparentize($color-text-alt, .4) - padding-right: px2rem(2) + color: alphaColor(var(--color-text-alt), 0.6) position: fixed pointer-events: none - transform: translate(-6px,20%) z-index: 9 + font-size: $h2-size @include media-breakpoint-down(desktop) - right: $spacing1 - top: space(33) + right: $spacing-3 + top: space(35) &__search-input + background-color: $color-background border-left: 0 border-right: 0 border-radius: 0 border-top: 0 padding-left: 0 - padding-right: $spacing1 !important + padding-right: $spacing-3 !important position: fixed z-index: 6 - @include media-breakpoint-down(desktop) - margin-bottom: $spacing1 &:focus, &:focus-visible - border-bottom: 2px solid $color-text + border-bottom: 2px solid var(--color-text) outline: none &__button[type="button"] @include button-reset - @include link($color-text) - margin-top: $spacing2 + @include link(var(--color-text)) + margin-top: $spacing-4 padding: 0 &__message @include meta - color: $color-text-alt + color: var(--color-text-alt) text-align: right z-index: 11 position: fixed - top: space(20) + top: space(27) &__search-clear, &__suppressed display: none pointer-events: none &__drawer position: relative + @include media-breakpoint-down(desktop) + padding-top: $spacing-2 &__result list-style: none position: relative @@ -139,74 +138,78 @@ @include media-breakpoint-down(desktop) display: none + li - margin-top: half($spacing3) + margin-top: $spacing-4 @include media-breakpoint-up(desktop) @include grid &-inner grid-column: 4/13 &__result-excerpt mark - background-color: $color-accent - color: $color-background + background-color: var(--color-accent) + color: var(--color-background) &__result-title a @include h4 @include stretched-link @include media-breakpoint-up(desktop) &__form position: relative - width: col(8) + width: columns(8) &::after - left: calc(#{col(8)} - #{space(8)}) - top: space(9) + left: calc(#{columns(8)} + #{var(--grid-gutter)}) + top: space(16) + transform: translateX(-100%) &__search-input, &__message - width: calc(#{col(8,12)} - #{space(21.5)}) + width: columns(8) &__results-area - padding-top: space(26) + padding-top: $spacing-6 @include media-breakpoint-down(desktop) &__search-input, &__message - width: calc(100% - #{$spacing2}) + left: var(--grid-gutter) + right: var(--grid-gutter) &__message - top: space(44) + top: space(46) &__results-area padding-top: space(17) .menu .nav-level-1 > li .pagefind-ui__toggle:not(.toggle-icon)::after margin-left: 0 - margin-top: px2rem(2) + margin-top: pxToRem(2) .pagefind-fixed align-items: center - background: $color-background-alt + background: var(--color-background-alt) bottom: 0 - color: $color-text + color: var(--color-text) display: flex justify-content: space-between - left: $spacing3 + left: var(--grid-gutter) position: fixed z-index: 10 @include media-breakpoint-up(desktop) &:not(.toggle-icon) - min-width: calc(#{$spacing3} * 3) + min-width: columns(2) &.toggle-icon:not(:hover) padding-left: 0 padding-right: 0 justify-content: center &.toggle-icon - min-height: px2rem(37) - width: px2rem(50) + min-height: pxToRem(37) + width: pxToRem(50) + span + display: none &:hover, &:focus - width: calc(#{$spacing3} * 3) + min-width: columns(2) span display: inline @include media-breakpoint-down(desktop) left: 0 width: 100vw &.in-page-with-toc - background: $color-background + background: var(--color-background) border-top: 1px solid #eee - bottom: px2rem(44) + bottom: pxToRem(44) footer#document-footer .footer-search .pagefind-footer @@ -215,11 +218,11 @@ footer#document-footer .footer-search &.toggle-icon transform: translateX(-35%) &::after - margin-top: px2rem(3) + margin-top: pxToRem(3) #search margin-top: 0 a - color: $color-text + color: var(--color-text) .nav-search display: flex diff --git a/assets/sass/_theme/design-system/table.sass b/assets/sass/_theme/design-system/table.sass index f4fdd19732c0a98188b0b53709510ea65eb9a777..5b3796a1ffd5fc08fe20f3ab9aeace77d917fc2c 100644 --- a/assets/sass/_theme/design-system/table.sass +++ b/assets/sass/_theme/design-system/table.sass @@ -7,24 +7,21 @@ table empty-cells: hide caption @include meta - padding: $spacing0 0 + padding: $spacing-2 0 text-align: left th, td - padding-top: $spacing0 - padding-bottom: $spacing0 - padding-right: $spacing0 - @include in-page-with-sidebar - padding-top: calc(#{$spacing0} / 2) - padding-bottom: calc(#{$spacing0} / 2) + padding-top: $spacing-2 + padding-bottom: $spacing-2 + padding-right: $spacing-2 + @include media-breakpoint-down(desktop) + min-width: 15ch thead @include h4 font-size: $table-head-font-size @include media-breakpoint-up(desktop) font-size: $table-head-font-size-desktop - th - text-align: left tbody font-size: $table-body-size @@ -32,18 +29,13 @@ table font-size: $table-body-size-desktop td, th - border-top: 1px solid $color-border + border-top: 1px solid var(--color-border) &:empty border-top: none .table-responsive overflow-x: auto - margin-left: half(-$grid-gutter-sm) - margin-right: half(-$grid-gutter-sm) - padding-left: half($grid-gutter-sm) - padding-right: half($grid-gutter-sm) - @include media-breakpoint-up(desktop) - margin-left: half(-$grid-gutter) - margin-right: half(-$grid-gutter) - padding-left: half($grid-gutter) - padding-right: half($grid-gutter) \ No newline at end of file + margin-left: var(--grid-gutter-negative) + margin-right: var(--grid-gutter-negative) + padding-left: var(--grid-gutter) + padding-right: var(--grid-gutter) \ No newline at end of file diff --git a/assets/sass/_theme/design-system/table_of_contents.sass b/assets/sass/_theme/design-system/table_of_contents.sass index 0e7d1746f0da1b9d126bbdf61f39efd66dd8bb08..0c13d9c54c25b597b850820e75111632e0c2b21d 100644 --- a/assets/sass/_theme/design-system/table_of_contents.sass +++ b/assets/sass/_theme/design-system/table_of_contents.sass @@ -7,11 +7,11 @@ bottom: 0 margin-top: 0 z-index: $zindex-toc - width: calc(#{col-outside-container(4)} + #{$grid-gutter} * 2) + width: calc(#{columns(4)} + var(--grid-gutter) * 2) transform: translateX(100%) transition: var(--toc-transition-duration) transform ease-in-out @include media-breakpoint-down(desktop) - width: calc(100% - #{$grid-gutter}) + width: calc(100% - var(--grid-gutter)) &.is-opened transform: translateX(0) &[aria-hidden="true"] @@ -21,13 +21,13 @@ flex-direction: column height: 100% .toc-title - border-bottom: 1px solid $color-border + border-bottom: 1px solid var(--color-border) font-size: $toc-title-font-size - padding: $spacing0 $spacing1 + padding: $spacing-2 $spacing-3 @include media-breakpoint-up(desktop) font-size: $toc-title-font-size-desktop - padding: $header-nav-padding-y $grid-gutter calc(#{$header-nav-padding-y} + 1px) - padding: calc((var(--header-height)) / 2 - #{$body-size}) $grid-gutter + padding: $header-nav-padding-y var(--grid-gutter) calc(#{$header-nav-padding-y} + 1px) + padding: calc((var(--header-height)) / 2 - #{$body-size}) var(--grid-gutter) padding-top: 0 padding-bottom: 0 line-height: calc(var(--header-height) - 1px) @@ -39,9 +39,9 @@ max-height: 100% > ol flex: 1 - padding: $spacing1 + padding: $spacing-3 @include media-breakpoint-up(desktop) - padding: $spacing1 $grid-gutter + padding: $spacing-3 var(--grid-gutter) > li:first-child margin-top: 0 button @@ -49,10 +49,10 @@ @include icon-block(close, after) margin-right: -14px align-items: center - border-top: 1px solid $color-border + border-top: 1px solid var(--color-border) display: flex justify-content: space-between - padding: 0 $spacing1 + padding: 0 $spacing-3 line-height: $body-line-height @include media-breakpoint-up(desktop) border-top: 0 @@ -62,9 +62,9 @@ padding-top: 0 padding-bottom: 0 line-height: var(--header-height) - right: $grid-gutter + right: var(--grid-gutter) &::after - margin-left: $spacing0 + margin-left: $spacing-2 .toc-cta display: flex @@ -73,9 +73,9 @@ display: none @include media-breakpoint-up(desktop) @include container - background: $color-background + background: var(--color-background) justify-content: end - margin-bottom: $spacing3 + margin-bottom: $spacing-5 position: sticky text-align: right top: calc(var(--header-height) * -1) @@ -86,16 +86,16 @@ body.offcanvas-toc & display: flex @include media-breakpoint-down(desktop) - border-top: 1px solid $color-border + border-top: 1px solid var(--color-border) position: fixed bottom: 0 background: $toc-background-color left: 0 width: 100% - padding: 0 half($grid-gutter-sm) + padding: 0 var(--grid-gutter) z-index: $zindex-toc-cta button - @include button-icon(toc) + @include link-icon(toc) border: 0 line-height: inherit cursor: pointer @@ -123,24 +123,24 @@ // Only desktop and in page with sidebar @include in-page-with-sidebar - @include container-margin-left + margin-left: grid-external-space() pointer-events: none top: 0 left: 0 margin-top: 0 height: 100% position: absolute - width: col-outside-container(4) + width: columns(4) .toc-content overflow-y: auto max-height: calc(100vh - var(--header-height)) - padding-bottom: $spacing2 + padding-bottom: $spacing-4 pointer-events: auto - @include sticky($spacing1) + @include sticky($spacing-3) html.is-scrolling-down & - max-height: calc(100vh - #{$spacing1}) + max-height: calc(100vh - #{$spacing-3}) .toc-title - color: $color-text-alt + color: var(--color-text-alt) button display: none @@ -184,9 +184,7 @@ a color: $toc-color display: block - text-decoration-color: transparent - &:hover - text-decoration-color: $toc-color + @extend %underline-on-hover .active color: $toc-active-color pointer-events: none diff --git a/assets/sass/_theme/design-system/top.sass b/assets/sass/_theme/design-system/top.sass index 574e1cc322c663e41f3b9500fa430d617a03cfc0..82e22fa0fc77871dff4f4e042bc6bfa8bb0f382a 100644 --- a/assets/sass/_theme/design-system/top.sass +++ b/assets/sass/_theme/design-system/top.sass @@ -1,21 +1,8 @@ -/* TODO à renomer */ .top - // align-items: baseline - // display: flex - // flex-wrap: wrap - // justify-content: space-between - margin-bottom: calc(#{$spacing1} + #{$spacing0}) + margin-bottom: calc(#{$spacing-3} + #{$spacing-2}) position: relative h2, p margin-bottom: 0 - // h2 - // a - // @include stretched-link - // div - // margin-top: px2rem(5) - // p - // @include media-breakpoint-up(lg) - // width: col(8) .link @extend .link-more diff --git a/assets/sass/_theme/design-system/transcription.sass b/assets/sass/_theme/design-system/transcription.sass index b6137c3de18838373db412b7890c62c1592f1cc6..eba07683e32588e77a68d2c269d45895971247da 100644 --- a/assets/sass/_theme/design-system/transcription.sass +++ b/assets/sass/_theme/design-system/transcription.sass @@ -1,2 +1,2 @@ .transcription - margin-top: $spacing1 + margin-top: $spacing-3 diff --git a/assets/sass/_theme/design-system/typography.sass b/assets/sass/_theme/design-system/typography.sass index b17ab94d5ff712e724ce143ec28460cbebc2f062..6b1f3ca4260327fdabb648c2831016e8beec507a 100644 --- a/assets/sass/_theme/design-system/typography.sass +++ b/assets/sass/_theme/design-system/typography.sass @@ -4,12 +4,10 @@ body font-family: $body-font-family -moz-osx-font-smoothing: grayscale -webkit-font-smoothing: antialiased - font-size: $body-size + font-size: var(--body-size) + line-height: var(--body-line-height) font-variant-ligatures: common-ligatures text-rendering: optimizelegibility - line-height: $body-line-height - @include media-breakpoint-up(desktop) - font-size: $body-size-desktop // Experimental, not implemented yet // https://github.com/jantimon/text-box-trim-examples @@ -25,60 +23,51 @@ h1, h2, h3, h4, h5, h6 @mixin h1 font-family: $h1-font-family - font-size: $h1-size + font-size: var(--h1-size) font-weight: $h1-weight - line-height: $h1-line-height + line-height: var(--h1-line-height) text-transform: $h1-text-transform - @include media-breakpoint-up(desktop) - font-size: $h1-size-desktop h1, .h1 @include h1 @mixin h2 font-family: $h2-font-family - font-size: $h2-size + font-size: var(--h2-size) font-weight: $h2-weight - line-height: $h2-line-height + line-height: var(--h2-line-height) text-transform: $h2-text-transform - @include media-breakpoint-up(desktop) - font-size: $h2-size-desktop h2, .h2 @include h2 @mixin h3 font-family: $h3-font-family - font-size: $h3-size + font-size: var(--h3-size) font-weight: $h3-weight - line-height: $h3-line-height + line-height: var(--h3-line-height) text-transform: $h3-text-transform - @include media-breakpoint-up(desktop) - font-size: $h3-size-desktop h3, .h3 @include h3 @mixin h4 font-family: $h4-font-family - font-size: $h4-size + font-size: var(--h4-size) font-weight: $h4-weight - line-height: $h4-line-height + line-height: var(--h4-line-height) text-transform: $h4-text-transform - @include media-breakpoint-up(desktop) - font-size: $h4-size-desktop h4, .h4 @include h4 @mixin h5 font-family: $h5-font-family - font-size: $h5-size + font-size: var(--h5-size) font-weight: $h5-weight - line-height: $h5-line-height + line-height: var(--h5-line-height) text-transform: $h5-text-transform - @include media-breakpoint-up(desktop) - font-size: $h5-size-desktop + // Todo : check that a text-decoration: none @@ -87,12 +76,10 @@ h5, .h5 @mixin h6 font-family: $h6-font-family - font-size: $h6-size + font-size: var(--h6-size) font-weight: $h6-weight - line-height: $h6-line-height + line-height: var(--h6-line-height) text-transform: $h6-text-transform - @include media-breakpoint-up(desktop) - font-size: $h6-size-desktop h6, .h6 @include h6 @@ -100,42 +87,33 @@ h6, .h6 h1, .h1, h2, .h2 a - text-decoration-color: transparent - &:hover - text-decoration-color: inherit + @extend %underline-on-hover @mixin lead($handle-sidebar: true) font-family: $lead-font-family - font-size: $lead-size + font-size: var(--lead-size) font-weight: $lead-weight - line-height: $lead-line-height - @include media-breakpoint-up(desktop) - font-size: $lead-size-desktop + line-height: var(--lead-line-height) @if $handle-sidebar @include in-page-with-sidebar font-family: $lead-sidebar-font-family - font-size: $lead-sidebar-size-desktop + font-size: var(--lead-sidebar-size) font-weight: $lead-sidebar-weight - line-height: $lead-sidebar-line-height + line-height: var(--lead-sidebar-line-height) .lead @include lead @mixin lead-hero font-family: $lead-hero-font-family - font-size: $lead-hero-size + font-size: var(--lead-hero-size) font-weight: $lead-hero-weight - line-height: $lead-hero-line-height - @include media-breakpoint-up(desktop) - font-size: $lead-hero-size-desktop - + line-height: var(--lead-hero-line-height) @mixin body-text font-family: $body-font-family - font-size: $body-size - line-height: $body-line-height - @include media-breakpoint-up(desktop) - font-size: $body-size-desktop + font-size: var(--body-size) + line-height: var(--body-line-height) .p, .li @@ -143,46 +121,49 @@ h2, .h2 @mixin meta font-family: $meta-font-family - font-size: $meta-size + font-size: var(--meta-size) font-weight: $meta-weight - line-height: $meta-line-height - @include media-breakpoint-up(desktop) - font-size: $meta-size-desktop + line-height: var(--meta-line-height) .meta @include meta @mixin signature font-family: $signature-font-family - font-size: $signature-size + font-size: var(--signature-size) font-weight: $signature-weight - line-height: $signature-line-height - @include media-breakpoint-up(desktop) - font-size: $signature-size-desktop + line-height: var(--signature-line-height) .signature @include signature @mixin small font-family: $small-font-family - font-size: $small-size + font-size: var(--small-size) font-weight: $small-weight - line-height: $small-line-height - @include media-breakpoint-up(desktop) - font-size: $small-size-desktop + line-height: var(--small-line-height) small, .small @include small -@mixin rich-text +%multiple-lists + ul, ol + ul, ol + padding-left: $spacing-2 + @include media-breakpoint-up(desktop) + padding-left: $spacing-3 + +.rich-text word-break: break-word + @extend %multiple-lists h1, h2, h3, h4, h5, h6, p, ul - margin-top: $spacing1 + margin-top: $spacing-3 &:first-child, meta + & margin-top: 0 -.rich-text - @include rich-text +.content + section + @extend %multiple-lists @mixin inherit-text font-family: inherit @@ -192,19 +173,17 @@ small, .small line-height: inherit [itemprop="articleBody"] - @include rich-text + @extend .rich-text @mixin blockquote margin: 0 font-family: $quote-font-family - font-size: $quote-size + font-size: var(--quote-size) font-weight: $quote-weight font-style: $quote-style - line-height: $quote-line-height - @include media-breakpoint-up(desktop) - font-size: $quote-size-desktop-long + line-height: var(--quote-line-height) cite - font-size: px2rem(18) + font-size: pxToRem(18) font-style: normal blockquote, .blockquote @@ -215,10 +194,9 @@ p margin-top: 0 margin-bottom: 0 + p - margin-top: $spacing0 - -p:empty - display: none + margin-top: $spacing-2 + &:empty + display: none p + ul, p + ol @@ -244,32 +222,6 @@ a, &.glightbox text-decoration: none -@mixin btn - font-size: $btn-font-size - padding: $btn-padding-y $btn-padding-x - text-decoration: none - display: inline-block - border-radius: $btn-border-radius - @include media-breakpoint-up(desktop) - font-size: $btn-font-size-desktop - padding: $btn-padding-y-desktop $btn-padding-x-desktop - -.btn - @include btn - -.link-btn - @include btn - border: $btn-border - @include media-breakpoint-up(desktop) - padding: $spacing0 - &[target="_blank"]:not(.icon) - display: flex - justify-content: space-between - align-items: center - @include icon-block(link-blank-block, after) - &:hover - background: $btn-hover-background - .chip @include meta background: $chip-background @@ -286,8 +238,16 @@ a, @include link @include icon(arrow, before) &::before - font-size: px2rem(10) - margin-right: px2rem(5) + font-size: pxToRem(10) + margin-right: pxToRem(5) + +%underline-on-hover + text-decoration-color: transparent + text-decoration-thickness: $link-underline-thickness + text-underline-offset: $link-underline-offset + transition: $link-transition + &:hover + text-decoration-color: currentColor dd margin-bottom: 0.5rem @@ -298,20 +258,19 @@ abbr, abbr[title] text-decoration-style: dotted ::selection - background: rgba($color-text, .7) - color: $color-background - text-shadow: none + background: var(--color-selection-background) + color: var(--color-selection) sub, sup font-size: 60% - margin-left: px2rem(2) + margin-left: pxToRem(2) [data-click-to-copy] cursor: pointer text-decoration: none @include icon(copy-inline, after) - margin-left: $spacing0 + margin-left: $spacing-2 vertical-align: text-top &.is-copied @include icon(check-inline, after) @@ -342,5 +301,5 @@ sup .btn-#{$name} @include icon($name) &::before - margin-inline-end: px2rem(5) + margin-inline-end: pxToRem(5) diff --git a/assets/sass/_theme/hugo-osuny.sass b/assets/sass/_theme/hugo-osuny.sass index e998ad1616e131fb89d5f23027acd41af6821cce..c99d5465e5a26f6f80347faf510480321c234dff 100644 --- a/assets/sass/_theme/hugo-osuny.sass +++ b/assets/sass/_theme/hugo-osuny.sass @@ -1,81 +1,86 @@ // Settings -@import "utils" -@import "configuration" +@import utils +@import configuration // Dependencies and tweaks of dependencies -@import "dependencies/normalize" -@import "dependencies/bootstrap-breakpoints" +@import dependencies/normalize +@import dependencies/bootstrap-breakpoints + +@import variables // Keep on top -@import "design-system/typography" +@import design-system/typography // Vendors -@import "glightbox/dist/css/glightbox" -@import "@splidejs/splide/dist/css/splide-core.min" -@import "dependencies/glightbox" -@import "dependencies/splide" +@import glightbox/dist/css/glightbox +@import @splidejs/splide/dist/css/splide-core.min +@import dependencies/glightbox +@import dependencies/splide // Design System -@import "design-system/layout" -@import "design-system/a11y" -@import "design-system/backlinks" -@import "design-system/breadcrumb" -@import "design-system/button" -@import "design-system/contacts" -@import "design-system/footer" -@import "design-system/form" -@import "design-system/header" -@import "design-system/hero" -@import "design-system/image" -@import "design-system/pagination" -@import "design-system/nav" -@import "design-system/search" -@import "design-system/table" -@import "design-system/table_of_contents" -@import "design-system/top" +@import design-system/layout +@import design-system/a11y +@import design-system/backlinks +@import design-system/breadcrumb +@import design-system/button +@import design-system/contacts +@import design-system/footer +@import design-system/form +@import design-system/header +@import design-system/hero +@import design-system/image +@import design-system/logo +@import design-system/nav +@import design-system/pagination +@import design-system/search +@import design-system/table +@import design-system/table_of_contents +@import design-system/top // Blocks -@import "blocks/base" -@import "blocks/agenda" -@import "blocks/datatable" -@import "blocks/call_to_action" -@import "blocks/chapter" -@import "blocks/contact" -@import "blocks/definitions" -@import "blocks/embed" -@import "blocks/features" -@import "blocks/files" -@import "blocks/gallery" -@import "blocks/image" -@import "blocks/key_figures" -@import "blocks/license" -@import "blocks/organizations" -@import "blocks/pages" -@import "blocks/persons" -@import "blocks/posts" -@import "blocks/programs" -@import "blocks/sitemap" -@import "blocks/sound" -@import "blocks/summary" -@import "blocks/testimonials" -@import "blocks/timeline" -@import "blocks/video" +@import blocks/base +@import blocks/agenda +@import blocks/datatable +@import blocks/call_to_action +@import blocks/chapter +@import blocks/contact +@import blocks/definitions +@import blocks/embed +@import blocks/features +@import blocks/files +@import blocks/gallery +@import blocks/image +@import blocks/key_figures +@import blocks/license +@import blocks/organizations +@import blocks/pages +@import blocks/persons +@import blocks/posts +@import blocks/projects +@import blocks/programs +@import blocks/sitemap +@import blocks/sound +@import blocks/summary +@import blocks/testimonials +@import blocks/timeline +@import blocks/video // Sections -@import "sections/administrators" -@import "sections/authors" -@import "sections/categories" -@import "sections/diplomas" -@import "sections/events" -@import "sections/locations" -@import "sections/organizations" -@import "sections/pages" -@import "sections/papers" -@import "sections/persons" -@import "sections/posts" -@import "sections/programs" -@import "sections/publications" -@import "sections/researchers" -@import "sections/sitemap" -@import "sections/teachers" -@import "sections/volumes" +@import sections/administrators +@import sections/authors +@import sections/categories +@import sections/diplomas +@import sections/events +@import sections/locations +@import sections/organizations +@import sections/pages +@import sections/papers +@import sections/persons +@import sections/posts +@import sections/projects +@import sections/programs +@import sections/publications +@import sections/researchers +@import sections/sitemap +@import sections/teachers +@import sections/volumes diff --git a/assets/sass/_theme/sections/categories.sass b/assets/sass/_theme/sections/categories.sass index ecfa96bd6ae8d155337100543c0fa050087f3e9b..4b15a928da24a517784e01b700c65787d6d73b7e 100644 --- a/assets/sass/_theme/sections/categories.sass +++ b/assets/sass/_theme/sections/categories.sass @@ -10,10 +10,10 @@ ul.categories @include list-reset display: flex flex-direction: column - gap-y: $spacing1 + gap-y: $spacing-3 @include grid(3, md) @include grid(4, xxl) .posts_categories__term, .events_categories__term main - padding-bottom: $spacing3 + padding-bottom: $spacing-5 diff --git a/assets/sass/_theme/sections/diplomas.sass b/assets/sass/_theme/sections/diplomas.sass index 67b54c24234bc8aa2bbce2dfe42e097f5550707a..6e7e4c7175b89b4eea7eb8499c82a8d835c3dbd6 100644 --- a/assets/sass/_theme/sections/diplomas.sass +++ b/assets/sass/_theme/sections/diplomas.sass @@ -1,65 +1,65 @@ ul.diplomas @include list-reset > li - margin-bottom: $spacing0 + margin-bottom: $spacing-2 @include media-breakpoint-up(desktop) - margin-bottom: $spacing3 + margin-bottom: $spacing-5 > a @include h2 display: block text-decoration: none - padding-bottom: $spacing1 - padding-top: $spacing1 - border-bottom: 1px solid $color-border + padding-bottom: $spacing-3 + padding-top: $spacing-3 + border-bottom: 1px solid var(--color-border) @include icon(arrow-right, after) align-self: center margin-left: auto &:hover - color: $color-accent + color: var(--color-accent) @include media-breakpoint-down(desktop) position: relative - padding-right: $spacing1 + padding-right: $spacing-3 &::after position: absolute - bottom: $spacing1 + bottom: $spacing-3 right: 0 @include media-breakpoint-up(desktop) display: flex align-items: baseline span - margin-left: $spacing1 - + margin-left: $spacing-3 + .content @include grid(2, desktop) - padding-bottom: $spacing1 - padding-top: $spacing1 + padding-bottom: $spacing-3 + padding-top: $spacing-3 .programs @include media-breakpoint-down(desktop) - margin-top: $spacing1 + margin-top: $spacing-3 li display: block border-bottom: 0 padding: 0 + li, > ol - margin-top: $spacing0 + margin-top: $spacing-2 @include media-breakpoint-up(sm) - margin-top: $spacing1 + margin-top: $spacing-3 a:hover - color: $color-accent + color: var(--color-accent) ol li a @include inherit-text @include icon(list-hyphen, before) margin-left: 1px - margin-right: half($spacing0) + margin-right: $spacing-1 margin-top: 6px @include media-breakpoint-up(sm) - margin-right: $spacing0 + margin-right: $spacing-2 @include media-breakpoint-up(md) margin-top: 8px display: flex ol - margin-left: $spacing1 + margin-left: $spacing-3 > li a @include h3 @@ -68,7 +68,7 @@ ul.diplomas @include media-breakpoint-up(desktop) display: flex > p - width: col(6) + width: columns(6) .title @include h4 @@ -81,83 +81,91 @@ ul.diplomas @include icon(caret, after) margin-left: 5px .dropdown-menu - @include inset(calc(100% + #{$spacing0}), 0, auto, auto) - background-color: $color-background-alt + @include inset(calc(100% + #{$spacing-2}), 0, auto, auto) + background-color: var(--color-background-alt) display: none position: absolute z-index: 2 @include media-breakpoint-down(desktop) - right: half(-$grid-gutter-sm) - left: half(-$grid-gutter-sm) + right: var(--grid-gutter-negative) + left: var(--grid-gutter-negative) &, a color: black a - display: block font-size: $body-size - padding: $spacing1 + padding: $spacing-3 text-decoration: none white-space: normal @include media-breakpoint-down(desktop) - padding: $spacing0 $spacing1 + padding: $spacing-2 $spacing-3 &:not(:first-child) - border-top: 1px solid $color-border + border-top: 1px solid var(--color-border) &:hover - background-color: $color-accent + background-color: var(--color-accent) color: white - button[aria-expanded="true"] + button[aria-expanded="true"] @include icon('caret-top', 'after') + .dropdown-menu display: block .essential-container - .container + margin-top: $spacing-5 + .buttons + @include meta + display: flex + flex-wrap: wrap + .dropdown-share + button + @extend .button + @include button-icon(social-inline) + a[download] + @extend .button-alt + @include button-icon(download-inline) @include media-breakpoint-down(sm) - .buttons > * - width: col(8) + button, > a + width: 100% @include media-breakpoint-down(md) - .buttons - display: flex - gap: $spacing1 - flex-wrap: wrap - > * - min-width: 150px - width: col(7) + --btn-min-width: #{pxToRem(140)} + gap: $spacing-3 + flex-direction: row + button, > a + width: columns(6) @include media-breakpoint-up(md) - @include grid(2, md) - align-items: flex-end - .buttons - align-items: end - display: flex - flex-direction: column - gap: $spacing1 - justify-content: flex-end - > * - min-width: 200px - width: col(2, 6) - + flex-direction: column + gap: $spacing-3 + --btn-min-width: #{columns(2)} + button, > a + width: pxToRem(200) + @include media-breakpoint-down(desktop) + margin-top: $spacing-3 + .container + @include media-breakpoint-up(md) + display: flex + justify-content: space-between .essential + @include meta color: $header-color flex-wrap: wrap font-size: $program-essential-font-size margin-bottom: 0 - margin-top: $spacing3 - @include meta + margin-top: 0 @include media-breakpoint-up(desktop) @include grid(6, false, 0) + width: columns(6) font-size: $program-essential-font-size-desktop dt, dd margin: 0 - padding-bottom: $spacing0 - padding-top: $spacing0 + padding-bottom: $spacing-2 + padding-top: $spacing-2 &:last-of-type padding-bottom: 0 dt grid-column: 1/3 - color: $color-text-alt + color: var(--color-text-alt) @include media-breakpoint-down(desktop) padding-bottom: 0 dd @@ -177,11 +185,11 @@ ul.diplomas @include stretched-link(before) position: initial @include media-breakpoint-down(desktop) - margin-right: $spacing0 + margin-right: $spacing-2 &::after align-self: center bottom: unset position: relative - margin-left: half($spacing0) + margin-left: $spacing-1 + p - margin-top: $spacing0 \ No newline at end of file + margin-top: $spacing-2 \ No newline at end of file diff --git a/assets/sass/_theme/sections/events.sass b/assets/sass/_theme/sections/events.sass index c9031b2575d14e8486eeac12d061c7950c1e8168..37842f429c0803c21086bbb9e10d67104fbdb7e2 100644 --- a/assets/sass/_theme/sections/events.sass +++ b/assets/sass/_theme/sections/events.sass @@ -2,7 +2,7 @@ .hero h1 span display: block - color: $color-text-alt + color: var(--color-text-alt) .lead @include h3 // Safe spacing if post is empty @@ -12,6 +12,7 @@ @include media-breakpoint-up(desktop) .document-content min-height: 600px + // Add after element to avoid "min-height" to ignore the last block's margin-bottom &::after content: '' display: block @@ -26,7 +27,7 @@ text-decoration: none @include media-breakpoint-down(desktop) .events - margin-bottom: $spacing2 + margin-bottom: $spacing-4 .archive-link text-align: left @@ -34,18 +35,18 @@ @include list-reset @include media-breakpoint-up(desktop) font-size: $table-body-size-desktop - padding-bottom: $spacing3 + padding-bottom: $spacing-5 .event-date text-transform: capitalize ul @include list-reset > li - padding-top: $spacing0 + padding-top: $spacing-2 &:not(:last-child) - padding-bottom: $spacing0 + padding-bottom: $spacing-2 > span @include meta - color: $color-text-alt + color: var(--color-text-alt) padding-left: 0 display: block white-space: nowrap @@ -55,9 +56,9 @@ padding-right: 0.3rem .events-categories display: flex - gap: space(2) + gap: $spacing-1 a - @include link($color-accent) + @include link(var(--color-accent)) .events-actions align-items: start display: flex @@ -78,10 +79,10 @@ text-decoration: none &-subtitle @include h3 - color: $color-text-alt + color: var(--color-text-alt) &-categories @include meta - margin-top: $spacing0 + margin-top: $spacing-2 span + span &::before content: ', ' @@ -98,15 +99,15 @@ display: inline-flex &::before content: '|' - margin-right: half($spacing0) + margin-right: $spacing-1 .events &--list .event - border-bottom: 1px solid $color-border + border-bottom: 1px solid var(--color-border) display: flex flex-direction: column - margin-bottom: $spacing1 - padding-bottom: $spacing1 + margin-bottom: $spacing-3 + padding-bottom: $spacing-3 position: relative .event-title @include h3 @@ -115,23 +116,23 @@ text-decoration: none &-dates @include h4 - margin-top: half($spacing0) - margin-bottom: half($spacing1) + margin-top: $spacing-1 + margin-bottom: $spacing-2 &-content order: 2 @include media-breakpoint-down(desktop) @include media-breakpoint-up(md) flex-direction: row - gap: $spacing1 + gap: $spacing-3 .media - width: col(4) + width: columns(4) &-content order: 1 - width: col(8) + width: columns(8) @include media-breakpoint-down(md) .media max-width: 33% - margin-bottom: $spacing0 + margin-bottom: $spacing-2 &-content order: 1 @include media-breakpoint-up(md) @@ -139,25 +140,25 @@ grid-column: 10 / 13 @include media-breakpoint-up(desktop) flex-direction: row - gap: $grid-gutter + gap: var(--grid-gutter) align-items: start &-content - width: col(10) > hgroup, > .event-title - margin-bottom: $spacing0 + margin-bottom: $spacing-2 .media order: 2 - width: col(2) @include in-page-without-sidebar + &-content + width: columns(10) &-dates margin-top: 0 order: 0 grid-column: 1 / 5 > span @include h3 - margin-bottom: $spacing1 + margin-bottom: $spacing-3 &-time - margin-top: $spacing0 + margin-top: $spacing-2 @include meta &-content @include grid(10, desktop, 0) @@ -169,13 +170,13 @@ grid-column: 0 / 5 grid-row: 1 / 4 .media - grid-column: 11 / 13 + width: columns(2) @include in-page-with-sidebar @include grid(8) &-content order: 1 grid-column: 6 span - margin-top: half($spacing0) + margin-top: $spacing-1 &-time display: inline &::before @@ -184,7 +185,7 @@ grid-column: 2 span &--grid - @include grid(2, md, $spacing2) + @include grid(2, md, $spacing-4) .event display: flex flex-direction: column @@ -194,14 +195,14 @@ @include stretched-link &-dates @include meta - margin-top: $spacing0 + margin-top: $spacing-2 &-content .event-title, hgroup @include h3 &-description - margin-top: $spacing0 + margin-top: $spacing-2 .media - margin-bottom: $spacing0 + margin-bottom: $spacing-2 order: -1 img aspect-ratio: 1 @@ -210,7 +211,7 @@ @include media-breakpoint-down(md) .event + .event - margin-top: $spacing2 + margin-top: $spacing-4 @include in-page-without-sidebar @include grid(3, desktop) @@ -219,24 +220,24 @@ display: flex flex-direction: row position: relative - grid-gap: $grid-gutter + grid-gap: var(--grid-gutter) + .event - margin-top: $grid-gutter + margin-top: var(--grid-gutter) &-content a @include stretched-link &-dates @include meta - margin-top: $spacing0 + margin-top: $spacing-2 &-content flex: 1 .event-title @include h3 .more @include icon("arrow-right", after) - margin-top: $spacing1 + margin-top: $spacing-3 &::after - margin-left: half($spacing0) + margin-left: $spacing-1 .media order: -1 img @@ -245,10 +246,10 @@ width: 100% @include media-breakpoint-up(desktop) .media - width: col(4, 8) + width: columns(4) &-dates @include h3 - margin-bottom: $spacing2 + margin-bottom: $spacing-4 .event-title, .event-subtitle, hgroup @@ -257,15 +258,21 @@ flex-direction: column grid-gap: 0 .media - margin-left: calc(-#{$grid-gutter-sm} /2) - margin-right: calc(-#{$grid-gutter-sm} /2) + margin-left: var(--grid-gutter-negative) + margin-right: var(--grid-gutter-negative) aspect-ratio: 1 img - margin-bottom: $spacing0 + margin-bottom: $spacing-2 @include in-page-without-sidebar align-items: center &-dates @include h3 + .event-title, + .event-subtitle, + hgroup + @include lead + .media + width: columns(6) &:not(.event--with-image) - width: col(5) + width: columns(5) margin-left: offset(4) diff --git a/assets/sass/_theme/sections/organizations.sass b/assets/sass/_theme/sections/organizations.sass index 0254ddae6be16b2eb3dec191ec167507c36b7d03..cfdf77b8b406f17d481558b6c7e95ff886491d0c 100644 --- a/assets/sass/_theme/sections/organizations.sass +++ b/assets/sass/_theme/sections/organizations.sass @@ -1,5 +1,6 @@ .organization - @include article + display: flex + flex-direction: column position: relative &-title @include meta @@ -8,9 +9,12 @@ text-decoration: none display: block .media - background: $color-background-alt - padding: $spacing1 - margin-bottom: half($spacing0) + @include handle-svg-fit + background: $organization-background-color + margin-bottom: $spacing-2 + order: -1 + overflow: hidden + padding: $spacing-3 picture aspect-ratio: 1 display: block @@ -38,32 +42,32 @@ @include grid(3, lg) @include grid(3, xl) @include media-breakpoint-down(desktop) - grid-column-gap: $spacing1 !important + grid-column-gap: $spacing-3 !important .organizations__section .organizations - margin-top: $spacing2 + margin-top: $spacing-4 .organizations__page .lead font-family: $lead-sidebar-font-family font-weight: $lead-sidebar-weight line-height: $lead-sidebar-line-height - margin-bottom: $spacing1 + margin-bottom: $spacing-3 @include media-breakpoint-up(desktop) font-size: $lead-sidebar-size-desktop .document-content - .logo + .organization-logo figcaption text-align: right @include meta - margin-bottom: $spacing0 + margin-bottom: $spacing-2 picture aspect-ratio: 1/1 - background: $color-background-alt + background: var(--color-background-alt) display: block - padding: $spacing2 - margin-bottom: half($spacing0) + padding: $spacing-4 + margin-bottom: $spacing-1 width: auto img display: block @@ -72,13 +76,13 @@ object-position: center width: 100% .blocks - margin-top: $spacing3 + margin-top: $spacing-5 .contacts-details @include grid(2, md) @include media-breakpoint-down(md) .document-content - .logo - margin-top: $spacing3 + .organization-logo + margin-top: $spacing-5 display: flex justify-content: space-between @include media-breakpoint-up(md) @@ -86,8 +90,8 @@ > .container display: flex justify-content: space-between - gap: $grid-gutter + gap: var(--grid-gutter) [itemprop="articleBody"] - width: col(8) - .logo - width: col(3) + width: columns(8) + .organization-logo + width: columns(3) diff --git a/assets/sass/_theme/sections/pages.sass b/assets/sass/_theme/sections/pages.sass index 05b8d65a1e459ea91615c7d60f7640ffb1ee8d8b..9d26b492e7326588da1f0dbebc2caf59097ca984 100644 --- a/assets/sass/_theme/sections/pages.sass +++ b/assets/sass/_theme/sections/pages.sass @@ -10,4 +10,4 @@ @include grid(3, desktop) .page__children - margin-top: $spacing3 + margin-top: $spacing-5 diff --git a/assets/sass/_theme/sections/papers.sass b/assets/sass/_theme/sections/papers.sass index 9cbed0822fb597044d65044c06b3127522c2a7bc..bc05573a56345b90390064b824745270ef7634a5 100644 --- a/assets/sass/_theme/sections/papers.sass +++ b/assets/sass/_theme/sections/papers.sass @@ -1,102 +1,107 @@ .paper + display: flex + gap: var(--grid-gutter) + flex-direction: column a - text-decoration-color: transparent transition: color 0.3s ease - > div - &:first-of-type - grid-column: 1 / 7 - &.paper-actions - grid-column: 8 / 12 - align-items: start - display: flex - @include media-breakpoint-down(desktop) - flex-wrap: wrap - justify-content: space-between - margin-top: $spacing1 + @extend %underline-on-hover h3 a:hover - color: $color-accent + color: var(--color-accent) .paper-kind @include meta text-transform: uppercase - margin-right: $spacing1 + margin-right: $spacing-3 .paper-volume @include meta text-transform: lowercase a - @include link($color-text) + @include link(var(--color-text)) text-transform: none span text-transform: uppercase +.top + .papers + margin-top: $spacing-3 + .papers @include list-reset - margin-block-start: half($spacing3) + margin-top: $spacing-5 li + li - margin-top: $spacing2 + margin-top: $spacing-4 @include media-breakpoint-up(desktop) - margin-top: $spacing3 + margin-top: $spacing-5 article - @include media-breakpoint-up(desktop) - @include grid + article - margin-top: $spacing2 + margin-top: $spacing-4 @include media-breakpoint-up(desktop) - margin-top: $spacing3 + margin-top: $spacing-5 +.papers__section + .paper-actions + @include media-breakpoint-up(lg) + flex-direction: row + > div:first-of-type + width: columns(7) + .paper-actions + width: columns(5) + button[data-open-modal] + width: columns(2) + figure + width: columns(3) .papers__page @include media-breakpoint-down(desktop) .document-content aside order: 2 - margin-bottom: $spacing3 + margin-bottom: $spacing-5 @include media-breakpoint-up(desktop) .hero .content - > h1, > hgroup + .hero-text width: auto .paper-sidebar > div height: 100% position: relative aside - padding-bottom: $spacing1 + padding-bottom: $spacing-3 .toc-container height: unset @include sticky(-1px) .media - width: col(2, 4) + width: columns(2) .document-content min-height: 100vh .content - margin-bottom: $spacing4 + margin-bottom: $spacing-6 section + section - margin-top: $spacing2 + margin-top: $spacing-4 @include media-breakpoint-up(desktop) - margin-top: $spacing4 + margin-top: $spacing-6 .squared-button margin-bottom: 0 - margin-top: $spacing0 + margin-top: $spacing-2 width: auto h2 - margin-bottom: $spacing0 + margin-bottom: $spacing-2 .paper-essentials h2 @include meta - margin-top: $spacing2 + margin-top: $spacing-4 &:first-of-type margin-top: 0 .paper-body h2 - margin-bottom: $spacing2 + margin-bottom: $spacing-4 .paper-authors h2 @include meta .authors @include grid(2, desktop) article - margin-top: $spacing1 + margin-top: $spacing-3 .name a @include h4 @@ -107,9 +112,9 @@ margin: 0 dt @include meta - margin-bottom: $spacing0 + margin-bottom: $spacing-2 &:not(:first-of-type) - margin-top: $spacing2 + margin-top: $spacing-4 dd:first-of-type a display: flex @@ -142,18 +147,31 @@ padding-left: 0 padding-right: offset(4) +// Actions +.paper-actions + display: flex + align-items: start + gap: var(--grid-gutter) + @include media-breakpoint-down(desktop) + flex-wrap: wrap + gap: $spacing-3 + button.squared-button + @include icon-block(eye, before) + a.squared-button + @include icon-block(download, before) + .citations &:not(:first-child) - margin-top: $spacing3 + margin-top: $spacing-5 > div - margin-top: $spacing1 + margin-top: $spacing-3 @include grid(1) - @include grid(2, md, $spacing1) + @include grid(2, md, $spacing-3) @include media-breakpoint-down(md) - row-gap: $spacing1 + row-gap: $spacing-3 .citation a display: block p @include meta - margin-top: $spacing0 + margin-top: $spacing-2 diff --git a/assets/sass/_theme/sections/persons.sass b/assets/sass/_theme/sections/persons.sass index 2548a808aefbc1b64dffb45156713f68325d6413..e974002ddd117c0e9d5e26178148a333df31a5e4 100644 --- a/assets/sass/_theme/sections/persons.sass +++ b/assets/sass/_theme/sections/persons.sass @@ -1,63 +1,24 @@ -.persons__page - .top - h2 - a - @include icon(arrow-right, after, true) - display: inline-flex - margin-left: half($spacing0) - transition: transform .3s ease - &:hover::after - transform: translateX($spacing0) - // TODO : voir comment gérer les marges comme pour les blocs (pb footer) - section - padding-bottom: $grid-gutter - ol.programs - li - justify-content: flex-start - @include media-breakpoint-up(desktop) - @include grid(2) - @include icon(arrow-right, after, true) - color: inherit - position: absolute - right: 0 - top: $spacing1 - transform: translateY(half($spacing0)) - @include media-breakpoint-up(desktop) - transform: translateY(half($spacing1)) - a - color: inherit - @include stretched-link(before) - @include media-breakpoint-down(desktop) - margin-right: $spacing1 - p - margin-top: unset - &:nth-child(2) - @include small - &:hover - color: $color-accent - .person @include article word-break: break-word - gap: $spacing1 + gap: $spacing-3 .avatar align-self: start flex-shrink: 0 order: -1 - min-width: $spacing3 + min-width: $spacing-5 .name @include h4 a @include stretched-link text-decoration: none + p - margin-top: half($spacing0) + margin-top: $spacing-1 .description @include small - @include media-breakpoint-down(lg) flex-direction: row - gap: $spacing1 + gap: $spacing-3 .avatar align-self: start flex-shrink: 0 @@ -76,7 +37,6 @@ .avatar width: 100% - section.persons, div.persons @include grid(1) @@ -84,20 +44,18 @@ div.persons @include grid(4, lg) @include grid(6, xxl) - - ol.persons--list @include list-reset > li - border-bottom: 1px solid $color-border - padding-bottom: $spacing1 - padding-top: $spacing1 + border-bottom: 1px solid var(--color-border) + padding-bottom: $spacing-3 + padding-top: $spacing-3 position: relative transition: color 0.5s @include icon(arrow, after) margin-left: auto &:hover - color: $color-accent + color: var(--color-accent) justify-self: end a @include stretched-link @@ -110,21 +68,21 @@ ol.persons--list align-items: baseline display: flex [itemprop="name"] - width: col(5) + width: columns(5) [itemprop="jobTitle"] - width: col(6) - margin-left: $grid-gutter + width: columns(6) + margin-left: var(--grid-gutter) @include media-breakpoint-down(desktop) &::after position: absolute right: 0 - top: calc(#{$spacing1} + 10px) + top: calc(#{$spacing-3} + 10px) .avatar // @include aspect-ratio(50, 'img') background-color: $persons-avatar-background-color border-radius: 50% - // margin-bottom: $spacing2 + // margin-bottom: $spacing-4 overflow: hidden position: relative // width: 100% @@ -145,80 +103,114 @@ ol.persons--list @include list-reset li @include media-breakpoint-down(desktop) - margin-bottom: $spacing1 + margin-bottom: $spacing-3 a display: block @include media-breakpoint-up(desktop) display: inline-block - margin-right: $spacing2 + margin-right: $spacing-4 a - @include link - @include link-hovered-underline-only + @extend %underline-on-hover @include meta @include icon(arrow, after) - margin-left: $spacing1 + margin-left: $spacing-3 .persons__section * + .persons - margin-top: $spacing2 + margin-top: $spacing-4 .persons:last-child - padding-bottom: $spacing3 + padding-bottom: $spacing-5 .persons__page .hero - @include media-breakpoint-down(desktop) - padding-bottom: 0 - margin-bottom: $spacing4 - .avatar - width: col(6) - margin-top: $spacing1 - margin-left: auto - transform: translateY(100px) - margin-top: calc(#{$spacing1} - 100px) - @include media-breakpoint-down(sm) - margin-bottom: $spacing4 - .avatar - transform: translateY(18vw) - margin-top: calc(#{$spacing1} - 18vw) - @include media-breakpoint-up(desktop) - .content - align-items: center - display: flex - justify-content: space-between - margin-top: 0 - h1 - margin-bottom: 0 - width: col(8) - .avatar - margin-bottom: 0 - width: col(3) + &--with-image + .hero-text + margin-bottom: $spacing-3 + figure + @extend .avatar + @include media-breakpoint-down(desktop) + .container + margin-bottom: calc(#{columns(2)} + #{$spacing-5}) + figure + width: columns(4) + margin-left: auto + margin-bottom: calc(#{columns(2)} * -1) + @include media-breakpoint-down(md) + .container + margin-bottom: calc(#{columns(3)} + #{$spacing-5}) + figure + width: columns(6) + margin-bottom: calc(#{columns(3)} * -1) + @include media-breakpoint-up(desktop) + .content + align-items: center + display: flex + justify-content: space-between + margin-top: 0 + h1 + margin-bottom: 0 + width: columns(8) + figure + margin-bottom: 0 + width: columns(3) .roles a @include small .blocks - margin-top: $spacing3 + margin-top: $spacing-5 .person-objects + margin-top: $spacing-5 > * + * - margin-top: $spacing3 + margin-top: $spacing-5 + .top h2 a + @include icon(arrow-right, after, true) + display: inline-flex + margin-left: $spacing-1 + transition: transform .3s ease + &:hover::after + transform: translateX($spacing-2) .person-posts article.post:last-child margin-bottom: 0 + section + padding-bottom: $spacing-5 + ol.programs + li + justify-content: flex-start + @include media-breakpoint-up(desktop) + @include grid(2) + @include icon(arrow-right, after, true) + color: inherit + position: absolute + right: 0 + top: 1.5em + a + color: inherit + @include stretched-link(before) + @include media-breakpoint-down(desktop) + margin-right: $spacing-3 + p + margin-top: unset + &:nth-child(2) + @include small + &:hover + color: var(--color-accent) @include media-breakpoint-down(lg) .roles - margin-top: $spacing2 + margin-top: $spacing-4 @include media-breakpoint-up(lg) .informations @include grid - margin-bottom: $spacing2 + margin-bottom: $spacing-4 > div:first-of-type grid-column: 1 / 9 .roles grid-column: 9 / 13 text-align: right .lead + div - margin-top: $spacing2 + margin-top: $spacing-4 .contacts-details ul @include grid(2, md, 0) li margin-top: 0 - margin-bottom: $spacing1 + margin-bottom: $spacing-3 diff --git a/assets/sass/_theme/sections/posts.sass b/assets/sass/_theme/sections/posts.sass index f355c79af5cdb92d0fe489d8299a564425aee078..5c319a79ad3653fca4f326a81ee818a298629a33 100644 --- a/assets/sass/_theme/sections/posts.sass +++ b/assets/sass/_theme/sections/posts.sass @@ -1,25 +1,12 @@ .post - @include article($post-media-background) + @include article time color: $post-time-color display: inline-block vertical-align: middle - .post-categories - @include meta - margin-top: $spacing0 - margin-bottom: $spacing0 - position: relative - display: flex - flex-wrap: wrap - gap: 0 $spacing0 - z-index: 2 - a - @include link($color-accent) - li - margin: 0 .post-author @include meta - color: $color-text-alt + color: var(--color-text-alt) .posts__section, .authors__term, @@ -27,22 +14,22 @@ .persons__page .posts--list article - border-bottom: 1px solid $color-border + border-bottom: 1px solid var(--color-border) display: flex - margin-bottom: $spacing1 - padding-bottom: $spacing1 + margin-bottom: $spacing-3 + padding-bottom: $spacing-3 flex-direction: row [itemprop=headline] + p - margin-top: $spacing0 + margin-top: $spacing-2 @include media-breakpoint-up(desktop) @include grid - margin-bottom: $spacing3 - padding-bottom: $spacing3 + margin-bottom: $spacing-5 + padding-bottom: $spacing-5 .post-content grid-column: 4/13 @include media-breakpoint-down(desktop) flex: 1 - margin-left: $spacing0 + margin-left: $spacing-2 p:not(.title) @include media-breakpoint-down(desktop) display: none @@ -66,15 +53,15 @@ .post-content [itemprop=headline], > p - max-width: col(6, 9) + max-width: columns(6) .posts--grid @include grid(1) @include grid(2, desktop) @include grid($posts-grid-columns, xxl) .post - @include post-time-author-flex + @include author-and-time-side-to-side .post-meta - margin-top: $spacing0 + margin-top: $spacing-2 .posts__page .lead @@ -82,64 +69,20 @@ // Safe spacing if post is empty .document-content min-height: 350px + // Add after element to avoid "min-height" to ignore the last block's margin-bottom + &::after + content: '' + display: block + height: 1px &:not(.full-width) .post-sidebar @include sidebar -.post-categories - @include list-reset - margin: 0 - li - display: inline-block - vertical-align: middle - margin-left: space(2) - &:last-child - &::after - content: none - .post-infos - margin-bottom: 0 - @include meta - @include list-reset - font-size: $table-body-size - @include media-breakpoint-up(desktop) - font-size: $table-body-size-desktop - > li - @include meta - display: flex - gap: $spacing1 - justify-content: space-between - padding-top: $spacing0 - padding-bottom: $spacing0 - border-color: $color-border - &:not(:first-child) - align-items: center - border-top: 1px solid $color-border - > span - @include meta - color: $color-text-alt - padding-left: 0 - white-space: nowrap - vertical-align: top - > ul - text-align: right - flex: 1 - &.social-share - align-items: center - a - @include link($color-accent) - text-align: right - .share - display: block - li - display: inline-block - a - color: inherit - li:last-child - margin-right: -$spacing0 + @include section__page-infos .related - margin-top: $spacing1 + margin-top: $spacing-3 .posts @include grid(2, desktop) margin-bottom: 0 @@ -148,4 +91,4 @@ .authors__term .blocks + .container - margin-top: $spacing3 + margin-top: $spacing-5 diff --git a/assets/sass/_theme/sections/programs.sass b/assets/sass/_theme/sections/programs.sass index 392ce211fd2e3be0f19a24b9b03ac8e0fc2f6136..d2895899dece67290a8aa77ae3c05244e2754557 100644 --- a/assets/sass/_theme/sections/programs.sass +++ b/assets/sass/_theme/sections/programs.sass @@ -13,7 +13,7 @@ ol.programs margin-top: unset white-space: nowrap @include media-breakpoint-up(desktop) - margin-left: $spacing1 + margin-left: $spacing-3 .programs__section .hero-program @@ -21,86 +21,27 @@ ol.programs justify-content: end .container position: relative + &:not(.full-width) .document-content .lead font-family: $lead-font-family + font-size: var(--lead-size) font-weight: $lead-weight - line-height: $lead-line-height - @include media-breakpoint-up(desktop) - font-size: $lead-size-desktop + line-height: var(--lead-line-height) ol.programs - margin-bottom: $spacing3 + margin-bottom: $spacing-5 li line-height: 1 - .dropdown-share - position: relative - > button - @include button-icon(social) - &:after - margin-right: $icon-social-margin-right - color: $hero-color - border-color: $color-border - font-size: $program-share-font-size - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out - &:hover, - &:active, - &:focus - background: $color-background - color: $color-text - // a11y - &:active, - &:focus - box-shadow: inset 0 0 0 0.25rem rgba(white, .5) - @include media-breakpoint-up(desktop) - font-size: $program-share-font-size-desktop - .dropdown-menu - background: $hero-color - border-radius: px2rem(4) - bottom: 0 - padding: 0 - position: absolute - top: 0 - width: 100% - .share - display: flex - align-items: center - height: 100% - li - margin: 0 - flex: 1 1 - text-align: center - a - display: block - color: $hero-background-color - .buttons - @include meta - button, > a - display: flex - align-items: center - justify-content: space-between - width: 100% - border-radius: px2rem(4) - a[download] - @include button-icon(download) - text-decoration: none - color: $hero-background-color - background: $hero-color - border-color: $hero-color - font-size: $program-share-font-size - @include media-breakpoint-up(desktop) - font-size: $program-share-font-size-desktop - - @include media-breakpoint-down(desktop) - margin-top: $spacing1 .document-content - @include media-breakpoint-up(desktop) + .program-summary + margin-bottom: $spacing-5 .lead - padding-bottom: $spacing2 + margin-bottom: $spacing-3 .content - padding-bottom: $spacing2 + padding-bottom: $spacing-4 section:not(.block) > * + * margin-top: 1em .blocks @@ -108,10 +49,9 @@ ol.programs margin-top: 0 @include h3 @include media-breakpoint-down(desktop) - padding-top: $spacing3 - margin-left: half(-$grid-gutter-sm) - margin-right: half(-$grid-gutter-sm) - + padding-top: $spacing-5 + margin-left: var(--grid-gutter-negative) + margin-right: var(--grid-gutter-negative) @include media-breakpoint-up(desktop) .container padding-left: 0 @@ -125,15 +65,17 @@ ol.programs .document-content .content > h2 - margin-bottom: $spacing2 + margin-bottom: $spacing-4 section:not(:first-child):not(.block) - margin-top: $spacing3 + margin-top: $spacing-5 @include media-breakpoint-up(desktop) .document-content + .program-summary + margin-bottom: $spacing-6 .content @include grid(12, desktop) position: relative - padding-bottom: $spacing4 + padding-bottom: $spacing-6 > * grid-column: 5/13 > h2 @@ -146,7 +88,7 @@ ol.programs grid-column: 1/5 margin-bottom: 0 section:not(:first-child):not(.block) - margin-top: $spacing4 + margin-top: $spacing-6 section:first-of-type .content border-top: none @@ -156,12 +98,12 @@ ol.programs font-size: unset line-height: 160% &:first-child - border-top: 1px solid $color-border + border-top: 1px solid var(--color-border) &:last-child - border-bottom: 1px solid $color-border + border-bottom: 1px solid var(--color-border) th @include small - color: $color-text-alt + color: var(--color-text-alt) vertical-align: middle td text-align: right @@ -175,11 +117,11 @@ ol.programs .list-persons @include list-reset > li - border-bottom: 1px solid $color-border + border-bottom: 1px solid var(--color-border) justify-content: flex-start position: relative - padding-bottom: $spacing0 - padding-top: $spacing0 + padding-bottom: $spacing-2 + padding-top: $spacing-2 @include media-breakpoint-up(sm) @include grid(2) a @@ -189,7 +131,7 @@ ol.programs text-decoration: none @include stretched-link(before) @include media-breakpoint-down(desktop) - margin-right: $spacing1 + margin-right: $spacing-3 @include icon(arrow-right, after, true) color: inherit position: absolute @@ -201,13 +143,13 @@ ol.programs margin-top: unset @include small @include media-breakpoint-up(desktop) - margin-right: $spacing1 + margin-right: $spacing-3 @include media-breakpoint-down(sm) display: block &:hover - color: $color-accent + color: var(--color-accent) &:first-child - border-top: 1px solid $color-border + border-top: 1px solid var(--color-border) a p @include small @@ -218,4 +160,4 @@ ol.programs @include icon(arrow, after, true) @include hover-translate-icon @include media-breakpoint-down(desktop) - margin-bottom: $spacing1 \ No newline at end of file + margin-bottom: $spacing-3 \ No newline at end of file diff --git a/assets/sass/_theme/sections/projects.sass b/assets/sass/_theme/sections/projects.sass new file mode 100644 index 0000000000000000000000000000000000000000..fe4c656195c1c7179d25006eeafd0fbef31947ad --- /dev/null +++ b/assets/sass/_theme/sections/projects.sass @@ -0,0 +1,44 @@ +.project + @include article(auto) + +.projects__section, +.projects_categories__term + .projects + @include grid(2, md) + +.projects__page + .hero + .content + align-items: stretch + .hero-text + display: flex + flex-direction: column + gap: $spacing-3 + .project-infos + --color-border: #{$project-infos-border-color} + --color-text: #{$project-infos-color-text} + --color-text-alt: #{$project-infos-color-text-alt} + --color-accent: #{$project-infos-color-accent} + @include media-breakpoint-up(sm) + .hero + .project-infos + width: columns(8) + @include media-breakpoint-up(md) + .hero + .project-infos + width: columns(6) + @include media-breakpoint-up(desktop) + .hero + .content + align-items: stretch + .hero-text + justify-content: space-between + gap: $spacing-5 + width: columns(6) + .project-infos + width: columns(4) + figure + width: columns(6) + +.project-infos + @include section__page-infos \ No newline at end of file diff --git a/assets/sass/_theme/sections/publications.sass b/assets/sass/_theme/sections/publications.sass index 71d210d52e18688d94cb81f918afa0f5193dc1fc..ac9f2ba021257961e81dc46f1248047b602af979 100644 --- a/assets/sass/_theme/sections/publications.sass +++ b/assets/sass/_theme/sections/publications.sass @@ -13,46 +13,51 @@ display: block .publication - border-bottom: 1px solid $color-border - padding-bottom: $spacing0 - padding-top: $spacing0 + border-bottom: 1px solid var(--color-border) + padding-bottom: $spacing-2 + padding-top: $spacing-2 position: relative + @include icon-block(arrow-right, before) + position: absolute + right: 0px a text-decoration: none .publication-title a @include stretched-link(after) &:hover - color: $color-accent - @include icon-block(arrow-right, before) - position: absolute - right: 0px + color: var(--color-accent) .publication-meta @include small - color: $color-text-alt - margin-top: half($spacing0) + color: var(--color-text-alt) + margin-top: $spacing-1 a - color: $color-text-alt + color: var(--color-text-alt) + @include media-breakpoint-down(desktop) + .publication-meta + padding-right: $spacing-4 + &::before + bottom: 0 .publications - margin-top: $spacing3 + margin-top: $spacing-5 .publications-list @include list-reset .publications__section .publication - padding-bottom: $spacing2 - padding-top: $spacing2 + padding-bottom: $spacing-4 + padding-top: $spacing-4 position: relative p - padding-right: $spacing2 + padding-right: $spacing-4 @include media-breakpoint-down(desktop) - padding-right: $spacing2 + padding-right: $spacing-4 a + p - margin-top: $spacing1 + margin-top: $spacing-3 a::before - margin-top: px2rem(-6) + margin-top: pxToRem(-6) .publication-title @include h4 .publication-authors @@ -72,40 +77,40 @@ @include media-breakpoint-up(desktop) grid-column: 1 / 9 .document-sidebar - margin-bottom: $spacing3 + margin-bottom: $spacing-5 @include media-breakpoint-up(desktop) grid-column: 9 / 13 order: 2 [itemprop="author"] + * - margin-top: $spacing1 + margin-top: $spacing-3 .person flex-direction: row align-items: center display: flex - gap: $spacing1 + gap: $spacing-3 .name @include signature .avatar margin-bottom: 0 > * + * - margin-top: $spacing3 + margin-top: $spacing-5 .downloads &:not(:first-child) - margin-top: $spacing3 + margin-top: $spacing-5 nav - margin-top: $spacing1 + margin-top: $spacing-3 @include grid(2, desktop) @include grid(4, xxl) @include media-breakpoint-up(xxl) - grid-gap: $spacing0 $grid-gutter + grid-gap: $spacing-2 var(--grid-gutter) @include media-breakpoint-down(xxl) - grid-gap: $spacing0 + grid-gap: $spacing-2 > a width: 100% display: block @include media-breakpoint-down(desktop) - margin-bottom: $spacing1 + margin-bottom: $spacing-3 .block-siblings-navigation .block-content diff --git a/assets/sass/_theme/sections/sitemap.sass b/assets/sass/_theme/sections/sitemap.sass index f5b664fc2686303266b54ccd0b4f087560b905b1..caee8deb1f948851248b80e9ebbec8b639bbfd91 100644 --- a/assets/sass/_theme/sections/sitemap.sass +++ b/assets/sass/_theme/sections/sitemap.sass @@ -1,3 +1,4 @@ +// C'est vraiment utilisé qqpart ça ? .sitemap__section .content > div @@ -10,4 +11,17 @@ @include media-breakpoint-up(desktop) margin-bottom: 7.5rem li - margin-bottom: 1rem \ No newline at end of file + margin-bottom: 1rem +.block-sitemap + ul + list-style-type: none + li + position: relative + ul + margin-left: $spacing-3 + li + a + @include icon(list-hyphen) + position: absolute + left: pxToRem(-24) + font-size: pxToRem(24) diff --git a/assets/sass/_theme/sections/volumes.sass b/assets/sass/_theme/sections/volumes.sass index 7aac22fbbff105b8a8197b167872cc18c12d693d..2b3d83aa8ccf3d7d7bd92c5824a65d5a6f058b0e 100644 --- a/assets/sass/_theme/sections/volumes.sass +++ b/assets/sass/_theme/sections/volumes.sass @@ -23,9 +23,9 @@ h2 @include meta > div - margin-bottom: $spacing1 + margin-bottom: $spacing-3 @include media-breakpoint-up(desktop) - margin-bottom: $spacing4 + margin-bottom: $spacing-6 .document-aside @include media-breakpoint-up(desktop) grid-column: 9 / 12 @@ -35,20 +35,18 @@ dt @include meta &:not(:first-of-type) - margin-top: $spacing2 + margin-top: $spacing-4 .paper - display: block - @include media-breakpoint-down(desktop) + gap: $spacing-3 + .paper-actions + > * + width: auto + @include media-breakpoint-down(xxl) > div:first-of-type .paper-volume display: inline-flex - margin-left: $spacing0 - @include media-breakpoint-up(desktop) + margin-left: $spacing-2 + @include media-breakpoint-up(xxl) > div:first-of-type .paper-volume - padding-left: $spacing1 - .paper-actions - gap: $grid-gutter - margin-top: $spacing0 - a, button - width: unset \ No newline at end of file + padding-left: $spacing-3 \ No newline at end of file diff --git a/assets/sass/_theme/utils/blocks.sass b/assets/sass/_theme/utils/blocks.sass new file mode 100644 index 0000000000000000000000000000000000000000..7343e4ae3510aee699d508250f1e900ebd75c694 --- /dev/null +++ b/assets/sass/_theme/utils/blocks.sass @@ -0,0 +1,43 @@ +@mixin draggable-block + overflow: hidden + .draggable-container + &:hover + cursor: grab + &.is-grabbing + cursor: grabbing + .draggable-content + margin-left: calc(var(--grid-gutter-negative) / 2) + margin-right: calc(var(--grid-gutter-negative) / 2) + > ul, + > ol + display: flex + flex-flow: row nowrap + list-style: none + padding-left: 0 + transition: margin 0.4s ease-in-out + width: 100% + .draggable-item + flex: none + scroll-snap-align: start + transition: 0.3s opacity + &.is-passed + opacity: 0.15 + pointer-events: none + .actions-arrows + display: flex + margin-left: calc(var(--grid-gutter) / 2) + > button + @include button-reset + background: none + border: none + color: $block-timeline-horizontal-color + cursor: pointer + padding: 0 + &:first-child + @include icon-block(arrow-previous, before) + margin-left: $icon-arrow-previous-margin-left + &:last-child + @include icon-block(arrow-next, before) + &:disabled + cursor: default + opacity: 0.3 \ No newline at end of file diff --git a/assets/sass/_theme/utils/colors.sass b/assets/sass/_theme/utils/colors.sass new file mode 100644 index 0000000000000000000000000000000000000000..0c4d8aebadc48e79c8170a9bfb42b6860bd2288b --- /dev/null +++ b/assets/sass/_theme/utils/colors.sass @@ -0,0 +1,9 @@ +// Les couleurs étant stockées dans des variables CSS, nous utilisons color-mix pour appliquer de l'alpha sur des couleurs en hexa +@function alphaColor($color, $alpha) + $percent: $alpha + @if ($percent <= 1 and $percent > 0) + $percent: $alpha * 100% + @if ($percent == 0) // Permet d'éviter le bug de compilation en production qui renvoie "0" au lieu de "0%" + @return transparent + @else + @return color-mix(in srgb, $color $percent, transparent) diff --git a/assets/sass/_theme/utils/fonts.sass b/assets/sass/_theme/utils/fonts.sass new file mode 100644 index 0000000000000000000000000000000000000000..e6d6815e19878e41ddee6ea273bf9771da250378 --- /dev/null +++ b/assets/sass/_theme/utils/fonts.sass @@ -0,0 +1,23 @@ +// https://gist.github.com/jonathantneal/d0460e5c2d5d7f9bc5e6 +@function str-replace($string, $search, $replace: "") + $index: str-index($string, $search) + @if $index + @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + @return $string + +@mixin font-face($name, $path, $weight: 400, $style: normal, $exts: (eot woff2 woff ttf svg)) + $src: null + $extmods: (eot:"?", svg:"#" + str-replace($name," ","_")) + $formats: (otf: "opentype", ttf: "truetype") + + @each $ext in $exts + $extmod: if(map-has-key($extmods, $ext), $ext + map-get($extmods, $ext), $ext) + $format: if(map-has-key($formats, $ext), map-get($formats, $ext), $ext) + $src: append($src, url(quote("/assets/fonts/" + $path + "." + $extmod)) format(quote($format)), comma,) + + @font-face + font-family: quote($name) + font-style: $style + font-weight: $weight + font-display: swap + src: $src diff --git a/assets/sass/_theme/utils/grid.sass b/assets/sass/_theme/utils/grid.sass new file mode 100644 index 0000000000000000000000000000000000000000..b7d5d2c1ab17f587f327af44ac30c40db72ce0b2 --- /dev/null +++ b/assets/sass/_theme/utils/grid.sass @@ -0,0 +1,39 @@ +@mixin container + margin-left: auto + margin-right: auto + padding-left: var(--grid-gutter) + padding-right: var(--grid-gutter) + width: var(--grid-width) + max-width: 100% + +@function columns($quantity) + $width: calc( (var(--column-width) * #{$quantity}) + var(--grid-gutter) * ( #{$quantity} - 1 )) + @return #{$width} + +@mixin grid($cols: 12, $breakpoint: false, $gap-y: var(--grid-gutter), $gap-x: var(--grid-gutter)) + word-break: break-word + @if $breakpoint + @include media-breakpoint-up($breakpoint) + display: grid + grid-gap: $gap-y $gap-x + grid-template-columns: repeat($cols, 1fr) + @else + display: grid + grid-gap: $gap-y $gap-x + grid-template-columns: repeat($cols, 1fr) + +@mixin flexbox-grid($cols: 12, $gap-y: var(--grid-gutter), $gap-x: $gap-y) + display: flex + flex-wrap: wrap + gap: $gap-y $gap-x + > * + flex: 0 0 calc(#{100 / $cols}% - #{$gap-x} * #{($cols - 1) / $cols} ) + +// Cette fonction retourne un nombre de colonne + une gouttière +@function offset($quantity) + $width: calc( #{columns($quantity)} + var(--grid-gutter) ) + @return #{$width} + +// Cette fonction calcule l'espace disponible entre la grille et le bord de l'écran +@function grid-external-space + @return Max(var(--grid-gutter), calc((100vw - var(--grid-width)) / 2 + var(--grid-gutter))) diff --git a/assets/sass/_theme/utils/icons.sass b/assets/sass/_theme/utils/icons.sass new file mode 100644 index 0000000000000000000000000000000000000000..f453b6df2c8ef22f1938ec748d0eeb1b6d86588d --- /dev/null +++ b/assets/sass/_theme/utils/icons.sass @@ -0,0 +1,48 @@ + +@mixin hover-translate-icon($pseudo: after, $distance: 10) + &::#{$pseudo} + display: inline-block + transition: transform 0.55s $arrow-ease-transition + transform: translateX(0) + &:hover + &::#{$pseudo} + transform: translateX(#{pxToRem($distance)}) + +@mixin icon($icon-name: '', $pseudo-element: before, $non-breaking: false) + &::#{$pseudo-element} + content: map-get($icons, $icon-name) + display: inline-block + font-family: 'Icon' + font-style: normal + font-variant: normal + font-weight: normal + line-height: 1 + speak: never + text-transform: none + vertical-align: middle + @if $non-breaking + content: " #{map-get($icons, $icon-name)}" + display: inline + @content // TODO : important de documenter ça + +@mixin icon-block($icon-name: '', $pseudo-element: before, $non-breaking: false) + @include icon($icon-name, $pseudo-element, $non-breaking) + font-size: pxToRem(44) + display: inline + @content + +@mixin arrow-right-hover + position: relative + display: flex + justify-content: space-between + align-items: center + @include icon(arrow, after) + opacity: 0 + transform: translateX(-20px) + transition: 0.55s $arrow-ease-transition + position: absolute + right: 0 + &:hover + &:after + opacity: 1 + transform: translateX(0) \ No newline at end of file diff --git a/assets/sass/_theme/utils/links.sass b/assets/sass/_theme/utils/links.sass new file mode 100644 index 0000000000000000000000000000000000000000..3059da0003ed7ab0e1f8bbe00b9cdd6bdf8d1c90 --- /dev/null +++ b/assets/sass/_theme/utils/links.sass @@ -0,0 +1,24 @@ +@mixin link($color: $link-color, $unhover_decorated: true) + color: $color + text-decoration-line: underline + text-decoration-thickness: $link-underline-thickness + text-underline-offset: $link-underline-offset + transition: $link-transition + @if $unhover_decorated + text-decoration-color: alphaColor($color, $link-unhover-decoration-color-alpha) + @else + text-decoration-color: transparent + &:hover + text-decoration-color: alphaColor($color, 1) + text-decoration-thickness: $link-underline-thickness + +@mixin stretched-link($pseudo-element: after) + &::#{$pseudo-element} + bottom: 0 + content: '' + left: 0 + position: absolute + right: 0 + top: 0 + z-index: $zindex-stretched-link + diff --git a/assets/sass/_theme/utils/media.sass b/assets/sass/_theme/utils/media.sass new file mode 100644 index 0000000000000000000000000000000000000000..8be361e9b59617051600a66be23c64fa98bae133 --- /dev/null +++ b/assets/sass/_theme/utils/media.sass @@ -0,0 +1,14 @@ + +@mixin aspect-ratio($ratio, $selector: 'iframe', $background: false) + @if $background + aspect-ratio: #{$ratio} + background: $background + #{$selector} + aspect-ratio: #{$ratio} + display: block + width: 100% + +@mixin handle-svg-fit + picture.is-svg + img + object-fit: contain \ No newline at end of file diff --git a/assets/sass/_theme/utils/normalize.sass b/assets/sass/_theme/utils/normalize.sass new file mode 100644 index 0000000000000000000000000000000000000000..3594f4c40314f2883ddeb7e4534007dc9b0928cb --- /dev/null +++ b/assets/sass/_theme/utils/normalize.sass @@ -0,0 +1,32 @@ +@mixin button-reset + appearance: none + background: transparent + border: none + border-radius: 0 + cursor: pointer + user-select: none + &:active, + &:focus + box-shadow: inset 0 0 0 0.25rem alphaColor(var(--color-text), 0.25) + // TODO : vérifier si l'outline 0 est vraiment nécessaire + // outline: 0 + +@mixin list-reset + list-style: none + padding-left: 0 + margin-bottom: 0 + margin-top: 0 + +@mixin inset($top: 0, $right: $top, $bottom: $top, $left: $top) + inset: $top $right $bottom $left + // polyfill for inset + @supports not (inset: $top) + bottom: $bottom + left: $left + right: $right + top: $top + +@mixin browser-under-safari-16 + @media not all and (min-resolution:.001dpcm) + @supports (-webkit-appearance:none) and (display:flow-root) + @content \ No newline at end of file diff --git a/assets/sass/_theme/utils/shame.sass b/assets/sass/_theme/utils/shame.sass new file mode 100644 index 0000000000000000000000000000000000000000..1be170d21d897d77612726d2666090c4d977098b --- /dev/null +++ b/assets/sass/_theme/utils/shame.sass @@ -0,0 +1,190 @@ + +@mixin visually-hidden + clip: rect(0,0,0,0) !important + border: 0 !important + height: 1px !important + margin: -1px !important + overflow: hidden !important + padding: 0 !important + position: absolute !important + white-space: nowrap !important + width: 1px !important + +@mixin author-and-time-side-to-side + .post-meta + display: flex + flex-wrap: wrap + .post-author p::before + content: ' • ' + +// Utilisé pour .post, .project, .page, .person, .program, .volume +@mixin article($aspect-ratio: $article-media-aspect-ratio) + position: relative + display: flex + flex-direction: column + .media + @include handle-svg-fit + margin-bottom: $spacing-3 + order: -1 + overflow: hidden + img + display: block + object-fit: cover + @if $aspect-ratio + aspect-ratio: $aspect-ratio + h2, h3, [itemprop=headline], [itemprop=name] + @include h3 + a + @include stretched-link + display: block + text-decoration: none + p + time + margin-top: $spacing-2 + .post-categories, .project-categories + @include list-reset + @include meta + margin-top: $spacing-2 + margin-bottom: $spacing-2 + position: relative + display: flex + flex-wrap: wrap + gap: 0 $spacing-2 + z-index: 2 + a + @include link(var(--color-accent)) + li + margin: 0 + time + @include meta + color: var(--color-text-alt) + display: block + +@mixin list-section + @include list-reset + > li + border-bottom: 1px solid var(--color-border) + padding-bottom: $spacing-3 + padding-top: $spacing-3 + position: relative + > .title + @include h2 + transition: color 0.55s + @include media-breakpoint-down(desktop) + @include icon(arrow-right, after, true) + bottom: $spacing-2 + position: absolute + right: 0 + @include media-breakpoint-up(desktop) + @include arrow-right-hover + display: block + &::after + transform: translateX(0) + position: relative + &:hover + &::after + transform: translateX($spacing-2) + a + text-decoration: none + &:hover + color: var(--color-accent) + + @include media-breakpoint-down(desktop) + a:nth-child(2) + margin-top: calc(#{$spacing-2} / 2) + a, p + display: block + @include media-breakpoint-up(desktop) + align-items: baseline + display: flex + justify-content: space-between + +@mixin text-underline + text-decoration-color: var(--color-border) + text-decoration-line: underline + text-decoration-thickness: 1px + text-underline-offset: 3px + text-decoration-line: underline + + +@mixin top-flex + @include in-page-without-sidebar + align-items: baseline + display: flex + .block-title + width: columns(4) + &:not(.hidden) + .description + margin-left: var(--grid-gutter) + .description + margin-top: 0 + width: columns(8) + +@mixin collapsed-figcaption + figcaption + @include meta + color: var(--color-text-alt) + position: absolute + display: block + left: 0 + right: 0 + text-align: right + z-index: 10 + &::before + @include meta + content: '©' + position: absolute + right: 0 + top: 0 + background: $hero-background-color + text-align: center + padding: $spacing-1 + display: block + .credit-content + @include meta + background: $hero-background-color + display: none + padding: $spacing-1 + padding-right: $spacing-3 + a + color: inherit + text-decoration-color: inherit + &:focus + .credit-content + display: block + @include media-breakpoint-up(desktop) + &:before + padding-right: 0 + @include media-breakpoint-down(desktop) + position: relative + background: var(--color-background) + &::before + background: transparent + .credit-content + display: block + background: transparent + position: relative + &:hover + figcaption .credit-content + display: block + +@mixin dropdown-i18n + position: relative + .dropdown-menu + margin-top: $header-nav-padding-y + right: 0 + @include media-breakpoint-up(desktop) + padding-left: $spacing-3 + padding-bottom: $spacing-2 + padding-top: $spacing-2 + padding-right: $spacing-3 + li a + padding-bottom: $spacing-1 + padding-top: $spacing-1 + display: block + &.is-checked + display: flex + justify-content: space-between + align-items: center + gap: $spacing-4 + text-decoration: none !important + @include icon(caret, after) + transform: rotate(-14deg) skewX(-30deg) \ No newline at end of file diff --git a/assets/sass/_theme/utils/sidebar.sass b/assets/sass/_theme/utils/sidebar.sass new file mode 100644 index 0000000000000000000000000000000000000000..f82412c80a332579506a57dbbbb95ba1930a1ac4 --- /dev/null +++ b/assets/sass/_theme/utils/sidebar.sass @@ -0,0 +1,116 @@ +@mixin in-page-with-sidebar + @include media-breakpoint-up(desktop) + body:not(.full-width) & + @content + +@mixin in-page-without-sidebar + @include media-breakpoint-up(desktop) + main > .blocks &, + body.full-width &, + @content + +// Use this mixin to override with-aside or without-aside rules +@mixin in-page-with-or-without-sidebar + @include media-breakpoint-up(desktop) + body:not(.full-width) &, + main > .blocks &, + body.full-width &, + @content + +// Aliases +@mixin full-page + @include in-page-without-sidebar + @content + +@mixin not-full-page + @include in-page-with-sidebar + @content + +// Section Program +@mixin in-page-program + .programs__section & + @content + +@mixin sticky($offset-y: 0) + position: sticky + top: $offset-y + @if $header-sticky-enabled + transition: top $header-sticky-transition + html:not(.is-scrolling-down) & + top: calc(var(--header-height) + #{$offset-y}) + +@mixin sidebar($side: start) + @include media-breakpoint-down(desktop) + padding: 0 var(--grid-gutter) + margin-bottom: $spacing-5 + @include media-breakpoint-up(desktop) + @if $side == start + margin-left: grid-external-space() + left: 0 + @else + margin-right: grid-external-space() + right: 0 + margin-top: 0 + top: 0 + height: 100% + position: absolute + width: columns(4) + & > div + @include sticky($spacing-3) + .toc-container + border-top: 1px solid var(--color-border) + padding-top: $spacing-3 + position: static + margin-left: 0 + +// Utilisé dans .post-infos, et project-infos +@mixin section__page-infos + @include meta + @include list-reset + font-size: $table-body-size + margin-bottom: 0 + @include media-breakpoint-up(desktop) + font-size: $table-body-size-desktop + > li + @include meta + display: flex + gap: $spacing-3 + justify-content: space-between + padding-top: $spacing-2 + padding-bottom: $spacing-2 + border-color: var(--color-border) + &:not(:first-child) + align-items: center + border-top: 1px solid var(--color-border) + > span + @include meta + color: var(--color-text-alt) + padding-left: 0 + white-space: nowrap + vertical-align: top + > ul + text-align: right + flex: 1 + &.social-share + align-items: center + a + @include link(var(--color-accent)) + text-align: right + .terms + @include list-reset + margin: 0 + li + display: inline-block + vertical-align: middle + margin-left: $spacing-1 + &:last-child + &::after + content: none + .share + display: block + li + display: inline-block + a + color: inherit + li:last-child + margin-right: -$spacing-2 \ No newline at end of file diff --git a/assets/sass/_theme/utils/sizes.sass b/assets/sass/_theme/utils/sizes.sass new file mode 100644 index 0000000000000000000000000000000000000000..def00899057379d30a738c30c68fc771330b2138 --- /dev/null +++ b/assets/sass/_theme/utils/sizes.sass @@ -0,0 +1,7 @@ +$space-unit: 4 !default +@function space($spaces: 1) + @return #{$spaces * $space-unit / 16}rem + +@function pxToRem($size) + $remSize: $size / 16 + @return #{$remSize}rem diff --git a/bin/osuny.js b/bin/osuny.js index ae7ed8de293f0d9b3f6ca537e5afee5fef6fac59..41860abfd2bb350e3730b631362abc7985bf6b4d 100644 --- a/bin/osuny.js +++ b/bin/osuny.js @@ -20,22 +20,27 @@ console.log(` const command = process.argv[2]; -let pagefindExclude = ` - .administrators__term, - .authors__term, - .categories__taxonomy, .categories__term, - .posts_categories__taxonomy, .posts_categories__term, - .events_categories__taxonomy, .events_categories__term, - .diplomas__taxonomy, .block-diplomas, - .events__section, .block-agenda, - .organizations__section, .block-organizations, - .pages__section, .block-pages, - .persons__section, .block-persons, - .posts__section, .block-posts, .post-sidebar, - .programs__section, .block-programs, - .researchers__term, - .teachers__term - `; +let pagefindExclude = ''; +// Categories: No list of categories +pagefindExclude += '.categories__taxonomy, .categories__term, '; +pagefindExclude += '.posts_categories__taxonomy, .posts_categories__term, '; +pagefindExclude += '.events_categories__taxonomy, .events_categories__term, '; +// Diplomas: No list of diplomas or block diplomas +pagefindExclude += '.diplomas__taxonomy, .block-diplomas, '; +// Agenda events: No list of events or block events +pagefindExclude += '.events__section, .block-agenda, '; +// Organizations: No list of organizations or block organizations +pagefindExclude += '.organizations__section, .block-organizations, '; +// Pages: No block pages (there's no difference between list and page) +pagefindExclude += '.block-pages, '; +// Persons: no list or block +pagefindExclude += '.persons__section, .block-persons, '; +// No list of people's facets +pagefindExclude += '.administrators__term, .authors__term, .researchers__term, .teachers__term,'; +// Posts: no list, block posts, or post sidebar +pagefindExclude += '.posts__section, .block-posts, .post-sidebar, '; +// Programs: no block +pagefindExclude += '.block-programs'; function execute(string) { console.log("OSUNY runs " + string); @@ -54,7 +59,7 @@ if (command === "dev") { if (command === "build") { execute("yarn upgrade"); - execute("hugo"); + execute("hugo --minify"); execute("npm_config_yes=true npx pagefind --site 'public' --exclude-selectors '" + pagefindExclude + "'"); } diff --git a/config.yaml b/config.yaml index 319c75be035609595d677a3bbb20e029096a877a..bb7e4ba5d4b336e5adfb5b3b394f2570860b0b4e 100644 --- a/config.yaml +++ b/config.yaml @@ -1,17 +1,24 @@ params: - debug: false + debug: + active: false + productionUrl: "" keycdn: https://osuny-1b4da.kxcdn.com - cookie_banner: - enable: false - blank: true - page: https://gdpr.eu/cookies/ plausible: false seo: title: separator: "|" + + # DESIGN SYSTEM logo: header: "/assets/images/logo.svg" footer: "/assets/images/logo.svg" + # Handle logo in darkmode with this configuration + # header: + # default: "/assets/images/logo.svg" + # darkmode: "/assets/images/logo-white.svg" + # footer: + # default: "/assets/images/logo.svg" + # darkmode: "/assets/images/logo-white.svg" menu: dropdown: linkToLevel1: false @@ -28,6 +35,8 @@ params: home: toc: disabled: true + + # SECTIONS events: default_image: false date_format: ":date_long" @@ -46,6 +55,7 @@ params: default_image: false index: truncate_description: 200 # Set to 0 to disable truncate + layout: grid # grid | list papers: default_image: false sidebar: @@ -75,9 +85,29 @@ params: email: false telegram: false whatsapp: false + projects: + default_image: false + date_format: "2006" + index: + show_categories: true + show_description: true + show_year: false + truncate_description: 200 # Set to 0 to disable truncate + layout: list # grid | list + share_links: + facebook: true + twitter: true + linkedin: true + email: false + telegram: false + whatsapp: false programs: related_posts: quantity: 4 + volumes: + default_image: false + + # BLOCKS blocks: gallery: splide: @@ -105,7 +135,7 @@ params: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 blocks: call_to_action: mobile: 375 @@ -118,7 +148,11 @@ params: features: mobile: 350 tablet: 400 - desktop: 900 + desktop: 750 + key_figures: + mobile: 100 + tablet: 100 + desktop: 150 image: mobile: 480x850 tablet: 768x1360 @@ -161,21 +195,25 @@ params: mobile: 170 tablet: 350 desktop: 415 + programs: + mobile: 400 + tablet: 800 + desktop: 600 sections: categories: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 hero_term: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 diplomas: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 hero_single: mobile: 351 tablet: 456 @@ -184,25 +222,25 @@ params: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 events: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 hero_single: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 item: mobile: 350 tablet: 450 - desktop: 900 + desktop: 750 organizations: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 logo: mobile: 331 tablet: 196 @@ -215,7 +253,7 @@ params: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 item: mobile: 350 tablet: 990 @@ -224,12 +262,12 @@ params: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 persons: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 hero_single: mobile: 200 tablet: 200 @@ -242,34 +280,47 @@ params: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 hero_single: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 item: mobile: 350 tablet: 450 - desktop: 900 - publications: + desktop: 600 + projects: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 + hero_single: + mobile: 400 + tablet: 800 + desktop: 750 + item: + mobile: 350 + tablet: 450 + desktop: 600 programs: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 image: mobile: 351x168 tablet: 456x219 desktop: 856x410 + publications: + hero: + mobile: 400 + tablet: 800 + desktop: 750 volumes: hero: mobile: 400 tablet: 800 - desktop: 900 + desktop: 750 item: mobile: 327x388 tablet: 208x247 diff --git a/i18n/en.yml b/i18n/en.yml index 6fd7068d1bc737b29117fa46a7e05f8ef87a8fc7..9a27727062e85d747cdee9e6f4fa58d307742660 100644 --- a/i18n/en.yml +++ b/i18n/en.yml @@ -4,7 +4,9 @@ blocks: categories: title: Catégories items: - count: "{{ .Count }} articles" + count: + one: "1 article" + other: "{{ .Count }} articles" chapter: title: Chapter contact: @@ -52,6 +54,7 @@ blocks: play: Play video categories: no_post: No post in this category + no_project: No project in this category see_more: one: See the post other: See the {{ .Count }} posts @@ -128,7 +131,7 @@ commons: read: Read read_online: Read online share: Share - toc: Table of content + toc: Table of contents "yes": "Yes" units: GB: GB @@ -141,12 +144,6 @@ commons: bytes: bytes extensions: PDF: Adobe Portable Document Format -cookie_banner: - accept: Accept - more: Read more - refuse: Refuse - text: This site uses cookies to improve the browsing experience and provide additional functionality. - title: Cookie banner diplomas: type: Type de diplôme events: @@ -226,7 +223,7 @@ posts: next: Next article next_aria: Next article “{{ .Title }}†previous: Previous article - previous_aria: revious article “{{ .Title }}†+ previous_aria: Previous article “{{ .Title }}†reading_time: Reading time see_all: See all posts see_all_in_program: See all program's news @@ -234,6 +231,24 @@ posts: share: Please, share share_aria: Share on “{{ .Title }}†- extern link title: News +projects: + author: Author + category: + one: Category + other: Categories + informations: Informations + next: Next project + next_aria: Next project “{{ .Title }}†+ previous: Previous project + previous_aria: Previous project “{{ .Title }}†+ reading_time: Reading time + see_all: See all posts + see_all_in_program: See all program's projects + see_all_in_category: See all projects in “{{ .Title }}†+ share: Please, share + share_aria: Share on “{{ .Title }}†- extern link + title: Projects + year: Year programs: accessibility: Accessibility administrative_information: Administrative information @@ -278,6 +293,8 @@ publications: citations: Citations stats: label: publications +sitemap: + pages: Arborescence volumes: abstract: Abstract paper: diff --git a/i18n/fr.yml b/i18n/fr.yml index 4b47c0b3a37658a4c8d50b18586a632b26360f62..17d6c2e5abcca6e05de207b9f2f9f4e02f04edec 100644 --- a/i18n/fr.yml +++ b/i18n/fr.yml @@ -54,6 +54,7 @@ blocks: play: Lancer la vidéo categories: no_post: Aucun article dans cette catégorie + no_project: Aucun projet dans cette catégorie see_more: one: Voir l'article other: Voir les {{ .Count }} articles @@ -143,12 +144,6 @@ commons: bytes: octets extentions: PDF: Adobe Portable Document Format -cookie_banner: - accept: Accepter - more: En savoir plus - refuse: Refuser - text: Ce site utilise des cookies pour améliorer l’expérience de navigation et fournir des fonctionnalités supplémentaires. - title: Bandeau cookie diplomas: type: Type de diplôme events: @@ -237,6 +232,24 @@ posts: share: Partager sur share_aria: Partager sur “{{ .Title }}†- lien externe title: Actualités +projects: + author: Auteur·rice + category: + one: Catégorie + other: Catégories + informations: Informations + next: Projet suivant + next_aria: Projet suivant “{{ .Title }}†+ previous: Projet précédent + previous_aria: Projet précédent “{{ .Title }}†+ reading_time: Temps de lecture + see_all: Voir toutes les projets + see_all_in_program: Voir toutes les projets de la formation + see_all_in_category: Voir toutes les projets “{{ .Title }}†+ share: Partager sur + share_aria: Partager sur “{{ .Title }}†- lien externe + title: Projets + year: Année programs: accessibility: Accessibilité administrative_information: Informations administratives @@ -249,6 +262,10 @@ programs: prerequisites: Prérequis presentation: En bref pricing: Tarifs + pricing_initial: Coûts de la formation initiale + pricing_continuing: Coûts de la formation continue + pricing_apprenticeship: Coûts de l'apprentissage + website: Visiter le site web registration: Modalités et délais d’accès roles: Organisation teachers: Enseignants·es @@ -281,6 +298,8 @@ publications: citations: Citations stats: label: publications +sitemap: + pages: Arborescence volumes: abstract: Résumé paper: diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 8eb282a99f0f0ac2d2a2c009d7d82ec3b02f6f6c..2c3c7c85349a60d1da23c04d28a1c390dd0ab8e1 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -27,11 +27,10 @@ {{- partial "hooks/before-main-end" . -}} </main> {{- partial "footer/footer.html" . -}} - {{- partial "footer/cookie-banner.html" . -}} {{- partial "footer/plausible.html" . -}} {{- partial "footer/js.html" . -}} {{- partial "footer/script.html" . -}} - {{- if or (not hugo.IsProduction) site.Params.debug -}} + {{- if or (not hugo.IsProduction) site.Params.debug.active -}} {{- partial "footer/debug.html" . -}} {{- end -}} </body> diff --git a/layouts/events/single.html b/layouts/events/single.html index f1c4debe5ba46368453b5b81f8d8c7e0c242af38..ce11f636202c46779b48340edc07546781baa3e5 100644 --- a/layouts/events/single.html +++ b/layouts/events/single.html @@ -4,8 +4,7 @@ <div class="document-content" itemscope itemtype="https://schema.org/Event"> <meta itemprop="name" content="{{ partial "PrepareHTML" .Title }}"> <meta itemprop="url" content="{{ .Permalink }}"> - {{ with .Params.summary }}<meta itemprop="abstract" content="{{ . | safeHTML }}">{{ end }} - {{ with .Summary }}<meta itemprop="description" content="{{ . | safeHTML }}">{{ end }} + {{ with .Params.summary }}<meta itemprop="description" content="{{ . | safeHTML }}">{{ end }} {{ partial "events/sidebar.html" . }} diff --git a/layouts/pages/sitemap.html b/layouts/pages/sitemap.html index a2ad3c7397483f8f2cdca3b257470e0aac0fb793..4ea6d60c8e476efa7389571a2fb266e28d5dbcce 100644 --- a/layouts/pages/sitemap.html +++ b/layouts/pages/sitemap.html @@ -21,12 +21,32 @@ {{ partial "contents/list.html" . }} + <div class="block block-sitemap" id="pages"> + <div class="container"> + <div class="block-content"> + <h2>{{ i18n "sitemap.pages" }}</h2> + <ul> + {{ range (where .Site.Pages "Type" "pages") }} + {{ if eq .Parent.Path "/pages" }} + <li> + <a href="{{ .Permalink }}">{{ safeHTML .Title }}</a> + {{ if .Pages }} + {{ partial "pages/sitemap_recursive_pages" .}} + {{ end }} + </li> + {{ end }} + {{ end }} + </ul> + </div> + </div> + </div> + {{ range .Site.Sections }} - {{ if ne .Type "sitemap" }} + {{ if and (ne .Type "sitemap") (ne .Type "pages") }} {{ $permalink := .Permalink }} <div class="block block-sitemap" id="{{ .Type }}"> <div class="container"> - <div class="block-content"> + <div class="block-content"> <h2> <a href="{{ $permalink }}">{{ safeHTML .Title }}</a> </h2> @@ -42,5 +62,6 @@ </div> {{ end }} {{ end }} + </div> {{ end }} diff --git a/layouts/partials/GetPaginateTitle b/layouts/partials/GetPaginateTitle index abcc7c46b668c438479cde93c50975611734d203..d5d08365b8b64277e2eede0375b5d9a9541be5ae 100644 --- a/layouts/partials/GetPaginateTitle +++ b/layouts/partials/GetPaginateTitle @@ -2,7 +2,7 @@ {{ $seoTitleSeparator := .separator}} {{ $page := i18n "commons.pagination.title" }} -{{if not .context.IsHome }} +{{if and (not .context.IsHome) (eq .kind "page") }} {{ with .context.Paginator }} {{ if or .HasPrev .HasNext }} {{ $currentPageNumber := .PageNumber}} diff --git a/layouts/partials/PrepareText b/layouts/partials/PrepareText new file mode 100644 index 0000000000000000000000000000000000000000..8dcdc9c0eb60d946ccc88666269397b90fbc54ce --- /dev/null +++ b/layouts/partials/PrepareText @@ -0,0 +1 @@ +{{ return safeHTML . }} diff --git a/layouts/partials/blocks/templates/gallery/carousel.html b/layouts/partials/blocks/templates/gallery/carousel.html index b1b5a396b11049866370b520d64b9a00ce9061f5..0c472729dce6f6e60cab08147a476887d3266fba 100644 --- a/layouts/partials/blocks/templates/gallery/carousel.html +++ b/layouts/partials/blocks/templates/gallery/carousel.html @@ -4,7 +4,7 @@ {{ end }} {{- if $is_carousel }} -<div class="splide" role="group" data-splide="{{ site.Params.blocks.gallery.splide | encoding.Jsonify }}"> +<div class="splide" data-splide="{{ site.Params.blocks.gallery.splide | encoding.Jsonify }}"> <div class="splide__track"> <div class="splide__list"> {{ end -}} @@ -14,21 +14,25 @@ {{- $image := partial "GetMedia" .file -}} {{- if $image -}} <figure {{ if $is_carousel }} class="splide__slide"{{ end }}> + {{ partial "commons/image.html" + (dict + "image" .id + "alt" .alt + "sizes" site.Params.image_sizes.blocks.gallery.carousel + )}} {{ if not site.Params.image_sizes.design_system.lightbox.disabled }} + {{ $lightbox_text := false }} + {{ if and .text .credit }} + {{ $lightbox_text = delimit (slice .text .credit) " / " }} + {{ else }} + {{ $lightbox_text = or .text .credit }} + {{ end }} <a class="glightbox" role="button" - data-glightbox="type: image;{{ if .credit }}description: {{ partial "PrepareHTML" .credit }}{{ end }}" + data-glightbox="type: image;{{ with $lightbox_text }}description: {{ partial "PrepareHTML" . }}{{ end }}" href="{{ partial "GetLightboxUrl" (dict "id" .id) }}" title="{{- i18n "commons.lightbox.link.title" -}}" aria-label="{{- i18n "commons.lightbox.link.title" -}}"> - {{ end }} - {{ partial "commons/image.html" - (dict - "image" .id - "alt" .alt - "sizes" site.Params.image_sizes.blocks.gallery.carousel - )}} - {{ if not site.Params.image_sizes.design_system.lightbox.disabled }} </a> {{ end }} {{ if or .text .credit }} diff --git a/layouts/partials/blocks/templates/gallery/grid.html b/layouts/partials/blocks/templates/gallery/grid.html index 8ffcd8ba278fc2b6b0c43003af0eb6515f1b010f..dc777bd3d947eeaa34ccdce1c58bca0fbe77e800 100644 --- a/layouts/partials/blocks/templates/gallery/grid.html +++ b/layouts/partials/blocks/templates/gallery/grid.html @@ -4,33 +4,31 @@ {{- $has_text = true -}} {{ end -}} {{ end -}} -<div class="gallery{{- if $has_text }} gallery--with-text {{ end -}}" role="group"> +<div class="gallery{{- if $has_text }} gallery--with-text {{ end -}}"> {{ range .images }} {{ if .id }} {{- $image := partial "GetMedia" .id -}} {{- if $image -}} <figure> + {{ partial "commons/image.html" + (dict + "image" .file + "alt" .alt + "sizes" site.Params.image_sizes.blocks.gallery.grid + )}} {{ if not site.Params.image_sizes.design_system.lightbox.disabled }} {{ $lightbox_text := false }} {{ if and .text .credit }} - {{ $lightbox_text = delimit (slice .text .credit) " / " }} - {{ else }} + {{ $lightbox_text = delimit (slice .text .credit) " | " }} + {{ else if or .text .credit }} {{ $lightbox_text = or .text .credit }} {{ end }} <a class="glightbox" role="button" - data-glightbox="type: image;{{ if $lightbox_text }}description: {{ partial "PrepareHTML" $lightbox_text }}{{ end }}" + data-glightbox="type: image; {{ with $lightbox_text }}description: {{ . | safeHTML }}{{ end }}" href="{{ partial "GetLightboxUrl" (dict "id" .id) }}" title="{{- i18n "commons.lightbox.link.title" -}}" aria-label="{{- i18n "commons.lightbox.link.title" -}}"> - {{ end }} - {{ partial "commons/image.html" - (dict - "image" .file - "alt" .alt - "sizes" site.Params.image_sizes.blocks.gallery.grid - )}} - {{ if not site.Params.image_sizes.design_system.lightbox.disabled }} </a> {{ end }} {{ with .text }} diff --git a/layouts/partials/blocks/templates/key_figures.html b/layouts/partials/blocks/templates/key_figures.html index 2451c75b2cc4a6077d1f24b728eed6baa95957d9..33470c53bff1bb36e6cd64f1a2d0543851f75fb6 100644 --- a/layouts/partials/blocks/templates/key_figures.html +++ b/layouts/partials/blocks/templates/key_figures.html @@ -21,7 +21,16 @@ {{- range .figures }} <li> <dl> - <dt><strong>{{ .number }}</strong>{{ partial "PrepareHTML" .unit }}</dt> + <dt> + {{ with .image }} + {{ partial "commons/image.html" + (dict + "image" . + "sizes" site.Params.image_sizes.blocks.key_figures + )}} + {{ end }} + <strong>{{ .number }}</strong>{{ partial "PrepareHTML" .unit }} + </dt> <dd>{{ partial "PrepareHTML" .description }}</dd> </dl> </li> diff --git a/layouts/partials/blocks/templates/pages/list.html b/layouts/partials/blocks/templates/pages/list.html index 0314906c6715a009eeeb5ec398ccc1e117bec5c7..78de5201cf12bb1fd055270cbbb8cd539b678f01 100644 --- a/layouts/partials/blocks/templates/pages/list.html +++ b/layouts/partials/blocks/templates/pages/list.html @@ -7,7 +7,15 @@ )}} <ul class="list {{ if and (not $show_descriptions) (not $show_images) }} title-only {{ end }}"> {{ range .pages }} - {{ $page := site.GetPage .file }} + {{- $file := false -}} + {{/* Check if . is a map or page url, necessary when pages/list is called outside block context */}} + {{ if reflect.IsMap . }} + {{ $file = .file }} + {{ else }} + {{ $file = . }} + {{ end }} + + {{ $page := site.GetPage $file }} {{ with $page }} <li> {{ if or $show_descriptions $show_images }} diff --git a/layouts/partials/blocks/templates/posts/carousel.html b/layouts/partials/blocks/templates/posts/carousel.html new file mode 100644 index 0000000000000000000000000000000000000000..df63993734923de3d7540d0fe99b159564eb0ca0 --- /dev/null +++ b/layouts/partials/blocks/templates/posts/carousel.html @@ -0,0 +1,24 @@ +{{ $heading_level := .heading_level | default 3 }} +{{ $heading := printf "h%d" $heading_level }} + +<div class="carousel draggable-container"> + <div class="carousel-posts draggable-content"> + <ul class="posts"> + {{ range $post := .posts -}} + {{ with site.GetPage (printf "/posts/%s" $post) }} + <li class="draggable-item"> + {{ partial "posts/post.html" (dict + "post" . + "heading" $heading) }} + </li> + {{ end }} + {{ end }} + </ul> + {{ if (gt (len .posts) 0) }} + <div class="actions-arrows"> + <button class="previous" disabled title="{{ i18n "blocks.timeline.previous"}}"></button> + <button class="next" title="{{ i18n "blocks.timeline.next"}}"></button> + </div> + {{ end }} + </div> +</div> diff --git a/layouts/partials/blocks/templates/posts/large.html b/layouts/partials/blocks/templates/posts/large.html index c76b4099268d0bcf105844a2e217d8e847e8ef25..c434aa6606cf8706eff3be0506158ea2354b1bcd 100644 --- a/layouts/partials/blocks/templates/posts/large.html +++ b/layouts/partials/blocks/templates/posts/large.html @@ -2,7 +2,7 @@ {{ $heading_level := .heading_level | default 3 }} {{ $heading_tag := partial "GetHeadingTag" (dict "level" $heading_level - "attributes" "class='post-title'" + "attributes" "class='post-title' itemprop='headline'" )}} {{ $index := .index}} diff --git a/layouts/partials/blocks/templates/programs.html b/layouts/partials/blocks/templates/programs.html index 7170738aedbe15daf0a14c1e71a1d7db52748f09..f534588412f9878c007db95c1f86e972a1713d02 100644 --- a/layouts/partials/blocks/templates/programs.html +++ b/layouts/partials/blocks/templates/programs.html @@ -1,5 +1,10 @@ {{- $block := .block -}} {{- $block_class := partial "GetBlockClass" .block -}} +{{ $heading := .heading | default "h3" }} +{{ $heading_tag := (dict + "open" ((printf "<%s itemprop='name'>" $heading) | safeHTML) + "close" ((printf "</%s>" $heading) | safeHTML) + ) }} {{- with .block.data -}} <div class="{{ $block_class }}"> @@ -10,18 +15,57 @@ "heading_level" $block.ranks.self )}} - <ol class="programs"> - {{- range .programs -}} - <li> + {{- if eq $block.data.layout "grid" -}} + + <div class="programs-grid"> + {{- range .programs -}} {{ $program := site.GetPage (printf "/programs%s" .path) }} - {{- $title := partial "PrepareHTML" $program.Title -}} - <a href="{{ $program.Permalink }}" title="{{ safeHTML (i18n "commons.more_aria" (dict "Title" $title)) }}"> - {{- $title -}} - </a> - </li> - {{ end }} - </ol> + {{ $title := $program.Title | safeHTML }} + <article itemscope itemtype="https://schema.org/EducationalOccupationalProgram"> + <div class="program-content"> + {{ $heading_tag.open }} + <a href="{{ $program.Permalink }}" itemtype="url" title="{{ safeHTML (i18n "commons.more_aria" (dict "Title" $title)) }}"> + {{- $title -}} + </a> + {{ $heading_tag.close }} + + {{ with $program.Params.summary | safeHTML}} + <p itemprop="abstract">{{ . }}</p> + {{ end }} + + <p class="more meta" aria-hidden="true">{{- i18n "commons.more" -}}</p> + </div> + + {{- if $program.Params.image -}} + <div class="media"> + {{- partial "commons/image.html" + (dict + "image" $program.Params.image + "sizes" site.Params.image_sizes.blocks.programs + ) -}} + </div> + {{- end -}} + + </article> + {{ end }} + </div> + + {{- else -}} + + <ol class="programs"> + {{- range .programs -}} + <li> + {{ $program := site.GetPage (printf "/programs%s" .path) }} + {{- $title := partial "PrepareHTML" $program.Title -}} + <a href="{{ $program.Permalink }}" title="{{ safeHTML (i18n "commons.more_aria" (dict "Title" $title)) }}"> + {{- $title -}} + </a> + </li> + {{ end }} + </ol> + + {{- end -}} </div> </div> </div> -{{- end -}} +{{- end -}} \ No newline at end of file diff --git a/layouts/partials/blocks/templates/projects.html b/layouts/partials/blocks/templates/projects.html new file mode 100644 index 0000000000000000000000000000000000000000..126f09b24cd66b91c59e46592744c996b09f954e --- /dev/null +++ b/layouts/partials/blocks/templates/projects.html @@ -0,0 +1,22 @@ +{{- $block := .block -}} +{{- $block_title := .block.title -}} +{{- $block_class := partial "GetBlockClass" .block -}} +{{- $layout := "grid" -}} + +{{- with .block.data -}} + <div class="{{ $block_class }}"> + <div class="container"> + <div class="block-content"> + {{ partial "blocks/top.html" (dict + "title" $block_title + "heading_level" $block.ranks.self + ) }} + + {{- partial (printf "blocks/templates/projects/%s.html" $layout) (dict + "projects" .projects + "heading_level" $block.ranks.children + ) }} + </div> + </div> + </div> +{{- end -}} diff --git a/layouts/partials/blocks/templates/projects/grid.html b/layouts/partials/blocks/templates/projects/grid.html new file mode 100644 index 0000000000000000000000000000000000000000..23ccf769a376c88b7d98e41a92aed02d1e75887f --- /dev/null +++ b/layouts/partials/blocks/templates/projects/grid.html @@ -0,0 +1,12 @@ +{{ $heading_level := .heading_level | default 3 }} +{{ $heading := printf "h%d" $heading_level }} +<div class="grid"> + {{ range $project := .projects -}} + {{ with site.GetPage .file }} + {{ partial "projects/project.html" (dict + "project" . + "heading" $heading + ) }} + {{ end }} + {{ end }} +</div> diff --git a/layouts/partials/blocks/templates/projects/list.html b/layouts/partials/blocks/templates/projects/list.html new file mode 100644 index 0000000000000000000000000000000000000000..70667caeaa211375bdcdfc771353dbe57f2bbaf9 --- /dev/null +++ b/layouts/partials/blocks/templates/projects/list.html @@ -0,0 +1,12 @@ +{{ $heading_level := .heading_level | default 3 }} +{{ $heading := printf "h%d" $heading_level }} +<div class="list"> + {{ range $project := .projects -}} + {{ with site.GetPage .file }} + {{ partial "projects/project.html" (dict + "project" . + "heading" $heading + ) }} + {{ end }} + {{ end }} +</div> diff --git a/layouts/partials/blocks/templates/timeline/horizontal.html b/layouts/partials/blocks/templates/timeline/horizontal.html index d029f0918ec243f4c7170b778dfb1699ddee3e72..f01f6a60a07b1f03aa4858cce20e5d0dd9165299 100644 --- a/layouts/partials/blocks/templates/timeline/horizontal.html +++ b/layouts/partials/blocks/templates/timeline/horizontal.html @@ -4,13 +4,12 @@ "attributes" "class='title'" ) -}} -<div class="timeline"> +<div class="timeline draggable-container"> {{ with .block.data }} - <div class="timeline-events"> + <div class="timeline-events draggable-content"> <ol> {{ range .events }} - <li class="timeline-event"> - + <li class="timeline-event draggable-item"> {{ $heading_tag.open -}} {{ .title | safeHTML }} {{ $heading_tag.close -}} @@ -20,7 +19,7 @@ {{ end }} </ol> {{ if (gt (len .events) 0) }} - <div class="timeline-arrows"> + <div class="actions-arrows"> <button class="previous" disabled title="{{ i18n "blocks.timeline.previous"}}"></button> <button class="next" title="{{ i18n "blocks.timeline.next"}}"></button> </div> diff --git a/layouts/partials/commons/image-default.html b/layouts/partials/commons/image-default.html index abd7e74a470b26a0083fb97255dd9b24deceb233..302c39f770dae54aded02bcfa11b25aac74397ed 100644 --- a/layouts/partials/commons/image-default.html +++ b/layouts/partials/commons/image-default.html @@ -1,15 +1,15 @@ -{{ $section_type := .}} -{{ $use_default := (index site.Params $section_type).default_image}} -{{ $image := site.Data.website.default_image }} +{{ $section_type := . }} +{{ $use_default := (index site.Params $section_type).default_image }} +{{ $image := index site.Data.website.default "image" }} {{ if and $use_default $image }} {{ with index site.Params.image_sizes.sections $section_type }} - {{ $sizes := .items }} + {{ $sizes := .item }} {{- partial "commons/image.html" - (dict - "image" $image - "sizes" $sizes - ) -}} + (dict + "image" $image + "sizes" $sizes + ) -}} {{ end }} -{{ end }} \ No newline at end of file +{{ end }} diff --git a/layouts/partials/commons/image.html b/layouts/partials/commons/image.html index a88fbe2a45d99fff354c76dc3848f9a4607bedc7..6336a732e6d87fded2ea263d6c834657eddd0c1c 100644 --- a/layouts/partials/commons/image.html +++ b/layouts/partials/commons/image.html @@ -24,69 +24,59 @@ {{- if .crop -}} {{- $crop = true -}} {{- end -}} - {{ $desktop := .desktop }} - {{ $tablet := .tablet }} - {{ $mobile := .mobile }} - {{- if .sizes -}} - {{ $desktop = .sizes.desktop }} - {{ $tablet = .sizes.tablet }} - {{ $mobile = .sizes.mobile }} - {{- end -}} {{ $is_svg := strings.HasSuffix $image.name "svg" }} <picture {{ if $is_svg }}class="is-svg"{{ end }}> {{- if strings.HasSuffix $image.name "svg" -}} <img src="{{ partial "GetImageUrl" (dict "url" $url) }}" - alt="{{ chomp (plainify $alt) }}" - {{ if $width }}width="{{ $width }}"{{ end }} - {{ if $height }}height="{{ $height }}"{{ end }} - {{- if .class }} class="{{ .class }}"{{- end -}} - {{- if $lazy }} loading="lazy"{{- end -}} - {{- if .itemprop }} itemprop="image"{{- end -}} - > + alt="{{ chomp (plainify $alt) }}" + {{ if $width }}width="{{ $width }}"{{ end }} + {{ if $height }}height="{{ $height }}"{{ end }} + {{- if .class }} class="{{ .class }}"{{- end -}} + {{- if $lazy }} loading="lazy"{{- end -}} + {{- if .itemprop }} itemprop="image"{{- end -}} + > {{- else -}} - {{ with $desktop -}} - <source srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "crop" $crop ) }}, - {{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "scale" 2 "crop" $crop) }} 2x" - media="(min-width: 1024px)" type="image/webp"> - {{- end }} - {{ with $tablet -}} - <source srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "crop" $crop) }}, - {{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "scale" 2 "crop" $crop) }} 2x" - media="(min-width: 768px)" type="image/webp"> - {{- end }} - {{ with $mobile -}} - <source srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "crop" $crop) }}, - {{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "scale" 2 "crop" $crop) }} 2x" - type="image/webp"> + {{ with .sizes.desktop -}} + <source media="(min-width: 1024px)" + type="image/webp" + srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "crop" $crop ) }}, + {{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "scale" 2 "crop" $crop) }} 2x"> + <source media="(min-width: 1024px)" + srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "crop" $crop ) }}, + {{ partial "GetImageUrl" (dict "url" $url "size" . "scale" 2 "crop" $crop) }} 2x"> {{- end }} - {{ with $desktop -}} - <source srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "crop" $crop ) }}, - {{ partial "GetImageUrl" (dict "url" $url "size" . "scale" 2 "crop" $crop) }} 2x" - media="(min-width: 1024px)"> - {{- end }} - {{ with $tablet -}} - <source srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "crop" $crop ) }}, - {{ partial "GetImageUrl" (dict "url" $url "size" . "scale" 2 "crop" $crop) }} 2x" - media="(min-width: 768px)"> + + {{ with .sizes.tablet -}} + <source media="(min-width: 768px)" + type="image/webp" + srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "crop" $crop) }}, + {{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "scale" 2 "crop" $crop) }} 2x"> + <source media="(min-width: 768px)" + srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "crop" $crop ) }}, + {{ partial "GetImageUrl" (dict "url" $url "size" . "scale" 2 "crop" $crop) }} 2x"> {{- end }} - {{ with $mobile -}} - <source srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "crop" $crop ) }}, - {{ partial "GetImageUrl" (dict "url" $url "size" . "scale" 2 "crop" $crop) }} 2x"> + + {{ with .sizes.mobile -}} + <source type="image/webp" + srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "crop" $crop) }}, + {{ partial "GetImageUrl" (dict "url" $url "size" . "format" "webp" "scale" 2 "crop" $crop) }} 2x"> + <source srcset="{{ partial "GetImageUrl" (dict "url" $url "size" . "crop" $crop ) }}, + {{ partial "GetImageUrl" (dict "url" $url "size" . "scale" 2 "crop" $crop) }} 2x"> {{- end }} - <img src="{{ partial "GetImageUrl" (dict "url" $url "size" $default "crop" $crop ) }}" - alt="{{ chomp (plainify $alt) }}" - width="{{ $width }}" - height="{{ $height }}" - {{- if .class }} class="{{ .class }}"{{- end -}} - {{- if $lazy }} loading="lazy"{{- end -}} - {{- if .itemprop }} itemprop="image"{{- end -}} - > + <img src="{{ partial "GetImageUrl" (dict "url" $url "size" $default "crop" $crop ) }}" + alt="{{ chomp (plainify $alt) }}" + width="{{ $width }}" + height="{{ $height }}" + {{- if .class }} class="{{ .class }}"{{- end -}} + {{- if $lazy }} loading="lazy"{{- end -}} + {{- if .itemprop }} itemprop="image"{{- end -}}> {{- end -}} + </picture> {{- end -}} -{{- end -}} +{{- end -}} \ No newline at end of file diff --git a/layouts/partials/commons/logo.html b/layouts/partials/commons/logo.html new file mode 100644 index 0000000000000000000000000000000000000000..8fb88532d8784c3054596b51da77163317e4b5c2 --- /dev/null +++ b/layouts/partials/commons/logo.html @@ -0,0 +1,22 @@ +{{ $logo := . }} +{{ $file := false}} +{{ $file_darkmode := false }} +{{ if eq (printf "%T" $logo) "string" }} + {{ $file = $logo }} +{{ else }} + {{ $file = $logo.default }} + {{ $file_darkmode = $logo.darkmode }} +{{ end }} + +<a class="logo {{- if $file_darkmode }} with-darkmode {{ end -}}" href="{{ site.Home.Permalink }}"> + {{ if $file }} + {{ $fileDimensions := partial "GetImageDimensions" (dict "context" . "file" $file "static" true) }} + <img src="{{ $file }}" alt="{{ site.Title }}" height="{{ index $fileDimensions 1 }}" width="{{ index $fileDimensions 0 }}"> + {{ if $file_darkmode }} + {{ $fileDimensions := partial "GetImageDimensions" (dict "context" . "file" $file_darkmode "static" true) }} + <img class="logo-darkmode" src="{{ $file_darkmode }}" alt="{{ site.Title }}" height="{{ index $fileDimensions 1 }}" width="{{ index $fileDimensions 0 }}"> + {{ end }} + {{ else }} + <span class="logo-text">{{ site.Title }}</span> + {{ end }} +</a> \ No newline at end of file diff --git a/layouts/partials/commons/pagination.html b/layouts/partials/commons/pagination.html index 8769cb92df6e931c4cf8f73d0a58a621b134f5a1..8bfc1e658433d32e45cd87c20ed1509fd19b1ad7 100644 --- a/layouts/partials/commons/pagination.html +++ b/layouts/partials/commons/pagination.html @@ -1,7 +1,7 @@ {{- $paginator := .Paginator -}} <!-- Number of links either side of the current page. --> -{{- $adjacent_links := 2 -}} +{{- $adjacent_links := 1 -}} <!-- $max_links = ($adjacent_links * 2) + 1 --> {{- $max_links := (add (mul $adjacent_links 2) 1) -}} diff --git a/layouts/partials/diplomas/essential.html b/layouts/partials/diplomas/essential.html index 2f83ffad344502b63f05ccfd6f3402a52f84cdd9..63ee13a5a7130c9029a27ea1bf396ed924984bab 100644 --- a/layouts/partials/diplomas/essential.html +++ b/layouts/partials/diplomas/essential.html @@ -1,16 +1,18 @@ -{{- with . -}} - <dl class="essential"> - {{- if .Params.level -}} - <dt>{{ i18n "programs.level" }}</dt> - <dd>{{ partial "PrepareHTML" .Params.level }}</dd> - {{- end -}} - {{- if .Params.duration -}} - <dt>{{ i18n "programs.duration" }}</dt> - <dd>{{ partial "PrepareHTML" .Params.duration }}</dd> - {{- end -}} - {{- if .Params.ects -}} - <dt>{{ i18n "programs.ects_credits" }}</dt> - <dd>{{ partial "PrepareHTML" .Params.ects }}</dd> - {{- end -}} - </dl> -{{- end -}} +<div class="essential-container" id="#{{ urlize (i18n "programs.toc.essential") }}"> + <div class="container"> + <dl class="essential"> + {{- if .Params.level -}} + <dt>{{ i18n "programs.level" }}</dt> + <dd>{{ partial "PrepareHTML" .Params.level }}</dd> + {{- end -}} + {{- if .Params.duration -}} + <dt>{{ i18n "programs.duration" }}</dt> + <dd>{{ partial "PrepareHTML" .Params.duration }}</dd> + {{- end -}} + {{- if .Params.ects -}} + <dt>{{ i18n "programs.ects_credits" }}</dt> + <dd>{{ partial "PrepareHTML" .Params.ects }}</dd> + {{- end -}} + </dl> + </div> +</div> \ No newline at end of file diff --git a/layouts/partials/diplomas/hero-single.html b/layouts/partials/diplomas/hero-single.html index c45f7fb492f4beff68e818d18d512630ca48d1ca..b6b5481cdd7bd4a0dbb4764e514b5f8a9c3133dc 100644 --- a/layouts/partials/diplomas/hero-single.html +++ b/layouts/partials/diplomas/hero-single.html @@ -1,60 +1,9 @@ -{{- $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero" -}} {{- $title := or .Params.header_text .Title -}} -{{ $subtitle := "" }} -{{- $summary := .Params.summary | safeHTML -}} -{{ if and (eq site.Params.summary.position "hero") $summary }} - {{ $subtitle = $summary }} -{{ end }} - -<header class="hero {{ if $breadcrumb_is_after_hero -}} hero--no-margin {{- end }}"> - <div class="container"> - {{- if eq site.Params.breadcrumb.position "hero-start" -}} - {{- if .Params.breadcrumb | default true -}} - {{ partial "header/breadcrumbs.html" . }} - {{- end -}} - {{- end -}} - <div class="content"> - {{- if $subtitle -}} - <hgroup> - <h1>{{ partial "PrepareHTML" $title }}</h1> - <p class="lead">{{ partial "PrepareHTML" $subtitle }}</p> - </hgroup> - {{- else -}} - <h1>{{ partial "PrepareHTML" $title }}</h1> - {{- end -}} - {{- if .Params.image }} - <figure> - {{ partial "commons/image.html" - (dict - "image" .image - "sizes" site.Params.image_sizes.sections.diplomas.hero_single - ) }} - {{ if .image.credit }} - <figcaption> - {{- partial "PrepareHTML" .image.credit -}} - </figcaption> - {{ end }} - </figure> - {{ end -}} - </div> - </div> - <div class="essential-container" id="#{{ urlize (i18n "programs.toc.essential") }}"> - <div class="container"> - {{- partial "diplomas/essential" . -}} - </div> - </div> - - {{- if eq site.Params.breadcrumb.position "hero-end" -}} - {{- if .Params.breadcrumb | default true -}} - {{ partial "header/breadcrumbs.html" . }} - {{- end -}} - {{- end -}} -</header> - -{{- if $breadcrumb_is_after_hero -}} - {{- if .Params.breadcrumb | default true -}} - <div class="container breadcrumb-container"> - {{ partial "header/breadcrumbs.html" . }} - </div> - {{- end -}} -{{- end -}} \ No newline at end of file +{{ partial "header/hero.html" + (dict + "title" $title + "image" .Params.image + "sizes" site.Params.image_sizes.sections.home.hero + "context" . + "hero_complement" "diplomas/essential.html" + )}} diff --git a/layouts/partials/footer/cookie-banner.html b/layouts/partials/footer/cookie-banner.html deleted file mode 100644 index 9e70b81c0464933655c3db54bd58442f45108e9e..0000000000000000000000000000000000000000 --- a/layouts/partials/footer/cookie-banner.html +++ /dev/null @@ -1,14 +0,0 @@ -{{ if site.Params.cookie_banner.enable }} - <div class="gdpr-cookie-consent js-gdpr-cookie-consent" tabindex="-1" role="dialog" aria-label="{{ i18n "cookie_banner.label" }}"> - <div> - <p> - {{ i18n "cookie_banner.text" }} - <a href="{{ site.Params.cookie_banner.page | default "https://gdpr.eu/cookies/" }}"{{ if site.Params.cookie_banner.blank }} target="_blank" ref="noopener"{{ end }}>{{ i18n "cookie_banner.more" }}</a> - </p> - </div> - <div role="group"> - <button type="button" class="js-gdpr-cookie-consent-btn-ok">{{ i18n "cookie_banner.accept" }}</button> - <button type="button" class="js-gdpr-cookie-consent-btn-ko">{{ i18n "cookie_banner.refuse" }}</button> - </div> - </div> -{{ end }} diff --git a/layouts/partials/footer/debug.html b/layouts/partials/footer/debug.html index fb2fa584fa76cbd6ef6d3f389a1d8cf826751aa5..ed9ccda3fa809a7848866fb727fb1f5c00dcfcae 100644 --- a/layouts/partials/footer/debug.html +++ b/layouts/partials/footer/debug.html @@ -1,3 +1,37 @@ +<div class="d-help"> + <a href="#help"> + <img src="/osuny/icon.png" alt="Aide Osuny" class="d-help__icon" /> + </a> + <div class="d-help__content" id="help"> + <table> + <thead> + <tr> + <th>Action</th> + <th>Raccourci</th> + </tr> + </thead> + <tbody> + <tr> + <td>Afficher la grille</td> + <td>Ctrl + g</td> + </tr> + <tr> + <td>Passer d’une page pleine largeur à une page avec barre latérale, et inversement</td> + <td>Ctrl + w</td> + </tr> + <tr> + <td>Contrôler les dimensions des images chargées</td> + <td>Ctrl + i</td> + </tr> + <tr> + <td>Ouvre la page en production, si dans config.yaml debug.productionUrl est spécifié</td> + <td>Ctrl + p</td> + </tr> + </tbody> + </table> + </div> +</div> + <div class="d-grid"> <div>1</div> <div>2</div> @@ -14,16 +48,37 @@ </div> <div class="d-spacing"> - <div><span>0 (12px) </span></div> - <div><span>1 (24px) </span></div> - <div><span>2 (48px) </span></div> - <div><span>3 (64px) </span></div> - <div><span>4 (128px) </span></div> - <div><span>5 (256px) </span></div> + <div><span>1 (8px) </span></div> + <div><span>2 (12px) </span></div> + <div><span>3 (24px) </span></div> + <div><span>4 (48px) </span></div> + <div><span>5 (64px) </span></div> + <div><span>6 (128px) </span></div> + <div><span>7 (256px) </span></div> </div> <div class="d-cross"></div> <style> + .d-help__content { + display: none; + background: #EEEEEE; + border-radius: 24px; + position: fixed; + width: 600px; + bottom: 10px; + left: 10px; + padding: 10px 20px 60px; + } + .d-help__content:target { + display: block; + } + .d-help__icon { + bottom: 10px; + left: 10px; + position: fixed; + width: 40px; + z-index: 1000; + } .d-grid { bottom: 0; display: none; @@ -49,10 +104,6 @@ } .d-grid > div { background: fuchsia; - /* - border-left: 1px solid yellow; - border-right: 1px solid yellow; - */ text-align: center; } .d-spacing { @@ -63,8 +114,7 @@ left: 0; pointer-events: none; width: 100%; - mix-blend-mode: difference; - opacity: 0.3; + opacity: 0.5; font-family: sans-serif; font-size: 12px; } @@ -76,35 +126,39 @@ } .d-spacing > div span { position: absolute; + color: var(--color-text); } .d-spacing > div { width: 100%; - border-bottom: 1px solid white; + border-bottom: 1px solid var(--color-text);; display: block; color: white; text-indent: 5px; } .d-spacing > div:nth-child(1){ border-top: 1px solid white; - height: var(--spacing0); + height: var(--spacing-1); } .d-spacing > div:nth-child(1) span{ margin-top: -10px; } .d-spacing > div:nth-child(2){ - height: var(--spacing1); + height: var(--spacing-2); } .d-spacing > div:nth-child(3){ - height: var(--spacing2); + height: var(--spacing-3); } .d-spacing > div:nth-child(4){ - height: var(--spacing3); + height: var(--spacing-4); } .d-spacing > div:nth-child(5){ - height: var(--spacing4); + height: var(--spacing-5); } .d-spacing > div:nth-child(6){ - height: var(--spacing5); + height: var(--spacing-6); + } + .d-spacing > div:nth-child(7){ + height: var(--spacing-7); } .d-cross { position: fixed; @@ -190,6 +244,9 @@ if (e.ctrlKey && e.key === 'i') { showImageDimension(); } + if (e.ctrlKey && e.key === 'p') { + openInProd(); + } }); window.addEventListener('pointermove', e => { @@ -217,16 +274,17 @@ parent = img.parentElement, pixelRatio = window.devicePixelRatio, dimensions = { - width: img.naturalWidth * pixelRatio, - height: img.naturalHeight * pixelRatio + width: Math.round(img.naturalWidth * pixelRatio), + height: Math.round(img.naturalHeight * pixelRatio) }, target = { - width: img.width * window.devicePixelRatio, - height: img.height * window.devicePixelRatio + width: Math.round(img.width * window.devicePixelRatio), + height: Math.round(img.height * window.devicePixelRatio) }, essential = -`<b>Loaded</b> : ${dimensions.width}x${dimensions.height}\n -<b>Needed</b> : ${target.width}x${target.height}`, +`<b>Loaded</b> : ${dimensions.width}x${dimensions.height}<br> +<b>Needed</b> : ${target.width}x${target.height}<br> +<b>Ideal config</b> : ${target.width / pixelRatio}x${target.height / pixelRatio}` result =` Rendered size: ${img.width}x${img.height} Intrinsic size: ${dimensions.width}x${dimensions.height} @@ -238,7 +296,7 @@ p.innerHTML = essential p.append(small); p.classList.add('img-debug'); - const ratio = getImageRatio(dimensions, target) + const ratio = getImageWidthRatio(dimensions, target); if (ratio > threshold) { p.classList.add('is-bad'); } else { @@ -258,10 +316,23 @@ }); } + function getImageWidthRatio(source, target) { + return Math.abs((source.width - target.width) / Math.max(source.width, target.width)); + } + function getImageRatio(source, target) { const widthRatio = Math.abs((source.width - target.width) / Math.max(source.width, target.width)), heightRatio = Math.abs((source.height - target.height) / Math.max(source.height, target.height)); return (widthRatio + heightRatio) / 2; } + + function openInProd() { + // To use this debug method, add params.productionUrl key to your hugo config.yaml + const productionUrl = '{{ index site.Params.debug "productionUrl" }}'; + if (productionUrl) { + window.open(`${productionUrl}${window.location.pathname}`); + } + } + </script> \ No newline at end of file diff --git a/layouts/partials/footer/logo.html b/layouts/partials/footer/logo.html index 36e19f1aee1b66c0f92bb64f79c67eacae650c24..3331b60e50b592a54724758d72c1b8b3ad84c20d 100644 --- a/layouts/partials/footer/logo.html +++ b/layouts/partials/footer/logo.html @@ -1,3 +1 @@ -{{ $file := site.Params.logo.footer }} -{{ $fileDimensions := partial "GetImageDimensions" (dict "context" . "file" $file "static" true) }} -<a class="logo" href="{{ site.Home.Permalink }}"><img src="{{ $file }}" alt="{{ site.Title }}" height="{{ index $fileDimensions 1 }}" width="{{ index $fileDimensions 0 }}" loading="lazy"></a> +{{ partial "commons/logo.html" site.Params.logo.footer }} \ No newline at end of file diff --git a/layouts/partials/footer/site.html b/layouts/partials/footer/site.html index 103d713883f73aeb233f491f6f1f8858d3846b95..1aacecf9be33f7dbd06f66f7572e7360969c4674 100644 --- a/layouts/partials/footer/site.html +++ b/layouts/partials/footer/site.html @@ -1,47 +1,49 @@ +{{ $logo := site.Params.logo.header }} + {{- with site.Data.school -}} -<address itemscope itemtype="https://schema.org/CollegeOrUniversity"> - <meta itemprop="image" content="/assets/images/logo.svg"> - <p itemprop="name">{{ htmlUnescape (trim .name "\n") }}</p> - {{ if or (.address) (.country) -}} - <p itemprop="address" itemscope itemtype="https://schema.org/PostalAddress"> - {{ if .address }}<span itemprop="streetAddress">{{ trim .address "\n" }}</span><br>{{ end }} - {{ if .zipcode }}<span itemprop="postalCode">{{ trim .zipcode "\n" }}</span> {{ end }}{{ if .city }}<span itemprop="addressLocality">{{ trim .city "\n" }}</span>{{ end }} - {{ if .country }}<span itemprop="addressCountry">{{ trim .country "\n" }}</span>{{ end }} - </p> - {{ end }} - {{- if .phone -}} - <p> - {{- $phone := trim .phone "\n " -}} - {{- $phone_href := replace $phone " " "" -}} - <a itemprop="telephone" href="tel:{{ $phone_href }}">{{ $phone }}</a> - </p> - {{- end }} -</address> + <div itemscope itemtype="https://schema.org/CollegeOrUniversity"> + <meta itemprop="logo" content="{{ $logo }}"> + <p itemprop="name">{{ htmlUnescape (trim .name "\n") }}</p> + {{ if or (.address) (.country) -}} + <address itemprop="address" itemscope itemtype="https://schema.org/PostalAddress"> + {{ if .address }}<span itemprop="streetAddress">{{ trim .address "\n" }}</span><br>{{ end }} + {{ if .zipcode }}<span itemprop="postalCode">{{ trim .zipcode "\n" }}</span> {{ end }}{{ if .city }}<span itemprop="addressLocality">{{ trim .city "\n" }}</span> {{ end }}{{ if .country }}<span itemprop="addressCountry">{{ trim .country "\n" }}</span>{{ end }} + </address> + {{ end }} + {{- if .phone -}} + <p> + {{- $phone := trim .phone "\n " -}} + {{- $phone_href := replace $phone " " "" -}} + <a itemprop="telephone" href="tel:{{ $phone_href }}">{{ $phone }}</a> + </p> + {{- end }} + </div> {{- end -}} {{- with site.Data.laboratory -}} -<address itemscope itemtype=""> - <meta itemprop="image" content="/assets/images/logo.svg"> - <p itemprop="name">{{ htmlUnescape (trim .name "\n") }}</p> - {{ if or (.address) (.country) }} - <p itemprop="address" itemscope itemtype="https://schema.org/PostalAddress"> - {{ if .address }}<span itemprop="streetAddress">{{ .address }}</span><br>{{ end }} - {{ if .zipcode }}<span itemprop="postalCode">{{ .zipcode }}</span> {{ end }}{{ if .city }}<span itemprop="addressLocality">{{ .city }}</span>{{ end }}<br> - {{ if .country }}<span itemprop="addressCountry">{{ .country }}</span>{{ end }} - </p> - {{ end }} - {{- if .phone -}} - <p> - {{- $phone := trim .phone "\n " -}} - {{- $phone_href := replace $phone " " "" -}} - <a itemprop="telephone" href="tel:{{ $phone_href }}">{{ $phone }}</a> - </p> - {{- end }} -</address> + <div itemscope itemtype="https://schema.org/ResearchOrganization"> + <meta itemprop="logo" content="{{ $logo }}"> + <p itemprop="name">{{ htmlUnescape (trim .name "\n") }}</p> + {{ if or (.address) (.country) }} + <address itemprop="address" itemscope itemtype="https://schema.org/PostalAddress"> + {{ if .address_name }}<span itemprop="name">{{ .address_name }}</span><br>{{ end }} + {{ if .address }}<span itemprop="streetAddress">{{ .address }}</span><br>{{ end }} + {{ if .address_additional }}<span itemprop="description">{{ .address_additional }}</span><br>{{ end }} + {{ if .zipcode }}<span itemprop="postalCode">{{ .zipcode }}</span> {{ end }}{{ if .city }}<span itemprop="addressLocality">{{ .city }}</span> {{ end }}{{ if .country }}<span itemprop="addressCountry">{{ .country }}</span>{{ end }} + </address> + {{ end }} + {{- if .phone -}} + <p> + {{- $phone := trim .phone "\n " -}} + {{- $phone_href := replace $phone " " "" -}} + <a itemprop="telephone" href="tel:{{ $phone_href }}">{{ $phone }}</a> + </p> + {{- end }} + </div> {{- end -}} {{- with site.Data.journal -}} -<div itemscope itemtype="https://schema.org/Periodical"> - <meta itemprop="image" content="/assets/images/logo.svg"> - <p itemprop="name">{{ htmlUnescape (trim .name "\n") }}</p> - <p itemprop="issn">{{ trim .issn "\n" }}</p> -</div> + <div itemscope itemtype="https://schema.org/Periodical"> + <meta itemprop="image" content="/assets/images/logo.svg"> + <p itemprop="name">{{ htmlUnescape (trim .name "\n") }}</p> + <p itemprop="issn">{{ trim .issn "\n" }}</p> + </div> {{- end -}} diff --git a/layouts/partials/footer/social.html b/layouts/partials/footer/social.html index f53b805d9bd36b7b62781d1a9418db11bf9be0ef..1bc5f37cc2a8f3192e7a68a30591ca1372da7637 100644 --- a/layouts/partials/footer/social.html +++ b/layouts/partials/footer/social.html @@ -13,62 +13,62 @@ {{ $site_social_links := . }} {{ if $site_social_links }} <ul class="footer-social site-links"> - {{ with $site_social_links.email}} + {{ with $site_social_links.email }} <li class="email"> <a href="mailto:{{ . }}" rel="noreferrer" title="Email" target="_blank">Email</a> </li> {{ end}} - {{ with $site_social_links.rss}} + {{ with $site_social_links.rss }} <li class="rss"> <a href="{{ . }}" rel="noreferrer" title="RSS" target="_blank">RSS</a> </li> {{ end}} - {{ with $site_social_links.mastodon}} + {{ with $site_social_links.mastodon }} <li class="mastodon"> <a href="{{ . }}" rel="noreferrer" title="Mastodon" target="_blank">Mastodon</a> </li> {{ end}} - {{ with $site_social_links.peertube}} + {{ with $site_social_links.peertube }} <li class="peertube"> <a href="{{ . }}" rel="noreferrer" title="Peertube" target="_blank">Peertube</a> </li> {{ end}} - {{ with $site_social_links.github}} + {{ with $site_social_links.github }} <li class="github"> <a href="{{ . }}" rel="noreferrer" title="Github" target="_blank">GitHub</a> </li> {{ end}} - {{ with $site_social_links.linkedin}} + {{ with $site_social_links.linkedin }} <li class="linkedin"> <a href="{{ . }}" rel="noreferrer" title="LinkedIn" target="_blank">LinkedIn</a> </li> {{ end}} - {{ with $site_social_links.youtube}} + {{ with $site_social_links.youtube }} <li class="youtube"> <a href="{{ . }}" rel="noreferrer" title="YouTube" target="_blank">YouTube</a> </li> {{ end}} - {{ with $site_social_links.vimeo}} + {{ with $site_social_links.vimeo }} <li class="vimeo"> <a href="{{ . }}" rel="noreferrer" title="Vimeo" target="_blank">Vimeo</a> </li> {{ end}} - {{ with $site_social_links.instagram}} + {{ with $site_social_links.instagram }} <li class="instagram"> <a href="{{ . }}" rel="noreferrer" title="Instagram" target="_blank">Instagram</a> </li> {{ end}} - {{ with $site_social_links.facebook}} + {{ with $site_social_links.facebook }} <li class="facebook"> <a href="{{ . }}" rel="noreferrer" title="" target="_blank">Facebook</a> </li> {{ end}} - {{ with $site_social_links.tiktok}} + {{ with $site_social_links.tiktok }} <li class="tiktok"> <a href="{{ . }}" rel="noreferrer" title="TikTok" target="_blank">TikTok</a> </li> {{ end}} - {{ with $site_social_links.x}} + {{ with $site_social_links.x }} <li class="x"> <a href="{{ . }}" rel="noreferrer" title="X, ex-Twitter" target="_blank">X (ex-Twitter)</a> </li> diff --git a/layouts/partials/head/csp.html b/layouts/partials/head/csp.html index 841a8a13eef10904e12f7d86738d8f5b263156b4..42e0bcbf7d6dfef5e0727f34c47b9ff123d74904 100644 --- a/layouts/partials/head/csp.html +++ b/layouts/partials/head/csp.html @@ -2,7 +2,7 @@ <meta http-equiv="Content-Security-Policy" content=" default-src 'self' {{ delimit . " " }} - {{ if or (not hugo.IsProduction) site.Params.debug }}'unsafe-inline'{{ end }} + {{ if or (not hugo.IsProduction) site.Params.debug.active }}'unsafe-inline'{{ end }} {{ if site.Params.search.active }}'wasm-unsafe-eval'{{ end }}; " /> {{- end -}} diff --git a/layouts/partials/header/button.html b/layouts/partials/header/button.html index 16d02d90397ba515e7dfc0d233a2bac02dace8b5..1331f60676c9f60b069682a4c939068341e7472c 100644 --- a/layouts/partials/header/button.html +++ b/layouts/partials/header/button.html @@ -1,7 +1,8 @@ <button type="button" aria-controls="navigation" aria-expanded="false" - aria-label="{{ i18n "commons.menu.label" }}"> + aria-label="{{ i18n "commons.menu.label" }}" + class="header-button"> <span>{{ i18n "commons.menu.title" }}</span> <span></span> </button> diff --git a/layouts/partials/header/hero.html b/layouts/partials/header/hero.html index 78fe93990d0d4d01863efb7f7e72523f2d24b740..388a3a3df4564862b086aac7c8731c85728bf0de 100644 --- a/layouts/partials/header/hero.html +++ b/layouts/partials/header/hero.html @@ -1,83 +1,99 @@ -{{- $direction := "" -}} -{{- $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero" -}} -{{- $subtitle := .subtitle -}} -{{- $description := .description -}} + +{{ $direction := "" }} +{{ $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero" }} +{{ $display_breadcrumb := .breadcrumb | default true }} +{{ $subtitle := .subtitle }} +{{ $description := .description }} {{ if .image }} - {{- $direction = partial "GetImageDirection" .image -}} + {{ $direction = partial "GetImageDirection" .image }} {{ end }} -{{- $summary := .context.Params.summary | safeHTML -}} -{{- $subtitle_is_summary := false -}} +{{ $summary := .context.Params.summary | safeHTML }} +{{ $subtitle_is_summary := false }} + +{{ $button := .button | default .context.Params.header_cta }} {{ if not $subtitle }} {{ if and (eq site.Params.summary.position "hero") $summary }} - {{ $subtitle = $summary }} - {{ $subtitle_is_summary = true }} + {{ $subtitle = $summary }} + {{ $subtitle_is_summary = true }} {{ end }} {{ end }} -<header class="hero {{ if .image -}}hero--with-image hero--image-{{- $direction -}}{{- end }} {{ if $breadcrumb_is_after_hero -}} hero--no-margin {{- end }}"> +<header class="hero {{ if .image }}hero--with-image hero--image-{{- $direction }}{{ end }} {{ if $breadcrumb_is_after_hero }} hero--no-margin {{ end }}"> <div class="container"> - {{- if eq site.Params.breadcrumb.position "hero-start" -}} - {{- if .breadcrumb | default true -}} - {{ partial "header/breadcrumbs.html" .context }} - {{- end -}} - {{- end -}} + {{ if and $display_breadcrumb (eq site.Params.breadcrumb.position "hero-start") }} + {{ partial "header/breadcrumbs.html" .context }} + {{ end }} <div class="content"> - {{- if or $subtitle $description -}} - <hgroup> + <div class="hero-text"> + {{ if or $subtitle $description }} + <hgroup> + <h1>{{ partial "PrepareHTML" .title }}</h1> + {{ if $subtitle }} + <p {{ if $subtitle_is_summary }} class="lead" {{ end }}>{{ partial "PrepareHTML" $subtitle }}</p> + {{ end }} + {{ if $description }} + <p>{{ partial "PrepareHTML" .description }}</p> + {{ end }} + </hgroup> + {{ else }} <h1>{{ partial "PrepareHTML" .title }}</h1> - {{- if $subtitle -}} - <p {{ if $subtitle_is_summary -}} class="lead" {{- end -}}>{{ partial "PrepareHTML" $subtitle }}</p> - {{- end -}} - {{- if $description -}} - <p>{{ partial "PrepareHTML" .description }}</p> - {{- end -}} - </hgroup> - {{- else -}} - <h1>{{ partial "PrepareHTML" .title }}</h1> - {{- end -}} - {{- if .image }} + {{ end }} + + {{ with $button }} + {{ if and .display .target .label }} + <a href="{{ .target }}" class="btn">{{ .label }}</a> + {{ end }} + {{ end }} + + {{ if .hero_text_complement }} + {{ partial .hero_text_complement .context }} + {{ end }} + </div> + + {{ if .image }} <figure> + {{ partial "commons/image.html" + (dict + "image" .image + "sizes" ( .sizes | default site.Params.image_sizes.design_system.hero ) + "lazy" false + ) }} {{ if not site.Params.image_sizes.design_system.lightbox.disabled }} <a class="glightbox" role="button" - data-glightbox="type: image;{{ if .image.credit }}description: {{ partial "PrepareHTML" .image.credit }}{{ end }}" + data-glightbox="type: image;{{ with .image.credit }}description: {{ partial "PrepareHTML" . }}{{ end }}" href="{{ partial "GetLightboxUrl" .image }}" title="{{- i18n "commons.lightbox.link.title" -}}" aria-label="{{- i18n "commons.lightbox.link.title" -}}"> - {{ end }} - {{ partial "commons/image.html" - (dict - "image" .image - "sizes" ( .sizes | default site.Params.image_sizes.design_system.hero ) - "lazy" false - ) }} - {{ if not site.Params.image_sizes.design_system.lightbox.disabled }} </a> {{ end }} - {{ if partial "GetTextFromHTML" .image.credit }} - <figcaption tabindex="0"> - <div class="credit-content"> - {{- partial "PrepareHTML" .image.credit -}} - </div> - </figcaption> - {{ end }} + {{ with partial "GetTextFromHTML" .image.credit }} + <figcaption tabindex="0"> + <div class="credit-content"> + {{ partial "PrepareHTML" . }} + </div> + </figcaption> + {{ end }} </figure> - {{ end -}} + {{ end }} </div> - {{- if eq site.Params.breadcrumb.position "hero-end" -}} - {{- if .breadcrumb | default true -}} - {{ partial "header/breadcrumbs.html" .context }} - {{- end -}} - {{- end -}} </div> -</header> -{{- if $breadcrumb_is_after_hero -}} - {{- if .breadcrumb | default true -}} + {{ if .hero_complement }} + {{ partial .hero_complement .context }} + {{ end }} + + {{ if and $display_breadcrumb (eq site.Params.breadcrumb.position "hero-end") }} <div class="container breadcrumb-container"> {{ partial "header/breadcrumbs.html" .context }} </div> - {{- end -}} -{{- end -}} \ No newline at end of file + {{ end }} +</header> + +{{ if and $display_breadcrumb $breadcrumb_is_after_hero }} + <div class="container breadcrumb-container"> + {{ partial "header/breadcrumbs.html" .context }} + </div> +{{ end }} diff --git a/layouts/partials/header/logo.html b/layouts/partials/header/logo.html index 50ed28873df3c6136dd59d12cbbe19c41d2bdab2..5505e783236c5876ea564dbf159bb5f818a0c3ce 100644 --- a/layouts/partials/header/logo.html +++ b/layouts/partials/header/logo.html @@ -1,3 +1 @@ -{{ $file := site.Params.logo.header }} -{{ $fileDimensions := partial "GetImageDimensions" (dict "context" . "file" $file "static" true) }} -<a class="logo" href="{{ site.Home.Permalink }}"><img src="{{ $file }}" alt="{{ site.Title }}" height="{{ index $fileDimensions 1 }}" width="{{ index $fileDimensions 0 }}"></a> +{{ partial "commons/logo.html" site.Params.logo.header }} \ No newline at end of file diff --git a/layouts/partials/organizations/logo.html b/layouts/partials/organizations/logo.html index 586ead648b88f877a43f76e02e459d2a5e8db316..1086a4503458be2bdd96cc9cd3ecf5858e347ecd 100644 --- a/layouts/partials/organizations/logo.html +++ b/layouts/partials/organizations/logo.html @@ -3,7 +3,7 @@ {{ if site.Params.organizations.dark_logo_background }} {{ $logo_index = "logo_on_dark_background" }} {{ end }} - <figure class="logo"> + <figure class="organization-logo"> {{- partial "commons/image.html" (dict "image" (index .Params $logo_index) diff --git a/layouts/partials/organizations/organization.html b/layouts/partials/organizations/organization.html index a2d88bc418f25facee2ef920df1d9a3768f35297..bdb9b7746e44a95692b4d4d0405508c7856a3f84 100644 --- a/layouts/partials/organizations/organization.html +++ b/layouts/partials/organizations/organization.html @@ -1,7 +1,7 @@ <article class="organization"> <div> {{ $title := partial "PrepareHTML" .Title }} - <h2> + <h2 class="organization-title"> <a href="{{ .Permalink }}" title="{{ safeHTML (i18n "commons.more_aria" (dict "Title" $title)) }}"> {{ $title }} </a> diff --git a/layouts/partials/pages/children.html b/layouts/partials/pages/children.html index fb6dd823c79574a7bf0327742e3b60f5d548817b..84c53adfe3a2b85add42b2b4312e7c950478443e 100644 --- a/layouts/partials/pages/children.html +++ b/layouts/partials/pages/children.html @@ -2,13 +2,14 @@ {{ if .Params.bodyclass }} {{- $page_class = printf "block-page-%s" .Params.bodyclass }} {{ end }} +{{ $show_images := eq site.Params.pages.index.layout "grid" }} -<div class="block block-pages block-pages--grid {{ $page_class }}"> +<div class="block block-pages block-pages--children block-pages--{{ site.Params.pages.index.layout }} {{ $page_class }}"> <div class="container"> <div class="block-content"> - {{- partial "blocks/templates/pages/grid.html" (dict + {{- partial (printf "blocks/templates/pages/%s.html" site.Params.pages.index.layout) (dict "pages" .Params.children - "show_images" true + "show_images" $show_images "heading_level" 2 "show_descriptions" true ) }} diff --git a/layouts/partials/pages/sitemap_recursive_pages.html b/layouts/partials/pages/sitemap_recursive_pages.html new file mode 100644 index 0000000000000000000000000000000000000000..84761ebfee2870f788539b0d19aa9b7926e7ee04 --- /dev/null +++ b/layouts/partials/pages/sitemap_recursive_pages.html @@ -0,0 +1,10 @@ +<ul> + {{ range .Pages }} + <li> + <a href="{{ .Permalink }}">{{ safeHTML .Title }}</a> + {{ if .Pages }} + {{ partial "pages/sitemap_recursive_pages.html" . }} + {{ end }} + </li> + {{ end }} +</ul> diff --git a/layouts/partials/papers/document-nav.html b/layouts/partials/papers/document-nav.html index a2f0211d51ca0d429d40b8fd4ce9989acf55f97b..2a800a23ca825704ded8a28c50a04d74b6ab0127 100644 --- a/layouts/partials/papers/document-nav.html +++ b/layouts/partials/papers/document-nav.html @@ -11,9 +11,11 @@ (dict "image" .Params.image "alt" .Title - "mobile" "327x388" - "tablet" "208x247" - "desktop" "408x485" + "size" (dict + "mobile" "327x388" + "tablet" "208x247" + "desktop" "408x485" + ) ) -}} {{- else -}} {{- partial "commons/image-default.html" "papers" -}} diff --git a/layouts/partials/papers/sidebar.html b/layouts/partials/papers/sidebar.html index b8d07c36e12d76de8b5207044e16d43f7a84e1c6..a959fd3a7991066392681d55914f7fd713a30aa1 100644 --- a/layouts/partials/papers/sidebar.html +++ b/layouts/partials/papers/sidebar.html @@ -13,9 +13,11 @@ (dict "image" .Params.image "alt" .Title - "mobile" "327x388" - "tablet" "208x247" - "desktop" "408x485" + "sizes" (dict + "mobile" "327x388" + "tablet" "208x247" + "desktop" "408x485" + ) ) -}} {{- else -}} {{- partial "commons/image-default.html" "papers" -}} diff --git a/layouts/partials/persons/hero-single.html b/layouts/partials/persons/hero-single.html index eb46dc1c8bc238d1dfbcc7cb9933e9e1badcf146..2c6f6e83111afb6bc29e93485425243df6be5455 100644 --- a/layouts/partials/persons/hero-single.html +++ b/layouts/partials/persons/hero-single.html @@ -1,44 +1,19 @@ -{{- $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero" -}} -{{ $subtitle := "" }} -{{- $summary := .Params.summary | safeHTML -}} -{{ if and (eq site.Params.summary.position "hero") $summary }} - {{ $subtitle = $summary }} -{{ end }} - -<header class="hero {{ if $breadcrumb_is_after_hero -}} hero--no-margin {{- end }}"> - <div class="container"> - {{- if eq site.Params.breadcrumb.position "hero-start" -}} - {{ partial "header/breadcrumbs.html" . }} - {{- end -}} - <div class="content"> - {{- if $subtitle -}} - <hgroup> - <h1>{{ partial "PrepareHTML" .Title }}</h1> - <p class="lead">{{ partial "PrepareHTML" $subtitle }}</p> - </hgroup> - {{- else -}} - <h1>{{ partial "PrepareHTML" .Title }}</h1> - {{- end -}} +{{- $title := or .Params.header_text .Title -}} - {{ if .Params.image }} - <div class="avatar"> - {{ partial "commons/image.html" - (dict - "image" .Params.image - "class" "img-fluid" - "sizes" site.Params.image_sizes.sections.persons.hero_single - )}} - </div> - {{ end }} - </div> - {{- if eq site.Params.breadcrumb.position "hero-end" -}} - {{ partial "header/breadcrumbs.html" . }} - {{- end -}} - </div> -</header> +{{/* LEGACY : à retirer une fois que le format de donnée des images des personnes sera homogène aux autres images */}} +{{- $image := "" -}} +{{ with .Params.image }} + {{ if eq (printf "%T" .) "string" }} + {{ $image = dict "id" . }} + {{ else }} + {{ $image = . }} + {{ end }} +{{ end }} -{{- if $breadcrumb_is_after_hero -}} - <div class="container breadcrumb-container"> - {{ partial "header/breadcrumbs.html" . }} - </div> -{{- end -}} \ No newline at end of file +{{- partial "header/hero.html" + (dict + "title" $title + "image" $image + "context" . + "sizes" site.Params.image_sizes.sections.persons.hero_single + ) -}} diff --git a/layouts/partials/posts/post-infos.html b/layouts/partials/posts/post-infos.html index 47b8b35b98b5c55acfc3ebe15977dfb9ff8b5ed6..f5eacaaf6cd03221c7ef2d34547c35a3be0e2d4f 100644 --- a/layouts/partials/posts/post-infos.html +++ b/layouts/partials/posts/post-infos.html @@ -1,6 +1,6 @@ <ul class="post-infos"> {{ if .Params.posts_categories }} - <li> + <li class="terms"> <span>{{ i18n "posts.category" ( len .Params.posts_categories ) }}</span> {{ partial "posts/categories.html" . }} </li> diff --git a/layouts/partials/programs/admission.html b/layouts/partials/programs/admission.html index 50d5ec348d9344bfbf1e2af0a6510036c62efa21..ca69bfbba868559f585c332d6ece9a47cd1e8062 100644 --- a/layouts/partials/programs/admission.html +++ b/layouts/partials/programs/admission.html @@ -18,6 +18,27 @@ </section> {{- end -}} + {{- if partial "GetTextFromHTML" .Params.pricing_initial -}} + <section id="{{ urlize (i18n "programs.pricing_initial") }}"> + <h3>{{ i18n "programs.pricing_initial" }}</h3> + {{- partial "PrepareHTML" .Params.pricing_initial -}} + </section> + {{- end -}} + + {{- if partial "GetTextFromHTML" .Params.pricing_continuing -}} + <section id="{{ urlize (i18n "programs.pricing_continuing") }}"> + <h3>{{ i18n "programs.pricing_continuing" }}</h3> + {{- partial "PrepareHTML" .Params.pricing_continuing -}} + </section> + {{- end -}} + + {{- if partial "GetTextFromHTML" .Params.pricing_apprenticeship -}} + <section id="{{ urlize (i18n "programs.pricing_apprenticeship") }}"> + <h3>{{ i18n "programs.pricing_apprenticeship" }}</h3> + {{- partial "PrepareHTML" .Params.pricing_apprenticeship -}} + </section> + {{- end -}} + {{- if partial "GetTextFromHTML" .Params.registration -}} <section id="{{ urlize (i18n "programs.registration") }}"> <h3>{{ i18n "programs.registration" }}</h3> diff --git a/layouts/partials/programs/essential.html b/layouts/partials/programs/essential.html index bc5730ecf4c104fa7e239272a49519bf7eee7e05..9e02eda1e47036aa0425e7b656fa043140db8bbb 100644 --- a/layouts/partials/programs/essential.html +++ b/layouts/partials/programs/essential.html @@ -1,22 +1,45 @@ -{{ $parent := .Params.parent }} -{{- with .Params.diplomas -}} - {{- $diploma := site.GetPage (printf "/diplomas/%s" .) -}} - {{- with $diploma -}} - <dl class="essential"> - <dt>{{ i18n "programs.diploma" }}</dt> - <dd><a href="{{ .Permalink }}">{{ partial "PrepareHTML" .Title }}</a></dd> - {{- if .Params.level -}} - <dt>{{ i18n "programs.level" }}</dt> - <dd>{{ partial "PrepareHTML" .Params.level }}</dd> +<div class="essential-container" id="#{{ urlize (i18n "programs.toc.essential") }}"> + <div class="container"> + {{ $parent := .Params.parent }} + {{- with .Params.diplomas -}} + {{- $diploma := site.GetPage (printf "/diplomas/%s" .) -}} + {{- with $diploma -}} + <dl class="essential"> + <dt>{{ i18n "programs.diploma" }}</dt> + <dd><a href="{{ .Permalink }}">{{ partial "PrepareHTML" .Title }}</a></dd> + {{- if .Params.level -}} + <dt>{{ i18n "programs.level" }}</dt> + <dd>{{ partial "PrepareHTML" .Params.level }}</dd> + {{- end -}} + {{- with $parent -}} + <dt>{{ i18n "programs.mention" }}</dt> + <dd><a href="{{ .url }}">{{ partial "PrepareHTML" .title }}</a></dd> + {{- end -}} + {{- if .Params.duration -}} + <dt>{{ i18n "programs.duration" }}</dt> + <dd>{{ partial "PrepareHTML" .Params.duration }}</dd> + {{- end -}} + </dl> {{- end -}} - {{- with $parent -}} - <dt>{{ i18n "programs.mention" }}</dt> - <dd><a href="{{ .url }}">{{ partial "PrepareHTML" .title }}</a></dd> - {{- end -}} - {{- if .Params.duration -}} - <dt>{{ i18n "programs.duration" }}</dt> - <dd>{{ partial "PrepareHTML" .Params.duration }}</dd> - {{- end -}} - </dl> - {{- end -}} -{{- end -}} + {{- end -}} + + <div class="buttons"> + <div class="dropdown-share dropup"> + <button class="btn" type="button" id="shareProgram" data-bs-toggle="dropdown" aria-expanded="false">{{ i18n "commons.share" }}</button> + <div class="dropdown-menu"> + {{ partial "commons/share.html" . }} + </div> + </div> + {{ with .Params.downloadable_summary }} + {{- $file := partial "GetMedia" . -}} + {{- if $file -}} + {{- $url := $file.url -}} + {{- if site.Params.keycdn -}} + {{- $url = $file.direct_url -}} + {{- end -}} + <a href="{{ $url }}" download target="_blank">{{ i18n "commons.download.singular_name" }}</a> + {{- end -}} + {{ end }} + </div> + </div> +</div> diff --git a/layouts/partials/programs/hero-single.html b/layouts/partials/programs/hero-single.html index deb0f4ae2da54d0047773693e12b80cc92142c9d..eb7dd28515f74043a151f17f10a099eaea83707c 100644 --- a/layouts/partials/programs/hero-single.html +++ b/layouts/partials/programs/hero-single.html @@ -1,65 +1,17 @@ -{{- $breadcrumb_is_after_hero := eq site.Params.breadcrumb.position "after-hero" -}} {{- $title := or .Params.header_text .Title -}} -{{ $subtitle := "" }} -{{- $summary := .Params.summary | safeHTML -}} -{{ if and (eq site.Params.summary.position "hero") $summary }} - {{ $subtitle = $summary }} -{{ end }} - -<header class="hero hero-program {{ if $breadcrumb_is_after_hero -}} hero--no-margin {{- end }}"> - <div class="container"> - {{- if eq site.Params.breadcrumb.position "hero-start" -}} - {{- if .Params.breadcrumb | default true -}} - {{ partial "header/breadcrumbs.html" . }} - {{- end -}} - {{- end -}} - <div class="content"> - {{- if $subtitle -}} - <hgroup> - <h1>{{ partial "PrepareHTML" $title }}</h1> - <p class="lead">{{ partial "PrepareHTML" $subtitle }}</p> - </hgroup> - {{- else -}} - <h1>{{ partial "PrepareHTML" $title }}</h1> - {{- end -}} - </div> - </div> - - <div class="essential-container" id="#{{ urlize (i18n "programs.toc.essential") }}"> - <div class="container"> - {{- partial "programs/essential" . -}} - <div class="buttons"> - <div class="dropdown-share dropup"> - <button type="button" id="shareProgram" data-bs-toggle="dropdown" aria-expanded="false">{{ i18n "commons.share" }}</button> - <div class="dropdown-menu"> - {{ partial "commons/share.html" . }} - </div> - </div> - {{ with .Params.downloadable_summary }} - {{- $file := partial "GetMedia" . -}} - {{- if $file -}} - {{- $url := $file.url -}} - {{- if site.Params.keycdn -}} - {{- $url = $file.direct_url -}} - {{- end -}} - <a href="{{ $url }}" download target="_blank">{{ i18n "commons.download.singular_name" }}</a> - {{- end -}} - {{ end }} - </div> - </div> - </div> - - {{- if eq site.Params.breadcrumb.position "hero-end" -}} - {{- if .Params.breadcrumb | default true -}} - {{ partial "header/breadcrumbs.html" . }} - {{- end -}} - {{- end -}} -</header> - -{{- if $breadcrumb_is_after_hero -}} - {{- if .Params.breadcrumb | default true -}} - <div class="container breadcrumb-container"> - {{ partial "header/breadcrumbs.html" . }} - </div> - {{- end -}} +{{- $button := false -}} +{{- if and (eq site.Params.summary.position "hero") .Params.website_url -}} + {{ $button = (dict + "display" true + "target" .Params.website_url + "label" (i18n "programs.website") + ) }} {{- end -}} + +{{ partial "header/hero.html" + (dict + "title" $title + "context" . + "button" $button + "hero_complement" "programs/essential.html" + )}} diff --git a/layouts/partials/programs/list.html b/layouts/partials/programs/list.html index ddd3d9be1a758789c95498e241221e834d0b42cb..0fccc9daa5c4cc4219349eada600c7ad8ea3d9bd 100644 --- a/layouts/partials/programs/list.html +++ b/layouts/partials/programs/list.html @@ -12,8 +12,12 @@ {{ partial "contents/list.html" . }} <div class="container"> {{ partial "diplomas/diplomas-select.html" . }} + {{/* Toutes les formations... */}} {{ $programs := where .Site.Pages "Section" "programs" }} + {{/* mais pas l'accueil des formations... */}} {{ $programs = where $programs "Permalink" "!=" .FirstSection.Permalink }} + {{/* et pas non plus les pages enfants (parcours) */}} + {{ $programs = where $programs "Params.parent" "eq" nil }} {{ partial "programs/programs-list.html" $programs }} </div> </div> diff --git a/layouts/partials/programs/summary.html b/layouts/partials/programs/summary.html index 85e4edf81a14c7fedc7c790f755b91710a4d9224..d5dec153c5ee5107a5d8c8bf83c9b67c80c8dea9 100644 --- a/layouts/partials/programs/summary.html +++ b/layouts/partials/programs/summary.html @@ -1 +1,11 @@ -{{- partial "commons/summary-in-content.html" . -}} +{{ $summary := .summary | default (.context.Params.summary | safeHTML) }} +{{ if and (eq site.Params.summary.position "content") $summary }} + <div class="container program-summary"> + <p class="lead" role="heading" aria-level="2"> + {{ $summary }} + </p> + {{ if .context.Params.website_url }} + <a href="{{- .context.Params.website_url -}}" target="_blank" class="btn">{{ i18n "programs.website" }}</a> + {{ end }} + </div> +{{ end }} diff --git a/layouts/partials/projects/categories.html b/layouts/partials/projects/categories.html new file mode 100644 index 0000000000000000000000000000000000000000..ffd783f24c83bdb9d034e4bdfeee49a8f297f60c --- /dev/null +++ b/layouts/partials/projects/categories.html @@ -0,0 +1,12 @@ +{{ $categories := .GetTerms "projects_categories" }} +{{- if $categories -}} +<ul class="project-categories"> + {{- range $categories -}} + <li> + <a href="{{ .Permalink }}"> + {{- safeHTML .Title -}} + </a> + </li> + {{- end }} +</ul> +{{- end -}} diff --git a/layouts/partials/projects/hero-list.html b/layouts/partials/projects/hero-list.html new file mode 100644 index 0000000000000000000000000000000000000000..84b8de2d9433fadeaf98bbe1933e228bfe7b5208 --- /dev/null +++ b/layouts/partials/projects/hero-list.html @@ -0,0 +1,8 @@ +{{- $title := or .Params.header_text .Title -}} +{{- partial "header/hero.html" + (dict + "title" $title + "image" .Params.image + "sizes" site.Params.image_sizes.sections.projects.hero + "context" . + ) -}} diff --git a/layouts/partials/projects/hero-single.html b/layouts/partials/projects/hero-single.html new file mode 100644 index 0000000000000000000000000000000000000000..e8bfe9f6240f203385fe3b598991974813037fd0 --- /dev/null +++ b/layouts/partials/projects/hero-single.html @@ -0,0 +1,9 @@ +{{- $title := or .Params.header_text .Title -}} +{{- partial "header/hero.html" + (dict + "title" $title + "image" .Params.image + "sizes" site.Params.image_sizes.sections.projects.hero_single + "hero_text_complement" "projects/project-infos.html" + "context" . + ) -}} diff --git a/layouts/partials/projects/project-infos.html b/layouts/partials/projects/project-infos.html new file mode 100644 index 0000000000000000000000000000000000000000..e33502c59b879e6ca8e207d9a43fea21e81410ed --- /dev/null +++ b/layouts/partials/projects/project-infos.html @@ -0,0 +1,18 @@ +<ul class="project-infos"> + {{ if .Params.projects_categories }} + <li class="terms"> + <span>{{ i18n "projects.category" ( len .Params.projects_categories ) }}</span> + {{ partial "projects/categories.html" . }} + </li> + {{ end }} + {{ with .Params.year }} + <li> + <span>{{ i18n "projects.year" }}</span> + <time datetime="{{ . }}">{{ . }}</time> + </li> + {{ end }} + <li class="social-share"> + <span>{{ i18n "projects.share" }}</span> + {{ partial "commons/share.html" . }} + </li> +</ul> \ No newline at end of file diff --git a/layouts/partials/projects/project.html b/layouts/partials/projects/project.html new file mode 100644 index 0000000000000000000000000000000000000000..c7ec5b2829b8440a7bacdaf57a5554e731d6bb09 --- /dev/null +++ b/layouts/partials/projects/project.html @@ -0,0 +1,50 @@ +{{ $project := .project }} +{{ $heading := .heading | default "h2" }} +{{ $heading_tag := (dict + "open" ((printf "<%s itemprop='name'>" $heading) | safeHTML) + "close" ((printf "</%s>" $heading) | safeHTML) + ) }} + +{{ with $project }} + +<article class="project" itemscope itemtype="https://schema.org/CreativeWork"> + + <div class="project-content"> + {{- $title := partial "PrepareHTML" .Title -}} + + {{ $heading_tag.open }} + <a href="{{ .Permalink }}" itemprop="url" title="{{ safeHTML (i18n "commons.more_aria" (dict "Title" $title)) }}">{{ $title }}</a> + {{ $heading_tag.close }} + + {{ if and site.Params.projects.index.show_description (partial "GetTextFromHTML" .Params.summary) }} + <p itemprop="abstract">{{ partial "GetTruncateContent" ( dict + "text" .Params.summary + "length" site.Params.projects.index.truncate_description + ) }}</p> + {{ end }} + + {{ if site.Params.projects.index.show_categories }} + {{- partial "projects/categories" . -}} + {{ end }} + + {{ if and site.Params.projects.index.show_year .Params.year }} + <div class="project-meta"> + <time itemprop="datePublished" datetime="{{ .Params.year }}">{{ .Params.year }}</time> + </div> + {{ end }} + </div> + + <div class="media"> + {{- if .Params.image -}} + {{- partial "commons/image.html" + (dict + "image" .Params.image + "sizes" site.Params.image_sizes.sections.projects.item + ) -}} + {{- else -}} + {{- partial "commons/image-default.html" "projects" -}} + {{- end -}} + </div> + +</article> +{{ end }} \ No newline at end of file diff --git a/layouts/partials/projects/projects.html b/layouts/partials/projects/projects.html new file mode 100644 index 0000000000000000000000000000000000000000..bfce05b018c0d2059cba468af1ef26bfbfa5625d --- /dev/null +++ b/layouts/partials/projects/projects.html @@ -0,0 +1,8 @@ +<div class="projects projects--{{- site.Params.projects.index.layout -}}"> + {{ if not .Pages }} + <p>{{ i18n "categories.no_project" }}</p> + {{ end }} + {{ range .Paginator.Pages }} + {{ partial "projects/project.html" (dict "project" . )}} + {{ end }} +</div> diff --git a/layouts/partials/projects/sidebar.html b/layouts/partials/projects/sidebar.html new file mode 100644 index 0000000000000000000000000000000000000000..2f27a098fd7676996c77a580f49b2e3471ace1ff --- /dev/null +++ b/layouts/partials/projects/sidebar.html @@ -0,0 +1,14 @@ +<div class="section-sidebar project-sidebar"> + <div> + <aside> + {{- partial "projects/project-infos.html" . -}} + </aside> + + {{ partial "toc/container.html" + (dict + "toc" "toc/default.html" + "context" . + ) + }} + </div> +</div> diff --git a/layouts/partials/projects/summary.html b/layouts/partials/projects/summary.html new file mode 100644 index 0000000000000000000000000000000000000000..85e4edf81a14c7fedc7c790f755b91710a4d9224 --- /dev/null +++ b/layouts/partials/projects/summary.html @@ -0,0 +1 @@ +{{- partial "commons/summary-in-content.html" . -}} diff --git a/layouts/partials/publications/downloads.html b/layouts/partials/publications/downloads.html index 379bba754f489ef6633dab92ecaeaa57467decab..a24993d24f90f1a7da89c408526444db649cdca6 100644 --- a/layouts/partials/publications/downloads.html +++ b/layouts/partials/publications/downloads.html @@ -4,7 +4,7 @@ <nav> {{ range .Params.links }} {{ if .url }} - <a href="{{ .url }}" target="_blank" rel="noopener" class="link-btn">{{ .label }}</a> + <a href="{{ .url }}" target="_blank" rel="noopener">{{ .label }}</a> {{ end }} {{ end }} </nav> diff --git a/layouts/partials/publications/statistics.html b/layouts/partials/publications/statistics.html index 9e06d6fd3163d4ceac05a6db25281daa1bff6ea2..0f0452cc2ca3ffb5b0ab297124bc1eda4024b6bb 100644 --- a/layouts/partials/publications/statistics.html +++ b/layouts/partials/publications/statistics.html @@ -8,8 +8,6 @@ <span>{{ .Key }}</span> </p> </li> - {{ end }} + {{ end }} </ol> - - </div> \ No newline at end of file diff --git a/layouts/partials/sitemap/toc.html b/layouts/partials/sitemap/toc.html index 9fff240ad2d17a4c563032aa727d03ec3d428462..508b5583c8bbb864fd7dd9956d54c95b152a8c1d 100644 --- a/layouts/partials/sitemap/toc.html +++ b/layouts/partials/sitemap/toc.html @@ -3,8 +3,11 @@ {{- if .context.Params.contents -}} {{- partial "blocks/toc.html" .context.Params.contents -}} {{- end -}} + <li> + <a href="#pages">{{ i18n "sitemap.pages" }}</a> + </li> {{ range site.Sections }} - {{ if ne .Type "sitemap" }} + {{ if and (ne .Type "sitemap") (ne .Type "pages") }} <li> <a href="#{{ .Type }}">{{ safeHTML .Title }}</a> </li> diff --git a/layouts/persons/single.html b/layouts/persons/single.html index becf9384a25780d7e81763172a83e39c76b630fb..a7e24cb19d79641af29453ed213cd1ab7ee503a3 100644 --- a/layouts/persons/single.html +++ b/layouts/persons/single.html @@ -28,12 +28,18 @@ <div itemscope itemtype="https://schema.org/Person" class="container"> <meta itemprop="name" content="{{ partial "PrepareHTML" .Title }}"> <meta itemprop="url" content="{{ .Permalink }}"> - {{- if .Params.image -}} - {{- $image := partial "GetMedia" .Params.image -}} - {{- if $image -}} - <meta itemprop="image" content="{{ $image.url }}"> + {{ with .Params.image }} + {{ $image_id := "" }} + {{/* LEGACY : à retirer une fois que le format de donnée des images des personnes sera homogène aux autres images */}} + {{ if eq (printf "%T" .) "string" }} + {{ $image_id = . }} + {{ else }} + {{ $image_id = index . "id" }} + {{ end }} + {{- with partial "GetMedia" $image_id -}} + <meta itemprop="image" content="{{ .url }}"> {{- end -}} - {{- end -}} + {{ end }} <div class="informations"> <div> diff --git a/layouts/posts/single.html b/layouts/posts/single.html index 5523950f11e3c1ff4e8a53d5aa63400e7ccabc66..d37649dfa59ca5c2ea16fd6cdcda0d4f0eaa11a0 100644 --- a/layouts/posts/single.html +++ b/layouts/posts/single.html @@ -6,7 +6,6 @@ <meta itemprop="url" content="{{ .Permalink }}"> {{ with .Date }}<meta itemprop="datePublished" content="{{ .Format "2006-01-02T15:04" }}">{{ end }} {{ with .Params.summary }}<meta itemprop="abstract" content="{{ . | safeHTML }}">{{ end }} - {{ with .Summary }}<meta itemprop="description" content="{{ . | safeHTML }}">{{ end }} {{ partial "posts/sidebar.html" . }} diff --git a/layouts/programs/list.html b/layouts/programs/list.html index db2c2b6b0d703579d20dd42c49efdc100a215010..0b2260601999fdd12a1dc2e1eaa755c58db4f7dc 100644 --- a/layouts/programs/list.html +++ b/layouts/programs/list.html @@ -1,9 +1,9 @@ {{ define "main" }} - {{ if .Params.diplomas }} - {{ partial "programs/hero-single.html" . }} - {{ partial "programs/single.html" . }} - {{ else }} + {{ if eq .File.Path "programs/_index.html" }} {{ partial "programs/hero.html" . }} {{ partial "programs/list.html" . }} + {{ else }} + {{ partial "programs/hero-single.html" . }} + {{ partial "programs/single.html" . }} {{ end }} {{ end }} diff --git a/layouts/projects/list.html b/layouts/projects/list.html new file mode 100644 index 0000000000000000000000000000000000000000..ea5fdbb7608debb02ba021ca82920def0e663f65 --- /dev/null +++ b/layouts/projects/list.html @@ -0,0 +1,18 @@ +{{ define "main" }} + {{ partial "projects/hero-list.html" . }} + <div class="document-content"> + {{ partial "commons/list-content.html" . }} + + {{ partial "projects/summary.html" (dict + "with_container" true + "context" . + ) }} + + {{ partial "contents/list.html" . }} + + <div class="container"> + {{ partial "projects/projects.html" . }} + {{ partial "commons/pagination.html" . }} + </div> + </div> +{{ end }} diff --git a/layouts/projects/single.html b/layouts/projects/single.html new file mode 100644 index 0000000000000000000000000000000000000000..05484c8bc2884bbf5837c6373ecf5da2df02eecf --- /dev/null +++ b/layouts/projects/single.html @@ -0,0 +1,24 @@ +{{ define "main" }} + {{ partial "projects/hero-single.html" . }} + + <div class="document-content" itemscope itemtype="https://schema.org/CreativeWork"> + <meta itemprop="name" content="{{ partial "PrepareHTML" .Title }}"> + <meta itemprop="url" content="{{ .Permalink }}"> + {{ with .Params.summary }}<meta itemprop="description" content="{{ . | safeHTML }}">{{ end }} + + {{ partial "projects/summary.html" (dict + "context" . + "block_wrapped" true + ) }} + + {{ partial "contents/list.html" . }} + + {{ partial "commons/siblings-navigation.html" (dict + "context" . + "previous_label" (i18n "projects.previous") + "next_label" (i18n "projects.next") + ) }} + + {{ partial "hooks/before-document-content-end.html" . }} + </div> +{{ end }} diff --git a/layouts/projects_categories/list.html b/layouts/projects_categories/list.html new file mode 100644 index 0000000000000000000000000000000000000000..dc40e99731e7e266dd5cfe56cd0fd6eff130e318 --- /dev/null +++ b/layouts/projects_categories/list.html @@ -0,0 +1,10 @@ +{{ define "main" }} + {{ partial "categories/hero-list.html" . }} + + <div class="document-content"> + <div class="container"> + {{ partial "categories/categories.html" . }} + {{ partial "commons/pagination.html" . }} + </div> + </div> +{{ end }} diff --git a/layouts/projects_categories/term.html b/layouts/projects_categories/term.html new file mode 100644 index 0000000000000000000000000000000000000000..3e262d032938c69869a8891ace1f2de7428d7b90 --- /dev/null +++ b/layouts/projects_categories/term.html @@ -0,0 +1,22 @@ +{{ define "main" }} + {{ partial "categories/hero-term.html" . }} + + <div class="document-content"> + {{ partial "toc/container.html" (dict + "toc" "toc/default.html" + "context" . + ) }} + + {{ partial "categories/summary.html" (dict + "context" . + "block_wrapped" true + ) }} + + {{ partial "contents/list.html" . }} + + <div class="container"> + {{ partial "projects/projects.html" . }} + {{ partial "commons/pagination.html" . }} + </div> + </div> +{{ end }} diff --git a/layouts/publications/list.html b/layouts/publications/list.html index 9b98bdcb4b353738b1053617320cdc8058eaa417..376f8b10648609875b1f49aa34160ea8c756094c 100644 --- a/layouts/publications/list.html +++ b/layouts/publications/list.html @@ -10,5 +10,4 @@ {{ partial "commons/pagination.html" . }} </div> </div> - {{ end }} diff --git a/static/assets/fonts/fonticons/IconFont.ttf b/static/assets/fonts/fonticons/IconFont.ttf index 5b68528dc52998f7fe5923168888f752dd6d6f06..9db0243c3b7db2c95cf174f6c6122aa31f156b21 100644 Binary files a/static/assets/fonts/fonticons/IconFont.ttf and b/static/assets/fonts/fonticons/IconFont.ttf differ diff --git a/static/assets/fonts/fonticons/IconFont.woff b/static/assets/fonts/fonticons/IconFont.woff index a48b0132c5172bf646c83091147401fc3b92fe53..3803db73637ce37756dc81f5b5c3bdcc5b7d4685 100644 Binary files a/static/assets/fonts/fonticons/IconFont.woff and b/static/assets/fonts/fonticons/IconFont.woff differ diff --git a/static/assets/fonts/fonticons/IconFont.woff2 b/static/assets/fonts/fonticons/IconFont.woff2 index 689a16424211c4d4dc1113b0e85bd46e3f600d3f..95f9347c48c39145ff8c6ba9efc9e5741f41b741 100644 Binary files a/static/assets/fonts/fonticons/IconFont.woff2 and b/static/assets/fonts/fonticons/IconFont.woff2 differ diff --git a/static/osuny-theme-version b/static/osuny-theme-version index b91cebaa0bc2ae2eff0a46fa7ebd4944e1b065f1..4a2ecbb14995b98b5fb9fac97d6d48e192188d68 100644 --- a/static/osuny-theme-version +++ b/static/osuny-theme-version @@ -1 +1 @@ -v5.2 \ No newline at end of file +v6.0.3 \ No newline at end of file diff --git a/static/osuny/icon.png b/static/osuny/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8037459303346a4f81c83af38646b8db06a26dc7 Binary files /dev/null and b/static/osuny/icon.png differ