Add search and status/role/type filters to People

Makes it practical to find people in larger orgs across GraphQL, MCP, CLI, and n8n, with page size raised to 100.

Signed-off-by: Sacha Al Himdani <sacha@probo.com>
This commit is contained in:
Sacha Al Himdani
2026-07-27 14:46:15 +02:00
parent edb67743ae
commit d61ec8dd65
19 changed files with 624 additions and 123 deletions

View File

@@ -120,7 +120,13 @@ export {
export { getTrackerTypeBadge, getTrackerSourceBadge } from "./tracker";
export { detectSocialName } from "./socialUrl";
export { formatError, type GraphQLError } from "./error";
export { Role, roles, getAssignableRoles } from "./roles";
export {
Role,
roles,
getAssignableRoles,
getMembershipRole,
getMembershipRoles,
} from "./roles";
export {
getCompliancePortalDocumentAccessStatusBadgeVariant,
getCompliancePortalDocumentAccessStatusLabel,

View File

@@ -18,6 +18,8 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
type Translator = (s: string) => string;
export const Role = {
OWNER: "OWNER",
ADMIN: "ADMIN",
@@ -46,3 +48,45 @@ export function getAssignableRoles(currentRole: Role): Role[] {
return [];
}
export function getMembershipRoles(t: Translator) {
return [
{
value: Role.OWNER,
label: t("helpers.membershipRole.owner"),
},
{
value: Role.ADMIN,
label: t("helpers.membershipRole.admin"),
},
{
value: Role.VIEWER,
label: t("helpers.membershipRole.viewer"),
},
{
value: Role.AUDITOR,
label: t("helpers.membershipRole.auditor"),
},
{
value: Role.EMPLOYEE,
label: t("helpers.membershipRole.employee"),
},
] as const;
}
export function getMembershipRole(t: Translator, role?: string): string {
switch (role) {
case Role.OWNER:
return t("helpers.membershipRole.owner");
case Role.ADMIN:
return t("helpers.membershipRole.admin");
case Role.VIEWER:
return t("helpers.membershipRole.viewer");
case Role.AUDITOR:
return t("helpers.membershipRole.auditor");
case Role.EMPLOYEE:
return t("helpers.membershipRole.employee");
default:
return t("helpers.common.unknown");
}
}