feat(frontend): skeleton loading states, empty-state glow, light-mode polish

- Add shared skeleton building blocks (SkeletonHero, SkeletonMetricRow,
  SkeletonPanel, SkeletonRows) and wire them into every view's initial
  loading branch, replacing bare spinners for a cohesive shimmering shell.
- Polish EmptyState with a glow-ring icon chip instead of a flat icon.
- Harden .light theme: color-scheme, tuned scrollbar + selection for pale
  canvas. Dark/light theme toggle (next-themes) already persisted in TopBar.
This commit is contained in:
asepharyana
2026-08-18 09:21:12 +07:00
parent ff8a9c50ae
commit d78d7a0181
10 changed files with 203 additions and 26 deletions
@@ -22,8 +22,8 @@ import {
import {
EmptyState,
ErrorState,
LoadingState,
SectionHeader,
SkeletonRows,
} from "@/components/shared";
import { GuildChannelPicker } from "@/components/shared/guild-picker";
import {
@@ -185,7 +185,7 @@ export function MessagesView({
{error && !messages ? (
<ErrorState error={error} />
) : isLoading && !messages ? (
<LoadingState label="Capturing" />
<SkeletonRows rows={8} />
) : list.length === 0 ? (
<EmptyState
icon={<MessageSquare className="size-7" />}