diff --git a/src/service/feature/member/types/memberAPI.ts b/src/service/feature/member/types/memberAPI.ts
index 98fff08..e6694ef 100644
--- a/src/service/feature/member/types/memberAPI.ts
+++ b/src/service/feature/member/types/memberAPI.ts
@@ -11,6 +11,7 @@ export type MemberState =
export interface MemberInfo {
userId: string;
email: string;
+ name: string;
nickname: string;
avatarUrl?: string;
birth?: string;
@@ -38,4 +39,4 @@ export interface SearchMemberResult {
email: string;
nickname: string;
avatarUrl?: string;
-}
\ No newline at end of file
+}
diff --git a/src/view/layout/LayoutWithSidebar.tsx b/src/view/layout/LayoutWithSidebar.tsx
index 367da0c..f6e64fb 100644
--- a/src/view/layout/LayoutWithSidebar.tsx
+++ b/src/view/layout/LayoutWithSidebar.tsx
@@ -4,6 +4,7 @@ import UserProfileBar from './profile/UserProfileBar.tsx';
import DirectChannelSidebar from './sidebar/channel/DirectChannelSidebar.tsx';
import ServerChannelSidebar from './sidebar/channel/ServerChannelSidebar.tsx';
import TopSidebar from '@components/layout/sidebar/top/TopSidebar.tsx';
+import TeamMemberSidebar from './sidebar/team/TeamMemberSidebar.tsx';
const LayoutWithSidebar = () => {
const location = useLocation();
@@ -22,9 +23,16 @@ const LayoutWithSidebar = () => {
{isDMView ? : }
-
-
-
+
+
+
+
+ {!isDMView && (
+
+ )}
+
);
diff --git a/src/view/layout/sidebar/components/team/TeamMember.tsx b/src/view/layout/sidebar/components/team/TeamMember.tsx
new file mode 100644
index 0000000..b2b6d91
--- /dev/null
+++ b/src/view/layout/sidebar/components/team/TeamMember.tsx
@@ -0,0 +1,39 @@
+import { MemberInfo } from '@service/feature/member/types/memberAPI';
+
+const TeamMember = ({
+ user,
+ isActive = true,
+ isMe = false,
+}: {
+ user: MemberInfo;
+ isActive?: boolean;
+ isMe?: boolean;
+}) => {
+ console.log('user 출력: ', user);
+ return (
+
+
+
+

+
+
+
+
+
+ );
+};
+export default TeamMember;
diff --git a/src/view/layout/sidebar/team/TeamMemberSidebar.tsx b/src/view/layout/sidebar/team/TeamMemberSidebar.tsx
new file mode 100644
index 0000000..f78a7ae
--- /dev/null
+++ b/src/view/layout/sidebar/team/TeamMemberSidebar.tsx
@@ -0,0 +1,60 @@
+import { useParams } from 'react-router-dom';
+import { useTeamDetailQuery } from '@service/feature/team/hook/query/useTeamServiceQuery.ts';
+import SkeletonTeamSidebar from '../components/skeletons/SkeletonTeamSidebar.tsx';
+import TeamMember from '../components/team/TeamMember.tsx';
+import { TeamMembers } from '@service/feature/team/types/team.ts';
+import SkeletonDMList from '../components/skeletons/SkeletonDMList.tsx';
+
+const TeamMemberSidebar = () => {
+ const { serverId } = useParams<{
+ serverId: string;
+ channelId: string;
+ }>();
+
+ const { data, isLoading, error } = useTeamDetailQuery(serverId);
+
+ if (isLoading) return ;
+ if (error) return 에러
;
+
+ console.log('팀 유저 리스트: ', data);
+ const offlineUsers = data?.teamMembers.filter(
+ (user: { memberInfo: { state: string } }) =>
+ user.memberInfo.state === 'OFFLINE',
+ );
+ const onlineUsers = data?.teamMembers.filter(
+ (user: { memberInfo: { state: string } }) =>
+ user.memberInfo.state === 'ONLINE',
+ );
+
+ return (
+
+ {onlineUsers.length > 0 && (
+
+
+ 온라인 - {onlineUsers.length}
+
+ {onlineUsers.map((user: TeamMembers) => (
+
+ ))}
+
+ )}
+ {offlineUsers.length > 0 && (
+
+
+ 오프라인 - {offlineUsers.length}
+
+ {offlineUsers.map((user: TeamMembers) => (
+
+ ))}
+
+ )}
+
+ );
+};
+
+export default TeamMemberSidebar;