При вводе в поле приглашения («Список игроков») под инпутом всплывают до 3 подходящих игроков — аватар + ник, в стилистике строк топов. Клик подставляет ник в поле (приглашение отправляется кнопкой/Enter), уже состоящие в группе не предлагаются. Детали: компонент PlayerSuggestions (выбор по mousedown — до blur инпута), хук useUserSearch с дебаунсом 250 мс и keepPreviousData, классы .suggest-* в духе .notif-panel/.lb-row. В поиске общего списка подсказки не нужны — таблица уже фильтруется вживую при вводе. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
28 lines
1.1 KiB
TypeScript
28 lines
1.1 KiB
TypeScript
export const qk = {
|
|
me: ["me"] as const,
|
|
adminMe: ["adminMe"] as const,
|
|
home: ["home"] as const,
|
|
leaderboard: ["leaderboard"] as const,
|
|
expansions: ["expansions"] as const,
|
|
factions: ["factions"] as const,
|
|
myStats: ["myStats"] as const,
|
|
publicProfile: (id: number) => ["publicProfile", id] as const,
|
|
userSearch: (q: string, limit: number) => ["userSearch", q, limit] as const,
|
|
groups: ["groups"] as const,
|
|
group: (id: number) => ["group", id] as const,
|
|
groupFactions: (id: number) => ["group", id, "factions"] as const,
|
|
groupMembers: (id: number) => ["group", id, "members"] as const,
|
|
groupMatches: (id: number) => ["group", id, "matches"] as const,
|
|
groupStats: (id: number) => ["group", id, "stats"] as const,
|
|
match: (id: number) => ["match", id] as const,
|
|
authConfig: ["authConfig"] as const,
|
|
invitations: ["invitations"] as const,
|
|
notifications: ["notifications"] as const,
|
|
devUsers: ["devUsers"] as const,
|
|
adminUsers: ["adminUsers"] as const,
|
|
adminGroups: ["adminGroups"] as const,
|
|
adminMatches: ["adminMatches"] as const,
|
|
adminLogs: ["adminLogs"] as const,
|
|
adminAchievements: ["adminAchievements"] as const,
|
|
};
|