add sort & view for species

This commit is contained in:
Julie Blanc 2026-02-15 23:14:52 +01:00
parent 718ca47696
commit 6fff7422e8
26 changed files with 1448 additions and 432 deletions

View file

@ -18,13 +18,6 @@ body {
print-color-adjust:exact !important; */
}
main:not(#main_home){
min-height: calc(100vh - var(--header-h));
max-width: 900px;
margin-inline: auto;
// margin-top: var(--header-h);
/* padding: var(--padding-body); */
}

View file

@ -2,7 +2,7 @@
.home--section-tool{
background-color: var(--color);
background-color: var(--data-color);
&[data-type="base-connaissance"],
&[data-type="livrets"]{
color: var(--white);
@ -10,14 +10,6 @@
}
#main_home {
--max-w-home: 1100px;
section {
@ -38,18 +30,15 @@
}
.section--header {
margin-bottom: calc(var(--spacing) * 4);
display: grid;
// grid-template-columns: 3fr 2fr;
grid-template-columns: 1fr 440px;
margin-bottom: calc(var(--spacing) * 4);
display: grid;
grid-template-columns: 1fr 440px;
gap: calc(var(--spacing)*1);
}
.section--title {
font-size: 2.8rem;
font-family: var(--font-title);
// margin-bottom: calc(var(--spacing) * 1.5);
grid-column: span 2;
}
@ -90,8 +79,6 @@
text-align: center;
width: 100%;
max-width: 100%;
}
.section--title {
@ -132,9 +119,8 @@
min-width: 12ch;
text-align: center;
border: 1.5px solid var(--color);
color: var(--color);
border: 1.5px solid var(--data-color);
color: var(--data-color);
display: inline-flex;
align-items: center;
@ -145,7 +131,7 @@
cursor: pointer;
&:hover {
background-color: var(--color-light);
background-color: var(--data-color-light);
}
@ -153,20 +139,12 @@
a {
text-decoration: none;
color: var(--color);
color: var(--data-color);
font-weight: bold;
/* &::after{
content: ""
} */
}
}
.see-more {
display: block;
// color: var(--color-txt);
// font-weight: bold;
padding-top: calc(var(--unit)*1.5);
}
}

View file

@ -1,3 +1,59 @@
.page-content{
font-size: var(--fs-medium);
}
line-height: 1.4;
max-width: var(--max-width-content);
margin-inline: auto;
padding-inline: var(--padding-body);
margin-bottom: 30vh;
p {
margin: var(--spacing) 0;
}
ol, ul{
margin-left: calc(var(--spacing)*2);
}
li{
margin: calc(var(--spacing)*0.5) 0;
}
h3{
font-size: 1.8em;
line-height: 1.1;
font-weight: bold;
color: var(--color-green);
padding-top: var(--top-target);
margin-bottom: calc(var(--spacing)*1.5);
}
h4{
font-size: 1.2em;
color: var(--color-green);
font-weight: bold;
// text-decoration: 2px underline currentColor;
margin-top: calc(var(--spacing)*3.5);
margin-bottom: calc(var(--spacing)*1.5);
}
}
// Specific for target with toc
.page-nav + .page-content > :first-child {
padding-top: 0px;
&:target{
padding-top: var(--top-target);
}
}
// main:not(#main_home){
// min-height: calc(100vh - var(--header-h));
// max-width: 900px;
// margin-inline: auto;
// }

View file

@ -0,0 +1,21 @@
.page-grid{
max-width: calc(var(--max-width-content)*1.3 + var(--padding-inner)*2 + var(--padding-body)*2);
display: grid;
grid-template-columns: 1fr var(--max-width-content);
// gap: calc(var(--padding-inner)*2);
margin-inline: auto;
margin-top: calc(var(--spacing)*5);
padding-inline: var(--padding-body);
.page-nav{
align-self: start;
position: sticky;
top: var(--top-target);
}
}

