mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-20 12:38:19 +00:00
134 lines
2.2 KiB
CSS
134 lines
2.2 KiB
CSS
/* credits: https://iamkate.com/code/tree-views/ */
|
|
.tree {
|
|
--spacing: 1.5rem;
|
|
--radius: 4px;
|
|
}
|
|
|
|
.tree li {
|
|
display: block;
|
|
position: relative;
|
|
padding-left: calc(2 * var(--spacing) - var(--radius) - 2px);
|
|
}
|
|
|
|
.tree ul {
|
|
margin-left: calc(var(--radius) - var(--spacing));
|
|
padding-left: 0;
|
|
}
|
|
|
|
.tree ul li {
|
|
border-left: 2px solid #888;
|
|
min-height: 2.5rem;
|
|
}
|
|
|
|
.tree ul li:last-child {
|
|
border-color: transparent;
|
|
}
|
|
|
|
.tree ul li::before {
|
|
content: "";
|
|
display: block;
|
|
position: absolute;
|
|
top: calc(var(--spacing) / -1);
|
|
left: -2px;
|
|
width: calc(var(--spacing) + 2px);
|
|
height: calc(var(--spacing) + 13px);
|
|
border: solid #888;
|
|
border-radius: 0 0 0 8px;
|
|
border-width: 0 0 2px 2px;
|
|
transition: all 200ms linear;
|
|
}
|
|
|
|
.details[open] summary ~ * {
|
|
animation: sweep 0.5s ease-in-out;
|
|
}
|
|
|
|
@keyframes sweep {
|
|
0% {
|
|
opacity: 0;
|
|
margin-left: -10px;
|
|
}
|
|
100% {
|
|
opacity: 1;
|
|
margin-left: 0px;
|
|
}
|
|
}
|
|
|
|
.tree summary {
|
|
display: block;
|
|
cursor: pointer;
|
|
min-height: 2.5rem;
|
|
}
|
|
|
|
.tree summary::marker,
|
|
.tree summary::-webkit-details-marker {
|
|
display: none;
|
|
}
|
|
|
|
.tree summary:focus {
|
|
outline: none;
|
|
}
|
|
|
|
.tree summary:focus-visible {
|
|
outline: 1px dotted #000;
|
|
}
|
|
|
|
.tree li::after,
|
|
.tree summary::before {
|
|
content: "";
|
|
display: block;
|
|
position: absolute;
|
|
top: calc(var(--spacing) / 2 - var(--radius));
|
|
left: calc(var(--spacing) - var(--radius) - 1px);
|
|
width: calc(2 * var(--radius));
|
|
height: calc(2 * var(--radius));
|
|
border-radius: 50%;
|
|
background: #ddd;
|
|
}
|
|
|
|
.tree summary::before {
|
|
z-index: 1;
|
|
background: #ddd 0 0;
|
|
}
|
|
|
|
.tree details[open] > summary::before {
|
|
background-position: calc(-2 * var(--radius)) 0;
|
|
}
|
|
|
|
.collapsibleContent {
|
|
/*overflow-y: hidden;*/
|
|
}
|
|
.collapsibleContent[data-state="open"] {
|
|
animation: slideDown 300ms ease-out;
|
|
}
|
|
.collapsibleContent[data-state="closed"] {
|
|
animation: slideUp 300ms ease-out;
|
|
}
|
|
|
|
@keyframes slideDown {
|
|
0% {
|
|
height: 0;
|
|
opacity: 0;
|
|
}
|
|
50% {
|
|
opacity: 0;
|
|
}
|
|
100% {
|
|
height: var(--radix-collapsible-content-height);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes slideUp {
|
|
0% {
|
|
height: var(--radix-collapsible-content-height);
|
|
opacity: 1;
|
|
}
|
|
50% {
|
|
opacity: 0;
|
|
}
|
|
100% {
|
|
height: 0;
|
|
opacity: 0;
|
|
}
|
|
}
|