|
| 1 | +import { DEFAULT_MEMBER } from "../../constants/projects"; |
| 2 | +import useDropdown from "../../hooks/common/dropdown/useDropdown"; |
| 3 | +import { LandingMemberDTO } from "../../types/DTO/landingDTO"; |
| 4 | +import UserBlock from "./UserBlock"; |
| 5 | + |
| 6 | +const LandingMember = ({ member }: { member: LandingMemberDTO[] }) => { |
| 7 | + const { Dropdown, selectedOption } = useDropdown({ |
| 8 | + placeholder: "내 상태", |
| 9 | + options: ["접속 중", "부재 중", "자리비움"], |
| 10 | + defaultOption: "접속 중", |
| 11 | + }); |
| 12 | + |
| 13 | + const { imageUrl, username } = JSON.parse( |
| 14 | + window.localStorage.getItem("member") ?? DEFAULT_MEMBER |
| 15 | + ); |
| 16 | + |
| 17 | + const getUserState = (state: string): "on" | "off" | "away" => { |
| 18 | + switch (state) { |
| 19 | + case "접속 중": |
| 20 | + return "on"; |
| 21 | + case "부재 중": |
| 22 | + return "off"; |
| 23 | + default: |
| 24 | + return "away"; |
| 25 | + } |
| 26 | + }; |
| 27 | + |
| 28 | + return ( |
| 29 | + <div className="w-full shadow-box rounded-lg bg-gradient-to-tr to-light-green-linear-from from-light-green py-6 px-6 overflow-y-scroll scrollbar-thin scrollbar-thumb-light-green scrollbar-track-transparent scrollbar-thumb-rounded-full"> |
| 30 | + <div className="flex flex-col gap-3"> |
| 31 | + <div className="flex justify-between"> |
| 32 | + <p className="text-white text-xs font-bold">| 내 상태</p> |
| 33 | + <div className="h-fit" /> |
| 34 | + <Dropdown |
| 35 | + buttonClassName="flex justify-between items-center w-[6rem] h-6 pl-5 text-white text-xxxs bg-middle-green pr-3 rounded-md" |
| 36 | + containerClassName="w-[6rem] bg-white rounded-b-lg overflow-hidden" |
| 37 | + itemClassName="w-full text-xxxs text-center font-semibold py-2 hover:bg-middle-green hover:text-white hover:font-semibold" |
| 38 | + iconSize="w-[12px] h-[12px]" |
| 39 | + /> |
| 40 | + </div> |
| 41 | + <UserBlock |
| 42 | + {...{ imageUrl, username, status: getUserState(selectedOption) }} |
| 43 | + /> |
| 44 | + <div className="flex justify-between text-white"> |
| 45 | + <p className="text-xs font-bold">| 함께하는 사람들</p> |
| 46 | + <button className="text-xxs hover:underline">초대링크 복사</button> |
| 47 | + </div> |
| 48 | + {member.map((memberData: LandingMemberDTO) => { |
| 49 | + return <UserBlock {...memberData} />; |
| 50 | + })} |
| 51 | + </div> |
| 52 | + </div> |
| 53 | + ); |
| 54 | +}; |
| 55 | + |
| 56 | +export default LandingMember; |
0 commit comments