feat: add loading skeleton components and styles for improved UI experience

This commit is contained in:
shuaiplus
2026-06-11 21:00:16 +08:00
parent 9adb24d4bb
commit e9aef72df7
9 changed files with 403 additions and 78 deletions
+77 -35
View File
@@ -7,66 +7,108 @@
--surface: #ffffff;
--line: rgba(100, 116, 139, 0.24);
--line-soft: rgba(100, 116, 139, 0.14);
--text: #111827;
--text: #0f172a;
--text-muted: #64748b;
--muted: #64748b;
--muted-strong: #334155;
--primary: #2457c5;
--primary-hover: #1d4aa7;
--primary-strong: #173f8f;
--primary: #2563eb;
--primary-hover: #1d4ed8;
--primary-strong: #1e40af;
--brand: var(--primary);
--brand-strong: var(--primary-strong);
--accent: #0f766e;
--accent: #0d9488;
--accent-soft: #e6f6f3;
--danger: #c92f4e;
--success: #0f766e;
--warning: #b7791f;
--overlay-strong: rgba(15, 23, 42, 0.58);
--shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.045);
--shadow-md: 0 8px 18px rgba(15, 23, 42, 0.075);
--shadow-lg: 0 18px 44px rgba(15, 23, 42, 0.105);
--danger: #dc2626;
--success: #059669;
--warning: #d97706;
--overlay-strong: rgba(15, 23, 42, 0.62);
--shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04);
--shadow-md: 0 4px 6px -1px rgba(15, 23, 42, 0.08), 0 2px 4px -1px rgba(15, 23, 42, 0.05);
--shadow-lg: 0 20px 25px -5px rgba(15, 23, 42, 0.10), 0 10px 10px -5px rgba(15, 23, 42, 0.04);
--shadow-xl: 0 25px 50px -12px rgba(15, 23, 42, 0.25);
--shadow-glow: 0 0 20px rgba(37, 99, 235, 0.15), 0 8px 24px rgba(37, 99, 235, 0.12);
--radius-sm: 6px;
--radius-md: 8px;
--radius-lg: 10px;
--radius-xl: 14px;
--radius-2xl: 18px;
--ease-out-strong: cubic-bezier(0.22, 1, 0.36, 1);
--ease-out-soft: cubic-bezier(0.24, 0.8, 0.32, 1);
--ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
--ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
--dur-instant: 80ms;
--dur-quick: 120ms;
--dur-fast: 180ms;
--dur-medium: 240ms;
--dur-panel: 280ms;
--dur-slow: 350ms;
--actions-gap: clamp(5px, calc((100vw - 520px) * 1), 10px);
/* Typography Scale */
--font-xs: 11px;
--font-sm: 13px;
--font-base: 14px;
--font-md: 15px;
--font-lg: 16px;
--font-xl: 18px;
--font-2xl: 20px;
--font-3xl: 24px;
--font-4xl: 28px;
/* Line Heights */
--leading-tight: 1.25;
--leading-snug: 1.375;
--leading-normal: 1.5;
--leading-relaxed: 1.625;
--leading-loose: 1.75;
/* Letter Spacing */
--tracking-tighter: -0.02em;
--tracking-tight: -0.01em;
--tracking-normal: 0;
--tracking-wide: 0.01em;
--tracking-wider: 0.02em;
/* Spacing Scale */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--space-10: 40px;
}
:root[data-theme='dark'] {
--bg-accent: #101418;
--panel: #171d25;
--panel-soft: #131922;
--panel-muted: #0f151d;
--panel-subtle: #1c2430;
--surface: #171d25;
--line: rgba(148, 163, 184, 0.18);
--line-soft: rgba(148, 163, 184, 0.11);
--text: #e8edf4;
--text-muted: #9aa8ba;
--muted: #9aa8ba;
--muted-strong: #c4cfdc;
--primary: #80b6ff;
--primary-hover: #a6cbff;
--primary-strong: #d7e8ff;
--bg-accent: #0a0e13;
--panel: #151b24;
--panel-soft: #111720;
--panel-muted: #0d1219;
--panel-subtle: #1a2230;
--surface: #151b24;
--line: rgba(148, 163, 184, 0.16);
--line-soft: rgba(148, 163, 184, 0.09);
--text: #f1f5f9;
--text-muted: #94a3b8;
--muted: #94a3b8;
--muted-strong: #cbd5e1;
--primary: #60a5fa;
--primary-hover: #93c5fd;
--primary-strong: #bfdbfe;
--brand: var(--primary);
--brand-strong: var(--primary-strong);
--accent: #5eead4;
--accent-soft: rgba(94, 234, 212, 0.12);
--danger: #fb7185;
--success: #5eead4;
--accent: #2dd4bf;
--accent-soft: rgba(45, 212, 191, 0.12);
--danger: #f87171;
--success: #34d399;
--warning: #fbbf24;
--overlay-strong: rgba(2, 6, 23, 0.74);
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.26);
--shadow-md: 0 8px 24px rgba(0, 0, 0, 0.30);
--shadow-lg: 0 14px 38px rgba(0, 0, 0, 0.34);
--overlay-strong: rgba(0, 0, 0, 0.75);
--shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.45), 0 2px 4px -1px rgba(0, 0, 0, 0.35);
--shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.50), 0 10px 10px -5px rgba(0, 0, 0, 0.40);
--shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.60);
--shadow-glow: 0 0 20px rgba(96, 165, 250, 0.20), 0 8px 24px rgba(96, 165, 250, 0.15);
}