// Skeleton component styles // Loading placeholder with shimmer animation @keyframes skeleton-shimmer { 0% { background-position: -200px 0; } 100% { background-position: calc(200px + 100%) 0; } } .fakemui-skeleton { display: inline-block; background-color: var(--color-secondary, rgba(0, 0, 0, 0.11)); background-image: linear-gradient( 90deg, transparent 0%, var(--skeleton-shimmer-color, rgba(255, 255, 255, 0.5)) 50%, transparent 100% ); background-size: 200px 100%; background-repeat: no-repeat; animation: skeleton-shimmer 1.5s ease-in-out infinite; // Variants &--text { height: 1em; border-radius: var(--radius-xs, 4px); transform: scale(1, 0.6); transform-origin: 0 60%; &:empty::before { content: '\00a0'; // Non-breaking space for height } } &--rectangular { border-radius: var(--radius-sm, 4px); } &--circular { border-radius: 50%; } &--rounded { border-radius: var(--radius-md, 8px); } // Wave animation variant &--wave { animation: none; overflow: hidden; position: relative; &::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient( 90deg, transparent, var(--skeleton-shimmer-color, rgba(255, 255, 255, 0.5)), transparent ); animation: skeleton-shimmer 1.6s linear 0.5s infinite; } } // Pulse animation variant &--pulse { animation: skeleton-pulse 1.5s ease-in-out 0.5s infinite; } } @keyframes skeleton-pulse { 0% { opacity: 1; } 50% { opacity: 0.4; } 100% { opacity: 1; } } // Dark theme adjustments [data-theme="dark"] .fakemui-skeleton { background-color: rgba(255, 255, 255, 0.11); --skeleton-shimmer-color: rgba(255, 255, 255, 0.2); }