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

72 wiersze
1.7 KiB
TypeScript
Czysty Zwykły widok Historia

2021-07-10 00:45:44 +00:00
import { css } from 'lit';
2023-06-22 14:56:24 +00:00
import componentStyles from '../../styles/component.styles.js';
2021-07-10 00:45:44 +00:00
export default css`
${componentStyles}
:host {
2021-09-17 22:15:13 +00:00
--size: 128px;
--track-width: 4px;
--track-color: var(--sl-color-neutral-200);
2022-07-21 19:29:58 +00:00
--indicator-width: var(--track-width);
--indicator-color: var(--sl-color-primary-600);
2022-10-28 13:57:41 +00:00
--indicator-transition-duration: 0.35s;
2021-07-10 00:45:44 +00:00
display: inline-flex;
}
.progress-ring {
display: inline-flex;
align-items: center;
justify-content: center;
position: relative;
}
.progress-ring__image {
2021-09-17 22:15:13 +00:00
width: var(--size);
height: var(--size);
2022-12-01 20:26:46 +00:00
rotate: -90deg;
2021-07-10 00:45:44 +00:00
transform-origin: 50% 50%;
}
2021-09-17 22:15:13 +00:00
.progress-ring__track,
.progress-ring__indicator {
2022-07-21 19:29:58 +00:00
--radius: calc(var(--size) / 2 - max(var(--track-width), var(--indicator-width)) * 0.5);
2021-09-21 03:14:39 +00:00
--circumference: calc(var(--radius) * 2 * 3.141592654);
2021-09-17 22:15:13 +00:00
fill: none;
r: var(--radius);
cx: calc(var(--size) / 2);
cy: calc(var(--size) / 2);
}
2021-07-10 00:45:44 +00:00
.progress-ring__track {
stroke: var(--track-color);
2022-07-21 19:29:58 +00:00
stroke-width: var(--track-width);
2021-07-10 00:45:44 +00:00
}
.progress-ring__indicator {
stroke: var(--indicator-color);
2022-07-21 19:29:58 +00:00
stroke-width: var(--indicator-width);
2021-09-17 22:15:13 +00:00
stroke-linecap: round;
2022-10-28 13:57:41 +00:00
transition-property: stroke-dashoffset;
transition-duration: var(--indicator-transition-duration);
2021-09-17 22:15:13 +00:00
stroke-dasharray: var(--circumference) var(--circumference);
2021-09-21 03:14:39 +00:00
stroke-dashoffset: calc(var(--circumference) - var(--percentage) * var(--circumference));
2021-07-10 00:45:44 +00:00
}
.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;
2023-10-16 16:55:20 +00:00
-webkit-user-select: none;
2021-07-10 00:45:44 +00:00
}
`;