View file

@ -1,10 +1,60 @@
.page-header{
margin-top: calc(var(--spacing)*3);
margin-bottom: calc(var(--spacing)*2);
// margin-top: calc(var(--spacing)*1);
// margin-bottom: calc(var(--spacing)*2);
color: var(--color-green);
background-color: var(--color-green-light);
padding: calc(var(--spacing)*3) var(--padding-body);
.page-header__inner{
max-width: var(--max-width-container);
margin-inline: auto;
}
.page-title{
font-size: var(--fs-title-page);
font-family: var(--font-title);
// color: var(--color-green);
margin-bottom: calc(var(--spacing)*1);
}
.description{
font-size: var(--fs-medium);
line-height: 1.2;
margin: calc(var(--spacing)*1) 0;
// max-width: var(--max-width-content);
}
.details{
display: flex;
gap: calc(var(--padding-inner)*5);
margin-top: calc(var(--spacing)*3);
}
.details__item{
.nbr{
font-size: var(--fs-title-page);
font-family: var(--font-title);
}
.text{
font-size: var(--fs-medium);
font-weight: bold;
}
button{
margin-top: calc(var(--spacing)*1);
a{
color: var(--color-green);
}
}
}
}

30
assets/css/_page-nav.scss Normal file
View file

@ -0,0 +1,30 @@
.page-nav{
.toc{
list-style: none;
li{
font-size: var(--fs-normal);
line-height: 1.2;
font-weight: bold;
margin-bottom: calc(var(--spacing)*1);
a{
color: currentColor;
text-decoration: none;
&:hover{
text-decoration: 1px underline;
text-underline-offset: 2px;
}
}
}
}
}

View file

@ -1,4 +1,5 @@
@mixin icon($size){
display: inline-block;
width: $size;
height: $size;
@ -18,15 +19,15 @@
height: 100%;
circle{
fill: #cfcfcf;
fill: #efefef;
}
.filled{
fill: lightgreen;
fill: var(--color-orange-medium);
}
.verified{
fill: green;
fill: var(--color-green);
}
}
}

View file

@ -7,7 +7,7 @@
--fs-small: 14px;
--fs-normal: 16px;
--fs-medium: 22px;
--fs-title-page: 38px;
--fs-title-page: 42px;
--spacing: 20px;
@ -21,7 +21,7 @@
--radius-btn: 6px;
--radius-img: 6px;
--header-h: 60px;
--header-h: 80px;
--header-z: 9000;
--white: white;
@ -49,19 +49,28 @@
--color-orange-light: #f3e7e0;
--color-green: #007953;
--color-green-medium: #a1ccbe;;
// --color-green-medium: #a1ccbe;
--color-green-medium: #42af8c;
--color-green-light: #d5ebe4;
--color-green-x-light: #eef7f4;
--color-green-black: #016042;
--color-txt: rgb(41, 41, 41);
--color-txt-light: #a5a9a9;
--color-light: #DCDDDD;
--color-x-light: #eaebeb;
--color-xx-light: #f4f4f4;
--color: var(--color-green);
--color-medium: var(--color-green-medium);
--color-light: var(--color-green-light);
--max-width-content: 740px;
--max-width-container: 860px;
--top-target: calc(var(--spacing)*5);
}
@ -70,28 +79,28 @@
[data-type="livrets"]{
--color: var(--color-violet);
--color-medium: var(--color-violet-medium);
--color-light: var(--color-violet-light);
--data-color: var(--color-violet);
--data-color-medium: var(--color-violet-medium);
--data-color-light: var(--color-violet-light);
}
[data-type="base-connaissance"]{
--color: var(--color-green);
--color-medium: var(--color-green-medium);
--color-light: var(--color-green-light);
--data-color: var(--color-green);
--data-color-medium: var(--color-green-medium);
--data-color-light: var(--color-green-light);
}
[data-type="animations"]{
--color: var(--color-orange);
--color-medium: var(--color-orange-medium);
--color-light: var(--color-orange-light);
--data-color: var(--color-orange);
--data-color-medium: var(--color-orange-medium);
--data-color-light: var(--color-orange-light);
}
[data-type="methodologie"]{
--color: var(--color-yellow);
--color-medium: var(--color-yellow-medium);
--color-light: var(--color-yellow-light);
--data-color: var(--color-yellow);
--data-color-medium: var(--color-yellow-medium);
--data-color-light: var(--color-yellow-light);
}

