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

69 wiersze
1.6 KiB
TypeScript

import { css } from 'lit';
export default css`
:host {
--size: 128px;
--track-width: 4px;
--track-color: var(--sl-color-neutral-200);
--indicator-width: var(--track-width);
--indicator-color: var(--sl-color-primary-600);
--indicator-transition-duration: 0.35s;
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);
rotate: -90deg;
transform-origin: 50% 50%;
}
.progress-ring__track,
.progress-ring__indicator {
--radius: calc(var(--size) / 2 - max(var(--track-width), var(--indicator-width)) * 0.5);
--circumference: calc(var(--radius) * 2 * 3.141592654);
fill: none;
r: var(--radius);
cx: calc(var(--size) / 2);
cy: calc(var(--size) / 2);
}
.progress-ring__track {
stroke: var(--track-color);
stroke-width: var(--track-width);
}
.progress-ring__indicator {
stroke: var(--indicator-color);
stroke-width: var(--indicator-width);
stroke-linecap: round;
transition-property: stroke-dashoffset;
transition-duration: var(--indicator-transition-duration);
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;
-webkit-user-select: none;
}
`;