diff --git a/app/(main)/users/page.tsx b/app/(main)/users/page.tsx index 6bcc83a7..8e561cde 100644 --- a/app/(main)/users/page.tsx +++ b/app/(main)/users/page.tsx @@ -1,7 +1,8 @@ "use client" -import { useCallback, useEffect, useRef, useState } from "react" +import { useCallback, useEffect, useRef, useState, useMemo } from "react" import { PageHeader } from "@/components/page-header" +import { DataPageToolbar } from "@/components/data-page-toolbar" import { DataPageCard } from "@/components/data-page-card" import { UsersDataGrid } from "@/components/data-grids/users-data-grid" import { KpiStatGrid } from "@/components/reui-kit/kpi-stat-grid" @@ -76,6 +77,11 @@ function UsersContent() { const canReadServers = can("mm:servers:read") const [users, setUsers] = useState(() => isLive ? [] : INIT_USERS) + const [userSearch, setUserSearch] = useState("") + const visibleUsers = useMemo(() => { + const query = userSearch.trim().toLocaleLowerCase("ru-RU") + return query ? users.filter(user => [user.name, user.login, user.email].some(value => value.toLocaleLowerCase("ru-RU").includes(query))) : users + }, [users, userSearch]) const [serverOptions, setServerOptions] = useState(() => isLive ? [] : toServerOptionsFromMock()) const [loading, setLoading] = useState(isLive && canRead) const [usersReadAt, setUsersReadAt] = useState(null) @@ -299,8 +305,11 @@ function UsersContent() { {/* Preview: https://reui.io/preview/base/data-grid-filtering-2 · https://reui.io/docs/components/base/data-grid · https://reui.io/docs/components/base/frame */} {canRead && (usersKnown || loading) && +