View file

@ -1,4 +1,4 @@
@use "../abstracts/mixins.scss" as *;
.btn--solid{
font-weight: 600;
@ -28,3 +28,74 @@
}
.btn-action {
border: 1px solid var(--color-txt-light);
height: calc(var(--unit)*1.25);
background-color: var(--white);
border-radius: var(--radius-btn);
cursor: pointer;
a{
display: flex;
align-items: center;
gap: 1ch;
text-decoration: none;
color: var(--color-txt);
padding: 0 1ch;
}
.icon{
@include icon(20px);
}
.text{
font-size: var(--fs-small);
font-weight: 500;
}
&:hover{
border-color: var(--color-txt);
}
}
label.btn-action{
display: inline-flex;
align-items: center;
gap: 1ch;
text-decoration: none;
color: var(--color-txt);
padding: 0 1ch;
.text{
font-weight: 700;
}
}
.link-with-arrow{
a{
text-decoration: none;
color: var(--color-txt);
font-size: var(--fs-small);
&::after{
content: "";
font-family: var(--font-title);
font-size: 0.9em;
position: relative;
left: 1.5ch;
transition: left .4s ease-in-out;
text-decoration: 1px underline transparent;
}
}
&:hover{
opacity: 0.8;
a::after{
left: 2.5ch;
}
}
}

View file

@ -1,26 +0,0 @@
.see-more{
--hover-bg: var(--color-bg);
font-weight: 500;
color: var(--color-txt);
color: currentColor;
text-decoration: none;
span{ display: none;}
&::after{
content: "";
position: relative;
display: inline-block;
padding-left: 0.75ch;
left: 0;
transition: left .4s ease-in-out;
}
&:hover{
text-decoration: underline;
&::after{
left: 0.5ch;
text-decoration: underline var(--hover-bg);
}
}
}

View file

@ -0,0 +1,32 @@
.sort{
display: flex;
justify-content: flex-start;
align-items: center;
gap: calc(var(--padding-inner)*0.5);
p{
font-weight: 500;
padding-right: 1ch;
}
.is-selected{
background-color: var(--color-txt);
color: var(--white);
a{
color: var(--white);
}
svg {
fill: var(--white);
}
}
}
.group-sort-view{
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
margin-bottom: calc(var(--spacing)*1.5);
}

View file

