@roadtrip/css
Version:
CSS framework for Roadtrip Design System
176 lines (143 loc) • 3.21 kB
CSS
/*
* Accordion
*
* For accessibility, we provide a style for focus only on Tab.
* For enable this focus, load the javascript polyfill for focus-visible
* (https://github.com/WICG/focus-visible).
*
* Index
* - Accordion
* - Accordion button
* - Accordion content
*
*/
/* ACCORDION
-------------------- */
.accordion {
--max-height: none;
overflow: hidden;
font-family: var(--road-font, sans-serif);
font-size: var(--road-body-small);
line-height: 1.5;
color: var(--road-on-surface);
background: var(--road-surface);
border: 1px solid;
border-color: var(--road-input-outline);
border-radius: 0.25rem;
transition: max-height 0.3s ease-in-out;
}
.accordion.accordion-light {
background: none;
border: 0;
}
/**
* Open state
*/
.accordion[open] {
max-height: var(--max-height);
}
.accordion[open] .accordion-arrow{
transform: rotate(-90deg);
}
.accordion[open] .accordion-content{
padding: 0.75rem 0 0;
margin: 0 1rem 0.75rem;
}
.accordion-light[open] .accordion-light-content {
margin: 0 0 var(--road-spacing-04);
}
.accordion-light[open] .accordion-light-header::after {
display: none;
}
/* ACCORDION BUTTON
-------------------- */
.accordion-trigger {
box-sizing: border-box;
display: block;
border: 1px solid transparent;
border-radius: 0.25rem;
outline: 0;
}
.accordion-light .accordion-trigger:active{
background: none;
}
.accordion-trigger::-webkit-details-marker{ /* Remove chrome native arrow */
display: none;
}
/**
* Focus on Tab
*/
.accordion-trigger.focus-visible {
border-color: var(--road-primary);
}
/**
* Active state
*/
.accordion-trigger:active {
background: var(--road-surface-inverse);
}
/**
* .accordion-header is an additionnal div
* because Safari doesn't support flexbox on <summary> element
*/
.accordion-header {
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: flex-start;
padding: 0.75rem 1rem;
font-size: var(--road-body-medium);
font-weight: 700;
cursor: pointer;
}
.accordion-light-header{
position: relative;
padding: var(--road-spacing-04) 0;
font-size: var(--road-body-large);
}
.accordion-light--small .accordion-light-header {
font-size: var(--road-body-medium);
}
.accordion-light--border .accordion-light-header::after {
position: absolute;
bottom: 1px;
width: 98.3%;
height: 1px;
content: "";
background: var(--road-outline-weak);
}
/**
* Custom arrow
*/
.accordion-arrow {
width: 2rem;
height: 2rem;
margin-left: auto;
transform: rotate(90deg);
fill: var(--road-icon);
}
.accordion-light--small .accordion-arrow {
width: 1.5rem;
height: 1.5rem;
}
.accordion-icon-left {
width: 1.5rem;
height: 1.5rem;
margin-right: 1rem;
}
/* ACCORDION CONTENT
-------------------- */
.accordion-content{
padding: 0 0.5rem;
margin: 0 1rem;
overflow: hidden;
font-size: var(--road-body-medium);
border-top: 1px solid var(--road-outline-weak);
}
.accordion-light-content {
border-top: 1px solid var(--road-outline-weak);
}
.accordion-light--border .accordion-light-content {
border-top: 1px solid var(--road-outline-weak);
border-bottom: 1px solid var(--road-outline-weak);
}