fix(voice): proper shadcn select dropdowns + top reactors leaderboard

- ui/select: trigger default w-full h-9 (was w-fit h-8 — selects rendered
  tiny/misaligned); callers keep size override via className
- VoiceConnectionCard: labeled full-width h-10 selects (Server/Guild +
  Voice Channel), guild icon + name in options, channel type icon +
  'no akses' tag, empty states, htmlFor/id a11y wiring
- GuildSelector sidebar + messages channel filter bumped to match
- Backend GET /api/dashboard/reactors: top users by net reactions given
  (adds-removes) + messages_reacted + emojis_used
- Reactions tab: second 'Top reaktor' leaderboard panel
This commit is contained in:
asepharyana
2026-08-05 11:29:56 +07:00
parent f999be4fa0
commit 9a2fa999bf
12 changed files with 288 additions and 110 deletions
@@ -6,6 +6,7 @@ import type {
PaginatedChannels,
PaginatedUsers,
TopReactedMessage,
TopReactor,
} from "@/lib/types";
import { api } from "./client";
@@ -44,4 +45,7 @@ export const dashboardApi = {
getTopReactions: (limit = 20) =>
api.get<TopReactedMessage[]>(`/api/dashboard/reactions?limit=${limit}`),
getTopReactors: (limit = 20) =>
api.get<TopReactor[]>(`/api/dashboard/reactors?limit=${limit}`),
};
@@ -116,3 +116,12 @@ export interface TopReactedMessage {
reaction_count: number;
top_emojis: TopReactedEmoji[];
}
export interface TopReactor {
user_id: string;
username: string;
net_count: number;
adds_count: number;
messages_reacted: number;
emojis_used: number;
}