mirror of
https://github.com/wavetermdev/waveterm.git
synced 2025-01-04 18:59:08 +01:00
2e91ee843c
Less hasn't received an update in over a year and the parser is missing some modern syntax like relative colors so this switches us to scss
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
// Copyright 2024, Command Line Inc.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
import clsx from "clsx";
|
|
import { memo } from "react";
|
|
import { Avatar } from "../../element/avatar";
|
|
import "./userlist.scss";
|
|
|
|
export interface UserStatus {
|
|
label: string;
|
|
status: "online" | "busy" | "away" | "offline";
|
|
onClick: () => void;
|
|
avatarUrl?: string;
|
|
}
|
|
|
|
interface UserListProps {
|
|
users: UserStatus[];
|
|
className?: string;
|
|
}
|
|
|
|
const UserList = memo(({ users, className }: UserListProps) => {
|
|
return (
|
|
<div className={clsx("user-list", className)}>
|
|
{users.map(({ label, status, onClick, avatarUrl }, index) => (
|
|
<div key={index} className={clsx("user-status-item", status)} onClick={onClick}>
|
|
<div className="user-status-icon">
|
|
<Avatar name={label} status={status} className="size-sm" imageUrl={avatarUrl} />
|
|
</div>
|
|
<div className="user-status-text">{label}</div>
|
|
</div>
|
|
))}
|
|
</div>
|
|
);
|
|
});
|
|
|
|
UserList.displayName = "UserList";
|
|
|
|
export { UserList };
|