securityos/styles/common/ScrollBars.ts

112 lines
3.1 KiB
TypeScript

import type { FlattenSimpleInterpolation } from "styled-components";
import { css } from "styled-components";
import { DOWN, LEFT, RIGHT, UP } from "styles/ArrowIcons";
const ScrollBars = (
size: number,
verticalX = 0,
verticalY = 0
): FlattenSimpleInterpolation => css`
overflow: auto;
scrollbar-color: rgb(77, 77, 77) rgb(23, 23, 23);
scrollbar-gutter: stable;
&::-webkit-scrollbar {
height: ${size}px;
width: ${size}px;
}
&::-webkit-scrollbar-corner,
&::-webkit-scrollbar-track {
background-color: rgb(23, 23, 23);
}
&::-webkit-scrollbar-thumb {
background-clip: padding-box;
background-color: rgb(77, 77, 77);
}
&::-webkit-scrollbar-thumb:vertical {
background-clip: padding-box;
background-color: rgb(77, 77, 77);
border-left: 1px solid transparent;
border-right: 1px solid transparent;
}
&::-webkit-scrollbar-thumb:horizontal {
border-bottom: 1px solid transparent;
border-top: 1px solid transparent;
}
&::-webkit-scrollbar-thumb:hover {
background-color: rgb(122, 122, 122);
}
&::-webkit-scrollbar-thumb:active {
background-color: rgb(166, 166, 166);
}
&::-webkit-scrollbar-button:single-button {
background-clip: padding-box;
background-color: rgb(23, 23, 23);
background-position: center 4px;
background-repeat: no-repeat;
background-size: 10px;
border: 1px solid rgb(23, 23, 23);
display: block;
height: ${size ? `${size}px` : "initial"};
&:hover {
background-color: rgb(55, 55, 55);
}
&:active {
background-color: rgb(166, 166, 166);
}
}
&::-webkit-scrollbar-button:single-button:vertical:decrement,
&::-webkit-scrollbar-button:single-button:vertical:increment {
background-position-x: ${verticalX === 0 ? "center" : `${verticalX}px`};
background-position-y: ${verticalY === 0 ? "center" : `${verticalY}px`};
background-size: 16px;
border-bottom: 0;
border-top: 0;
image-rendering: pixelated;
}
&::-webkit-scrollbar-button:single-button:vertical:decrement {
background-image: url(${UP});
}
&::-webkit-scrollbar-button:single-button:vertical:increment {
background-image: url(${DOWN});
}
&::-webkit-scrollbar-button:single-button:horizontal:decrement,
&::-webkit-scrollbar-button:single-button:horizontal:increment {
background-position: center;
background-size: 16px;
border-left: 0;
border-right: 0;
image-rendering: pixelated;
}
&::-webkit-scrollbar-button:single-button:horizontal:decrement {
background-image: url(${LEFT});
}
&::-webkit-scrollbar-button:single-button:horizontal:increment {
background-image: url(${RIGHT});
}
&::-webkit-scrollbar-button:single-button:vertical:decrement:active,
&::-webkit-scrollbar-button:single-button:vertical:increment:active,
&::-webkit-scrollbar-button:single-button:horizontal:decrement:active,
&::-webkit-scrollbar-button:single-button:horizontal:increment:active {
background-blend-mode: color-burn;
}
`;
export default ScrollBars;