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
+1
View File
@@ -4,6 +4,7 @@ export {
useChannelDetail,
useChannels,
useStats,
useTopReactors,
useTopReactions,
useUserDetail,
useUsers,
+10 -3
View File
@@ -7,6 +7,7 @@ import type {
DashboardStats,
DashboardUserDetail,
TopReactedMessage,
TopReactor,
} from "@/lib/types";
export function useStats() {
@@ -65,8 +66,14 @@ export function useChannelDetail(channelId: string | null) {
);
}
export function useTopReactions(limit = 20) {
return useSWR<TopReactedMessage[]>(["dashboard-reactions", limit], () =>
dashboardApi.getTopReactions(limit),
export function useTopReactions() {
return useSWR<TopReactedMessage[]>(["dashboard-reactions"], () =>
dashboardApi.getTopReactions(20),
);
}
export function useTopReactors() {
return useSWR<TopReactor[]>(["dashboard-reactors"], () =>
dashboardApi.getTopReactors(20),
);
}