[data-rs-skeleton] {
position: relative;
background: var(--skeleton-bg);
border-radius: var(--skeleton-radius);
overflow: hidden;
}
[data-rs-skeleton]::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(
90deg,
var(--skeleton-shimmer-color-start) 0%,
var(--skeleton-shimmer-color-end) 50%,
var(--skeleton-shimmer-color-start) 100%
);
animation: skeleton-shimmer var(--skeleton-shimmer-duration) var(--skeleton-shimmer-ease) infinite;
}
[data-rs-skeleton][data-rs-variant="text"] {
height: var(--skeleton-text-height);
border-radius: var(--skeleton-text-radius);
}
[data-rs-skeleton][data-rs-variant="circle"] {
width: var(--skeleton-circle-size);
height: var(--skeleton-circle-size);
border-radius: var(--skeleton-circle-radius);
}
[data-rs-skeleton][data-rs-variant="rectangle"] {
height: var(--skeleton-rectangle-height);
border-radius: var(--skeleton-rectangle-radius);
}
[data-rs-skeleton][data-rs-state~="loading"]::after {
animation: skeleton-shimmer var(--skeleton-shimmer-duration) var(--skeleton-shimmer-ease) infinite;
}
@keyframes skeleton-shimmer {
0% { transform: translateX(-100%); }
100% { transform: translateX(100%); }
}