diff --git a/public/font/icon.eot b/public/font/icon.eot index 1268c35..1609d73 100644 Binary files a/public/font/icon.eot and b/public/font/icon.eot differ diff --git a/public/font/icon.svg b/public/font/icon.svg index edc543b..67c8d09 100644 --- a/public/font/icon.svg +++ b/public/font/icon.svg @@ -24,6 +24,10 @@ + + + + diff --git a/public/font/icon.ttf b/public/font/icon.ttf index bc34816..cbdbe4d 100644 Binary files a/public/font/icon.ttf and b/public/font/icon.ttf differ diff --git a/public/font/icon.woff b/public/font/icon.woff index bb0a22c..4bed225 100644 Binary files a/public/font/icon.woff and b/public/font/icon.woff differ diff --git a/public/font/icon.woff2 b/public/font/icon.woff2 index 9945abb..b39dcc9 100644 Binary files a/public/font/icon.woff2 and b/public/font/icon.woff2 differ diff --git a/public/js/main.js b/public/js/main.js new file mode 100644 index 0000000..710d84b --- /dev/null +++ b/public/js/main.js @@ -0,0 +1,130 @@ +/** + * Fonction permettant d'afficher un message dans un toastr + * @param {String} message + */ + function showToastr(message) { + let x = document.getElementById("toastr"); + if ( message ) { + x.getElementsByTagName("SPAN")[0].innerHTML = message; + } + + x.className = `${x.className} show`; + setTimeout(function(){ x.className = x.className.replace("show", ""); }, 3000); +}; + +/** + * Fonction permettant de masquer le toastr + */ +function hideToastr() { + let x = document.getElementById("toastr"); + + x.className = x.className.replace("show", ""); + x.getElementsByTagName("SPAN")[0].innerHTML = ""; +} + +/** + * Fonction permettant de récupérer la valeur d'un cookie + * @param {String} cname + * @param {String} defaultValue + * + * @return {String} + */ +function getCookie(cname, defaultValue = 'false') { + let name = cname + "="; + let decodedCookie = decodeURIComponent(document.cookie); + let ca = decodedCookie.split(';'); + for(let i = 0; i < ca.length; i+=1) { + let c = ca[i]; + while (c.charAt(0) == ' ') { + c = c.substring(1); + } + if (c.indexOf(name) == 0) { + return c.substring(name.length, c.length); + } + } + return defaultValue; +} + +/** + * Fonction permettant de créer un cookie + * @param {String} cname + * @param {String} cvalue + * @param {Number} exdays + */ +function setCookie(cname, cvalue, exdays = 30) { + const d = new Date(); + d.setTime(d.getTime() + (exdays*24*60*60*1000)); + let expires = "expires="+ d.toUTCString(); + document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; +} + +/** + * Fonction de (dé)charger le thème accessible + * @param {String} value + */ +function setAriaTheme(value) { + let body = document.body; + if ( value === 'true' ) { + let classesString = body.className || ""; + if (classesString.indexOf("is-accessible") === -1) { + body.classList.add("is-accessible"); + } + } else { + body.classList.remove("is-accessible"); + } +} + +/** + * Fonction de (dé)charger le thème accessible + */ +function switchAriaTheme() { + let body = document.body; + + body.classList.toggle("is-accessible"); + + setCookie('ariatheme', body.classList.contains("is-accessible")); +} + +/** + * Fonction permettant de switcher de thème clair/sombre + * @param {Object} e + */ +function switchTheme(e) { + const theme = e.target.checked ? 'dark' : 'light'; + + document.documentElement.setAttribute('data-theme', theme); + setCookie('theme', theme); +} + +/** + * Ensemble d'actions effectuées au chargement de la page + */ +document.addEventListener('DOMContentLoaded', () => { + const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0); + if ($navbarBurgers.length > 0) { + $navbarBurgers.forEach( el => { + el.addEventListener('click', () => { + const target = el.dataset.target; + const $target = document.getElementById(target); + + el.classList.toggle('is-active'); + $target.classList.toggle('is-active'); + }); + }); + } + + const switchAriaThemeBtn = document.querySelector("#switchAriaTheme"); + switchAriaThemeBtn.addEventListener("click", switchAriaTheme); + setAriaTheme(getCookie('ariatheme')); + + const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); + toggleSwitch.addEventListener('change', switchTheme, false); + + let currentThemeIsDark = getCookie('theme'); + if ( currentThemeIsDark === 'false' && window.matchMedia ) { + currentThemeIsDark = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; + } + console.log('currentThemeIsDark:', currentThemeIsDark); + switchTheme({target: {checked: currentThemeIsDark === 'dark'}}); + toggleSwitch.checked = currentThemeIsDark === 'dark'; +}); \ No newline at end of file diff --git a/sass/box.scss b/sass/box.scss new file mode 100644 index 0000000..95c138e --- /dev/null +++ b/sass/box.scss @@ -0,0 +1,26 @@ +.box { + background-color: var(--box-bg-color); + border-radius: 6px; + box-shadow: var(--box-shadow-color) 0px 3px 6px 0px; + color: var(--font-color); + display: block; + padding: 1.25rem; + width: calc(100% - 2rem); + margin: auto; + @include transition() {} + + @include respond-to("small-up") { + width: 65%; + } + @include respond-to("medium-up") { + width: 35%; + } + + h1 { + margin-top: 0; + } + + button { + margin-top: 2rem; + } +} \ No newline at end of file diff --git a/sass/button.scss b/sass/button.scss index e461ced..1d8c946 100644 --- a/sass/button.scss +++ b/sass/button.scss @@ -7,43 +7,57 @@ padding-top: calc(0.5em - 1px); text-align: center; white-space: nowrap; - border-width: 1px; + border: 1px solid transparent; margin-bottom: .5rem; - background-color: #fff; - border-color: #dbdbdb; + background-color: $nord9; border-radius: 0.375rem; + color: $button-font-color; + @include transition() {} - &.is-danger { - background-color: #d73455; - border-color: transparent; - color: #fff; - - &:hover { - background-color: #d70933; - border-color: transparent; - color: #fff; - } + &:hover { + background-color: darken($nord9, $hoverAmount); } - &.is-link { - background-color: #485fc7; - border-color: transparent; - color: #fff; + &.is-danger { + background-color: $danger-color; + color: $button-alternate-color; &:hover { - background-color: #3e56c4; - border-color: transparent; - color: #fff; + background-color: $danger-color-hl; } } &.is-primary { - background-color: #2d7c58; - border-color: transparent; - color: #fff; + background-color: $primary-color; &:hover { - background-color: #267953; + background-color: $primary-color-hl; + } + } + + &.is-warning { + background-color: $warning-color; + + &:hover { + background-color: $warning-color-hl; + } + } + + &.is-success { + background-color: $success-color; + + &:hover { + background-color: $success-color-hl; + } + } + + &.is-link { + background-color: transparent; + border-color: $nord9; + color: $nord9; + + &:hover { + border-color: darken($nord9, $hoverAmount); } } } \ No newline at end of file diff --git a/sass/colors.scss b/sass/colors.scss new file mode 100644 index 0000000..5759f90 --- /dev/null +++ b/sass/colors.scss @@ -0,0 +1,74 @@ +$hoverAmount: 10%; + +$white: #ffffff; +$darken-white: #F8F9FB; +/* Couleurs du thème Nord (https://www.nordtheme.com/) */ +$nord0: #2e3440; +$nord1: #3b4252; +$nord2: #434c5e; +$nord3: #4C566A; +$nord4: #d8dee9; +$nord5: #e5e9f0; +$nord6: #eceff4; +$nord7: #8fbcbb; +$nord8: #88c0d0; +$nord9: #81a1c1; +$nord10: #5e81ac; +$nord11: #d08770; +$nord12: #bf616a; +$nord13: #ebcb8b; +$nord14: #a3be8c; +$nord15: #b48ead; + +$primary-color: $nord8; +$danger-color: $nord11; +$warning-color: $nord13; +$success-color: $nord14; +$primary-color-hl: darken($primary-color, $hoverAmount); +$danger-color-hl: darken($danger-color, $hoverAmount); +$warning-color-hl: darken($warning-color, $hoverAmount); +$success-color-hl: darken($success-color, $hoverAmount); + +$button-font-color: $nord1; +$button-alternate-color: #01103C; + +$pagination-border-color: $nord3; +$pagination-hover-color: rgb(115, 151, 186); + +:root { + --default-color: #{$white}; + --bg-color: #{darken($white, 5%)}; + --font-color: #{$nord3}; + --footer-color: #{$darken-white}; + --link-color: #{$nord1}; + + --input-font-color: #{$nord3}; + --input-color: #{$white}; + --input-active-color: #{$nord5}; + + --navbar-color: #{darken($white, 5%)}; + + --box-bg-color: #F8F9FB; + --box-shadow-color: #{rgba($nord4, 0.35)}; + + --border-color: #{$nord4}; +} + +[data-theme="dark"] { + --default-color: #{$nord3}; + --bg-color: #{lighten($nord0, 2%)}; + --font-color: #{$nord6}; + --footer-color: #{$nord1}; + --link-color: #{$nord4}; + + --input-font-color: #{$nord6}; + --input-color: #{$nord0}; + --input-active-color: #{$nord3}; + + --navbar-color: #{$nord0}; + + --box-bg-color: #{$nord1}; + --box-shadow-color: #{rgba($nord4, 0.2)}; + + --border-color: #{$nord1}; +} \ No newline at end of file diff --git a/sass/connexion.scss b/sass/connexion.scss deleted file mode 100644 index fdc3d72..0000000 --- a/sass/connexion.scss +++ /dev/null @@ -1,28 +0,0 @@ -.connexion, -.inscription { - background-color: #fff; - border-radius: 6px; - box-shadow: 0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02); - color: #4a4a4a; - display: block; - padding: 1.25rem; - width: calc(100% - 2rem); - margin: auto; - - @include respond-to("small-up") { - width: 65%; - } - @include respond-to("medium-up") { - width: 35%; - } - - button { - background-color: #485fc7; - border-color: transparent; - color: #fff; - - &:hover { - background-color: #3e56c4; - } - } -} \ No newline at end of file diff --git a/sass/error.scss b/sass/error.scss index 325f38b..cf534ac 100644 --- a/sass/error.scss +++ b/sass/error.scss @@ -1,10 +1,4 @@ .error { min-height: calc(100vh - 3.25rem - 100px); padding-top: 4rem; - - pre { - padding: 0.75rem; - border: 1px dotted #cecccc; - background: #f9f9f9; - } } \ No newline at end of file diff --git a/sass/flash.scss b/sass/flash.scss index 39b3a33..db28cb0 100644 --- a/sass/flash.scss +++ b/sass/flash.scss @@ -1,10 +1,10 @@ .flash { - background-color: #d73455; + background-color: $danger-color; border-radius: 6px; - box-shadow: 0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02); - color: #fff; + box-shadow: var(--box-shadow-color) 0px 3px 6px 0px; + color: $button-alternate-color; display: block; - padding: 1.25rem; + padding: 1.25rem; width: calc(100% - 6rem); margin: 2rem auto; diff --git a/sass/fonts.scss b/sass/fonts.scss index 1095b75..f4a7ba9 100644 --- a/sass/fonts.scss +++ b/sass/fonts.scss @@ -56,4 +56,11 @@ src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff2'); font-weight: normal; font-style: normal; +} + +@font-face { + font-family: 'fira_codelight'; + src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff2'); + font-weight: normal; + font-style: normal; } \ No newline at end of file diff --git a/sass/forms.scss b/sass/forms.scss index d6b036d..0f4aab7 100644 --- a/sass/forms.scss +++ b/sass/forms.scss @@ -26,17 +26,17 @@ input, textarea, select { - border-radius: 0.375rem; - box-shadow: inset 0 .0625em .125em rgba(10,10,10,.05); + border-radius: 4px; max-width: 100%; width: 100%; - background-color: #fff; - border: 1px solid #dbdbdb !important; - color: #363636; + background-color: var(--input-color); + border: 1px solid transparent !important; + color: var(--input-font-color); + @include transition() {} &:focus-visible { - border: 1px solid #b9b9b9 !important; outline: unset; + border-color: var(--input-active-color) !important; } } @@ -48,4 +48,78 @@ background-size: 1.2rem; padding-right: 2.4rem; } -} \ No newline at end of file +} + +.theme-switch-wrapper { + display: flex; + align-items: center; + + em { + margin-left: 10px; + font-size: 1rem; + } +} + +.theme-switch { + display: inline-block; + height: 34px; + position: relative; + width: 60px; +} + +.theme-switch input { + display:none; +} + +.slider { + background-color: #ccc; + bottom: 0; + cursor: pointer; + left: 0; + position: absolute; + right: 0; + top: 0; + transition: .4s; + @include transition() {} +} + +.slider:before { + background-color: #fff; + bottom: 4px; + content: '\f185'; + height: 26px; + left: 4px; + position: absolute; + transition: .4s; + width: 26px; + padding: 0; + + font-family: "icon"; + font-style: normal; + font-weight: normal; + display: inline-block; + text-decoration: inherit; + text-align: center; + font-variant: normal; + text-transform: none; +} + +input:checked + .slider { + background-color: $primary-color; + @include transition() {} +} + +input:checked + .slider:before { + transform: translateX(26px); + content: '\f186'; + background-color: var(--input-active-color); + @include transition() {} +} + +.slider.round { + border-radius: 34px; +} + +.slider.round:before { + border-radius: 50%; +} diff --git a/sass/global.scss b/sass/global.scss index 659a11f..2165147 100644 --- a/sass/global.scss +++ b/sass/global.scss @@ -2,31 +2,62 @@ html { min-height: 100vh; body { + background-color: var(--bg-color); display: flex; flex-direction: column; padding-top: 3.5rem; font-family: 'open_sansregular'; font-weight: 400; min-height: 100vh; + color: var(--font-color); + @include transition() {} &.is-accessible { font-family: 'lucioleregular'; + + .text-justify { + text-align: left; + } } footer.footer { margin-top: auto; padding: 2rem 0.7rem 1.5rem; - background-color: #fafafa; + background-color: var(--footer-color); + @include transition() {} } a { - color: #485fc7; + color: var(--link-color); cursor: pointer; + @include transition() {} + + &:hover { + color: var(--font-color); + } + } + + h1, + h2, + h3, + h4, + h5, + h6 { + color: var(--font-color); } h1 { margin-top: 2rem; } + + pre { + font-family: 'fira_codelight'; + margin: 0.75rem 0; + padding: 0.75rem; + border-left: 2px solid $nord10; + background: var(--box-bg-color); + color: var(--font-color); + } } } diff --git a/sass/home.scss b/sass/home.scss index 780546e..c98062e 100644 --- a/sass/home.scss +++ b/sass/home.scss @@ -1,4 +1,5 @@ .home { + margin-bottom: 0.75rem; .header { @include respond-to("small-up") { height: 30vh; diff --git a/sass/icons.scss b/sass/icons.scss index 1fa7efc..ec219a8 100644 --- a/sass/icons.scss +++ b/sass/icons.scss @@ -41,6 +41,8 @@ .icon-eye:before { content: '\e806'; } /* '' */ .icon-spin:before { content: '\e839'; } /* '' */ .icon-link-ext:before { content: '\f08e'; } /* '' */ +.icon-sun:before { content: '\f185'; } /* '' */ +.icon-moon:before { content: '\f186'; } /* '' */ .icon-trash:before { content: '\f1f8'; } /* '' */ .icon-blind:before { content: '\f29d'; } /* '' */ diff --git a/sass/index.scss b/sass/index.scss index 04f2d23..a2d268e 100644 --- a/sass/index.scss +++ b/sass/index.scss @@ -26,21 +26,21 @@ // SPÉCIFIQUE AU SITE @import './fonts'; +@import './colors'; +@import './mixin'; @import './global'; @import './navbar'; @import './forms'; @import './button.scss'; -@import './table'; @import './modal'; @import './toast'; @import './flash'; @import './pagination'; @import './icons'; @import './list'; +@import './box'; @import './error'; @import './home'; -@import './connexion'; @import './ajouter-un-album'; -@import './ma-collection'; -@import './nous-contacter'; \ No newline at end of file +@import './ma-collection'; \ No newline at end of file diff --git a/sass/list.scss b/sass/list.scss index 7301e7c..7c479ff 100644 --- a/sass/list.scss +++ b/sass/list.scss @@ -1,28 +1,33 @@ .list { - margin-top: 2rem; + margin: 2rem 0; .item{ padding: 0.5rem 0.75rem; - border-bottom: 1px solid #dbdbdb; + border-bottom: 1px solid var(--border-color); + @include transition() {} @include respond-to("medium") { &:nth-child(2n) { - background-color: #fafafa; + background-color: var(--default-color); } } @include respond-to("medium-up") { - border-left: 1px solid #dbdbdb; + border-left: 1px solid var(--border-color); &:first-child, &:nth-child(2) { - border-top: 1px solid #dbdbdb; + border-top: 1px solid var(--border-color); } &:nth-child(2n), &:last-child { - border-right: 1px solid #dbdbdb; + border-right: 1px solid var(--border-color); margin-right: -1px; } + + &:hover { + background-color: var(--default-color); + } } .title { @@ -35,7 +40,7 @@ } img { - border: 2px solid #4a4a4a; + border: 2px solid var(--font-color); max-width: 90%; } } diff --git a/sass/ma-collection.scss b/sass/ma-collection.scss index 76ee630..af22f2a 100644 --- a/sass/ma-collection.scss +++ b/sass/ma-collection.scss @@ -27,16 +27,17 @@ .title { .icon-trash { cursor: pointer; - color: #d73455; + color: $danger-color; + @include transition() {} &:hover { - color: #d70933; + color: $danger-color-hl; } } } } .total { - margin: 1rem 0; + margin: 0.75rem 0; } } \ No newline at end of file diff --git a/sass/mixin.scss b/sass/mixin.scss new file mode 100644 index 0000000..7d74137 --- /dev/null +++ b/sass/mixin.scss @@ -0,0 +1,4 @@ +@mixin transition() { + transition: background-color 200ms ease-in 0s, border-color 200ms ease-in 0s, box-shadow 200ms ease-in 0s, color 200ms ease-in 0s; + @content; +} diff --git a/sass/modal.scss b/sass/modal.scss index 1b35ae5..ffe0571 100644 --- a/sass/modal.scss +++ b/sass/modal.scss @@ -43,25 +43,25 @@ width: 1200; } - - header, footer { align-items: center; - background-color: #f5f5f5; + background-color: var(--navbar-color); display: flex; flex-shrink: 0; justify-content: flex-start; padding: 0.75rem; position: relative; + @include transition() {} } header { - border-bottom: 1px solid #dbdbdb; + border-bottom: 1px solid var(--border-color); border-top-left-radius: 6px; border-top-right-radius: 6px; justify-content: space-between; font-size: 1.5rem; + @include transition() {} button { user-select: none; @@ -85,7 +85,7 @@ &::before, &::after { - background-color: #fff; + background-color: var(--default-color); content: ""; display: block; left: 50%; @@ -105,16 +105,17 @@ } } section { - background-color: #fff; + background-color: var(--default-color); flex-grow: 1; flex-shrink: 1; overflow: auto; padding: 20px; + @include transition() {} } footer { border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; - border-top: 1px solid #dbdbdb; + border-top: 1px solid var(--border-color); .button:not(:last-child) { margin-right: .5em; diff --git a/sass/navbar.scss b/sass/navbar.scss index f3ea1e6..6b01d03 100644 --- a/sass/navbar.scss +++ b/sass/navbar.scss @@ -1,12 +1,14 @@ .navbar { min-height: 3.25rem; - background-color: #f5f5f5; + background-color: var(--navbar-color); + box-shadow: rgba(216, 222, 233, 0.15) 0px 5px 10px 0px; color: rgba(0,0,0,.7); position: fixed; z-index: 30; top: 0; right: 0; left: 0; + @include transition() {} @include respond-to("medium-up") { min-height: 3.25rem; @@ -22,18 +24,19 @@ .navbar-item { align-items: center; display: flex; - - img { + + img { max-height: 1.75rem; } span { word-break: break-word; - color: #363636; + color: var(--font-color); font-size: 2rem; font-weight: 600; line-height: 1.125; margin-left: .5rem !important; + @include transition() {} } } } @@ -101,8 +104,9 @@ position: relative; flex-grow: 0; flex-shrink: 0; - color: #4a4a4a; + color: var(--font-color); display: block; + @include transition() {} &.has-dropdown { padding: 0; @@ -113,10 +117,10 @@ color: rgba(0,0,0,.7); .navbar-dropdown { - background-color: #fff; + background-color: var(--default-color); border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; - border-top: 2px solid #dbdbdb; + border-top: 2px solid var(--default-hl-color); box-shadow: 0 8px 8px rgba(10,10,10,.1); display: none; font-size: .875rem; @@ -129,7 +133,7 @@ &:hover { .navbar-link { - background-color: #e8e8e8; + background-color: var(--default-hl-color); color: rgba(0,0,0,.7); } @@ -147,13 +151,14 @@ } .navbar-link { - color: #4a4a4a; + color: var(--font-color); display: block; line-height: 1.5; padding: .5rem .75rem; position: relative; cursor: pointer; padding-right: 2.5em; + @include transition() {} @include respond-to("medium-up") { display: flex; @@ -182,7 +187,7 @@ transform: rotate(-45deg); transform-origin: center; width: .625em; - border-color: #485fc7; + border-color: var(--secondary-color); margin-top: -0.375em; right: 1.125em; @@ -194,9 +199,10 @@ .navbar-menu { display: none; - background-color: #fff; + background-color: var(--default-color); box-shadow: 0 8px 16px rgba(10,10,10,.1); padding: .5rem 0; + @include transition() {} @include respond-to("medium") { max-height: calc(100vh - 3.25rem); @@ -253,10 +259,10 @@ } @include respond-to("medium-up") { - background-color: #fff; + background-color: var(--default-color); border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; - border-top: 2px solid #dbdbdb; + border-top: 2px solid var(--default-hl-color); box-shadow: 0 8px 8px rgba(10,10,10,.1); display: none; font-size: .875rem; @@ -297,4 +303,11 @@ margin-bottom: -0.5rem; } } +} + + +[data-theme="dark"] { + .navbar { + box-shadow: none; + } } \ No newline at end of file diff --git a/sass/nous-contacter.scss b/sass/nous-contacter.scss deleted file mode 100644 index 1021eb0..0000000 --- a/sass/nous-contacter.scss +++ /dev/null @@ -1,15 +0,0 @@ -.nous-contacter { - width: calc(100% - 2rem); - margin: 2rem auto; - - @include respond-to("small-up") { - width: 55%; - } - @include respond-to("medium-up") { - width: 35%; - } - - button { - margin-top: 2rem; - } -} \ No newline at end of file diff --git a/sass/pagination.scss b/sass/pagination.scss index 77f0669..ddf2695 100644 --- a/sass/pagination.scss +++ b/sass/pagination.scss @@ -4,73 +4,8 @@ display: flex; text-align: center; justify-content: space-between; - margin: 1rem 0; + margin: 0.75rem 0; - .pagination-previous, - .pagination-next, - .pagination-link { - align-items: center; - border: 1px solid transparent; - border-radius: .375em; - box-shadow: none; - display: inline-flex; - font-size: 1rem; - height: 2.5em; - justify-content: flex-start; - line-height: 1.5; - padding-bottom: calc(.5em - 1px); - padding-left: calc(.75em - 1px); - padding-right: calc(.75em - 1px); - padding-top: calc(.5em - 1px); - position: relative; - vertical-align: top; - text-decoration: none; - - &:hover { - border-color: #b5b5b5; - color: #363636; - } - - &.is-disabled { - background-color: #dbdbdb; - border-color: #dbdbdb; - box-shadow: none; - color: #7a7a7a; - opacity: .5; - } - } - - .pagination-previous, - .pagination-next, - .pagination-link { - user-select: none; - text-align: center; - font-size: 1em; - justify-content: center; - margin: .25rem; - border-color: #dbdbdb; - color: #363636; - min-width: 2.5em; - padding-left: .75em; - padding-right: .75em; - white-space: nowrap; - margin-bottom: 0; - margin-top: 0; - } - .pagination-previous { - order: 2; - } - .pagination-next { - order: 3; - } - - .pagination-link { - &.is-current { - background-color: #485fc7; - border-color: #485fc7; - color: #fff; - } - } .pagination-list { align-items: center; @@ -79,7 +14,56 @@ flex-wrap: wrap; flex-grow: 1; flex-shrink: 1; - justify-content: flex-start; - order: 1; + justify-content: flex-end; + + @include respond-to("small") { + justify-content: center; + } + + .pagination-link { + align-items: center; + border: 1px solid transparent; + border-radius: .375em; + box-shadow: none; + display: inline-flex; + font-size: 1rem; + height: 2.5em; + justify-content: flex-start; + line-height: 1.5; + padding: calc(.5em - 1px) calc(.75em - 1px); + position: relative; + vertical-align: top; + text-decoration: none; + user-select: none; + text-align: center; + font-size: 1em; + justify-content: center; + margin: .25rem; + border-color: $pagination-border-color; + color: var(--font-color); + min-width: 2.5em; + white-space: nowrap; + + @include transition() {} + + &:hover { + border-color: $pagination-hover-color; + color: $pagination-hover-color; + } + + &.is-disabled { + background-color: var(--default-hl-color); + border-color: var(--default-hl-color); + box-shadow: none; + color: var(--disabled-color); + opacity: .5; + } + + &.is-current { + background-color: $primary-color; + border-color: $primary-color; + color: $button-font-color; + } + } } } \ No newline at end of file diff --git a/sass/table.scss b/sass/table.scss deleted file mode 100644 index 1ef200f..0000000 --- a/sass/table.scss +++ /dev/null @@ -1,24 +0,0 @@ -table { - color: #363636; - - th, td { - padding: .5em .75em; - border-bottom: 1px solid #dbdbdb; - } - - th { - border-bottom-width: 2px; - } - - tr:nth-child(2n) { - background-color: #fafafa; - } - - tbody { - tr { - &:hover { - background-color: #f5f5f5; - } - } - } -} \ No newline at end of file diff --git a/sass/toast.scss b/sass/toast.scss index 5a14e68..21d1730 100644 --- a/sass/toast.scss +++ b/sass/toast.scss @@ -9,8 +9,9 @@ font-size: 17px; padding: 1.25rem 2.5rem 1.25rem 1.5rem; - background-color: #d73455; - color: #fff; + background-color: $danger-color; + color: $button-alternate-color; + border-radius: 6px; &.show { visibility: visible; @@ -43,7 +44,7 @@ &::before, &::after { - background-color: #fff; + background-color: var(--default-color); content: ""; display: block; left: 50%; diff --git a/src/routes/index.js b/src/routes/index.js index 595cad7..8a340a0 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -117,6 +117,16 @@ router.route("/nous-contacter").get(async (req, res, next) => { } }); +router.route("/composants").get(async (req, res, next) => { + try { + const page = new Pages(req, "composants"); + + render(res, page); + } catch (err) { + next(err); + } +}); + router.route("/se-deconnecter").get((req, res) => { req.logout(); req.session.destroy(() => { diff --git a/views/index.ejs b/views/index.ejs index 3e43aba..e1ac71a 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -1,9 +1,9 @@ - + - + <% if (page.title) { %><%= page.title %> <% } else { %> DarKou - My Music Library <% } %> @@ -13,123 +13,12 @@ - + - + - - +
- +
@@ -216,7 +113,7 @@
<%= page.failureFlash %>
- <% } %> + <% } %> <% if (error && error.length > 0) { for( let i = 0 ; i < error.length ; i += 1 ) { @@ -229,11 +126,11 @@ <% } - } + } %> <% } %> - + <%- include(viewname) %>