diff --git a/src/apps/profiles/src/member-profile/about-me/AboutMe.tsx b/src/apps/profiles/src/member-profile/about-me/AboutMe.tsx index 2bb8e5463..ae908f12a 100644 --- a/src/apps/profiles/src/member-profile/about-me/AboutMe.tsx +++ b/src/apps/profiles/src/member-profile/about-me/AboutMe.tsx @@ -9,6 +9,7 @@ import { EditMemberPropertyBtn, EmptySection } from '../../components' import { EDIT_MODE_QUERY_PARAM, profileEditModes } from '../../config' import { ModifyAboutMeModal } from './ModifyAboutMeModal' +import MemberRatingCard from './MemberRatingCard/MemberRatingCard' import styles from './AboutMe.module.scss' interface AboutMeProps { @@ -71,6 +72,9 @@ const AboutMe: FC = (props: AboutMeProps) => { {' '} {props.profile?.firstName || props.profile?.handle}

+ + +

{memberTitleTrait?.profileSelfTitle}

{ diff --git a/src/apps/profiles/src/member-profile/about-me/MemberRatingCard/MemberRatingCard.module.scss b/src/apps/profiles/src/member-profile/about-me/MemberRatingCard/MemberRatingCard.module.scss new file mode 100644 index 000000000..1915337e1 --- /dev/null +++ b/src/apps/profiles/src/member-profile/about-me/MemberRatingCard/MemberRatingCard.module.scss @@ -0,0 +1,36 @@ +@import '@libs/ui/styles/includes'; + +.container { + background-color: $tc-white; + padding: $sp-3; + margin: $sp-4 0; + border-radius: 16px; + width: 100%; + + .innerWrap { + background-image: linear-gradient(90deg, #05456D, #0A7AC0); + color: $tc-white; + border-radius: 10px; + display: flex; + justify-content: space-between; + padding: $sp-4; + + .valueWrap { + display: flex; + flex-direction: column; + align-items: center; + + .value { + font-size: 26px; + font-weight: 500; + font-family: $font-barlow-condensed; + line-height: 28px; + } + + .name { + font-size: 12px; + line-height: 18px; + } + } + } +} \ No newline at end of file diff --git a/src/apps/profiles/src/member-profile/about-me/MemberRatingCard/MemberRatingCard.tsx b/src/apps/profiles/src/member-profile/about-me/MemberRatingCard/MemberRatingCard.tsx new file mode 100644 index 000000000..3574e8365 --- /dev/null +++ b/src/apps/profiles/src/member-profile/about-me/MemberRatingCard/MemberRatingCard.tsx @@ -0,0 +1,58 @@ +/* eslint-disable jsx-a11y/anchor-is-valid */ +import { FC, useMemo } from 'react' + +import { useMemberStats, UserProfile, UserStats } from '~/libs/core' + +import styles from './MemberRatingCard.module.scss' + +interface MemberRatingCardProps { + profile: UserProfile +} + +const MemberRatingCard: FC = (props: MemberRatingCardProps) => { + const memberStats: UserStats | undefined = useMemberStats(props.profile.handle) + + const maxPercentile: number = useMemo(() => { + let memberPercentile: number = 0 + if (memberStats?.DATA_SCIENCE) { + memberPercentile = memberStats.DATA_SCIENCE.MARATHON_MATCH?.rank?.percentile || 0 + if ((memberStats.DATA_SCIENCE.SRM?.rank?.percentile || 0) > memberPercentile) { + memberPercentile = memberStats.DATA_SCIENCE.SRM.rank?.percentile || 0 + } + } + + if (memberStats?.DEVELOP) { + memberStats.DEVELOP.subTracks.forEach((subTrack: any) => { + const subPercentile = subTrack.rank.percentile || subTrack.rank.overallPercentile || 0 + if (subPercentile > memberPercentile) { + memberPercentile = subPercentile + } + }) + } + + return memberPercentile + }, [memberStats]) + + return memberStats?.maxRating?.rating ? ( +
+
+
+

{memberStats?.maxRating?.rating}

+

Rating

+
+
+

+ {Number(maxPercentile) + .toFixed(2)} +

+

Percentile

+
+ +
+
+ ) : <> +} + +export default MemberRatingCard diff --git a/src/apps/profiles/src/member-profile/about-me/MemberRatingCard/index.ts b/src/apps/profiles/src/member-profile/about-me/MemberRatingCard/index.ts new file mode 100644 index 000000000..bf3e757da --- /dev/null +++ b/src/apps/profiles/src/member-profile/about-me/MemberRatingCard/index.ts @@ -0,0 +1 @@ +export { default as MemberRatingCard } from './MemberRatingCard' diff --git a/src/apps/profiles/src/member-profile/page-layout/ProfilePageLayout.module.scss b/src/apps/profiles/src/member-profile/page-layout/ProfilePageLayout.module.scss index cbde4c842..e6e82f481 100644 --- a/src/apps/profiles/src/member-profile/page-layout/ProfilePageLayout.module.scss +++ b/src/apps/profiles/src/member-profile/page-layout/ProfilePageLayout.module.scss @@ -46,6 +46,11 @@ .profileInfoLeft { display: flex; flex-direction: column; + margin-top: -60px; + + @include ltelg { + margin-top: 0; + } .skillsWrap { display: flex; diff --git a/src/libs/ui/lib/components/form/form-groups/form-input/input-wrapper/InputWrapper.module.scss b/src/libs/ui/lib/components/form/form-groups/form-input/input-wrapper/InputWrapper.module.scss index 4be07ad1d..e2bc27d8e 100644 --- a/src/libs/ui/lib/components/form/form-groups/form-input/input-wrapper/InputWrapper.module.scss +++ b/src/libs/ui/lib/components/form/form-groups/form-input/input-wrapper/InputWrapper.module.scss @@ -87,7 +87,7 @@ $error-line-height: 14px; &.input-error { border-color: $red-100; - margin-bottom: 0; + margin-bottom: 0 !important; color: $red-100; .label {