mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-10 01:56:16 -08:00
The loading placeholders for live channel rows were inconsistent and visibly heavier than the real channel-list-item: each module rendered its own skeleton with a colored card surface, larger padding/radius, mismatched logo border-radius, and only a single tiny right-side dot instead of the real 34×34 action buttons. Stalker had no initial-load skeleton at all. Extract a shared app-channel-list-item-skeleton that mirrors channel-list-item 1:1 (transparent surface, 8/10/8/12 padding, 12px radius, 44×44 logo with 10px radius, optional EPG progress placeholder, 0–3 button placeholders) plus a thin app-channel-list-skeleton wrapper that renders N rows with deterministic width variance, and route every live-tv loading state through it (m3u channel-list-loading-state, xtream portal-channels-list, stalker live-stream-layout via a derived isInitialChannelsLoading signal, and the unified favorites/recent collection page). Drops the bespoke channel-skeleton-shimmer keyframes in favor of the shared skeleton-shimmer animation. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 58a2d50756dd