shoelace/src/components/progress-ring/progress-ring.styles.ts

67 wiersze
1.5 KiB
TypeScript

import { css } from 'lit';
import componentStyles from '~/styles/component.styles';
export default css`
${componentStyles}
:host {
--size: 128px;
--track-width: 4px;
--track-color: var(--sl-color-neutral-200);
--indicator-color: var(--sl-color-primary-600);
display: inline-flex;
}
.progress-ring {
display: inline-flex;
align-items: center;
justify-content: center;
position: relative;
}
.progress-ring__image {
width: var(--size);
height: var(--size);
transform: rotate(-90deg);
transform-origin: 50% 50%;
}
.progress-ring__track,
.progress-ring__indicator {
--radius: calc(var(--size) / 2 - var(--track-width) * 0.5);
--circumference: calc(var(--radius) * 2 * 3.141592654);
fill: none;
stroke-width: var(--track-width);
r: var(--radius);
cx: calc(var(--size) / 2);
cy: calc(var(--size) / 2);
}
.progress-ring__track {
stroke: var(--track-color);
}
.progress-ring__indicator {
stroke: var(--indicator-color);
stroke-linecap: round;
transition: 0.35s stroke-dashoffset;
stroke-dasharray: var(--circumference) var(--circumference);
stroke-dashoffset: calc(var(--circumference) - var(--percentage) * var(--circumference));
}
.progress-ring__label {
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
text-align: center;
user-select: none;
}
`;