@ -1,29 +1,23 @@
.species-list{
display: grid;
display: flex;
flex-wrap: wrap;
justify-content: center;
// gap: calc(var(--spacing)*2);
gap: calc(var(--spacing)*1);
gap: calc(var(--spacing)*1.5);
margin-bottom: calc(var(--spacing)*3);
.taxon{
width: calc(100%/3 - var(--spacing)*3/3);
}
}
.family{
margin-bottom: calc(var(--spacing)*4);
&:target{
padding-top: var(--top-target);
}
.family__header{

View file

@ -0,0 +1,99 @@
#view-edit:checked ~ .family .species-list,
#view-edit:checked ~ .species-list,
#view-list:checked ~ .family .species-list,
#view-list:checked ~ .species-list {
display: block;
.taxon{
width: 100%;
display: flex;
flex-direction: row;
align-items: center;
background-color: transparent;
padding-inline: 0;
gap: calc(var(--padding-inner)*1);
outline: none;
border-bottom: 1px solid var(--color-green-light);
padding-top: calc(var(--padding-inner)*0.5);
padding-bottom: calc(var(--padding-inner)*0.5);
&::before{
content: '';
width: 100%;
border-top: 1px solid transparent;
position: absolute;
top: -1px;
}
&:first-of-type::before{ border-color: var(--color-green-light);}
.chart-edit {
display: block;
margin-right: var(--padding-inner);
}
figure{ order: 1; }
.name{ order: 2; }
.chart-edit{ order: 3; }
.btn-edit{ order: 4; }
figure{
width: 60px;
}
.name{
flex-grow: 1;
display: flex;
flex-direction: column;
justify-content: center;
.vernacular, .latin{
padding: 0;
margin: 0;
text-align: left;
}
.vernacular{
background-color: transparent;
color: var(--color-green);
font-size: var(--fs-medium);
a{
color: var(--color-green);
}
}
.latin{
text-align: left;
padding-bottom: calc(var(--spacing)*0.25);
}
}
&:hover{
outline: none;
background-color: var(--color-green-x-light);
border-color: var(--color-green);
&::before{ border-color: var(--color-green); }
}
}
}
#view-edit:checked ~ .family .species-list,
#view-edit:checked ~ .species-list{
.taxon .btn-edit{
display: block!important;
z-index: 100;
}
}

View file

@ -2,15 +2,13 @@
.species-list .taxon{
.btn-edit {
@include icon(20px);
}
.chart-edit{
@include chart-edit(40px);
}
.chart-edit, .btn-edit{
.chart-edit, .btn-edit{
display: none;
}
@ -21,11 +19,10 @@
position: relative;
background-color: var(--color-green-light);
padding: 20px;
padding: calc(var(--padding-inner)*0.75);
.vernacular{ order: 1; }
.latin{ order: 2; }
figure{ order: 3; }
.name{ order: 1; }
figure{ order: 2; }
figure{
@include fig-ratio(1/1);
@ -41,6 +38,8 @@
border-radius: var(--radius-small);
padding: 4px 1ch;
margin-bottom: calc(var(--spacing)*0.25);
font-size: var(--fs-normal);
line-height: 1.1;
a{
color: white;
text-decoration: none;
@ -53,6 +52,7 @@
font-style: italic;
margin-bottom: calc(var(--spacing)*0.75);
color: var(--color-txt);
font-size: var(--fs-small);
}
.vernacular, .latin{

View file

@ -1,10 +1,29 @@
.team{
display: flex;
flex-wrap: wrap;
gap: 2ch;
.member{
display: flex;
align-items: center;
gap: 2ch;
width: calc(50% - 2ch);
.name{
font-weight: bold;
}
.details{
font-size: var(--fs-normal);
margin-top: calc(var(--spacing)*0.25);
}
img{
width: 60px;
width: 100px;
aspect-ratio: 1/1;
background-color: #cfcfcf;
border-radius: var(--radius-img);
float: left;
}
}
}

View file

@ -0,0 +1,40 @@
input#view-edit,
input#view-grid,
input#view-list{
display: none;
}
.view-toggle{
display: flex;
justify-content: flex-end;
align-items: center;
gap: calc(var(--padding-inner)*0.5);
p{
font-weight: 500;
padding-right: 1.5ch;
}
label{
.txt{
font-weight: 700!important;
}
}
}
input#view-edit:checked ~ .group-sort-view .view-toggle label[for="view-edit"],
input#view-list:checked ~ .group-sort-view .view-toggle label[for="view-list"],
input#view-grid:checked ~ .group-sort-view .view-toggle label[for="view-grid"],
input#view-edit:checked ~ .view-toggle label[for="view-edit"],
input#view-list:checked ~ .view-toggle label[for="view-list"],
input#view-grid:checked ~ .view-toggle label[for="view-grid"]{
background-color: var(--color-txt);
color: var(--white);
svg {
fill: var(--white);
}
}