Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
b02d17a
feat: 참여 희망자 섹션 페이지네이션 추가 / DP-437
ebbll Sep 16, 2025
0a835aa
feat: 페이지네이션 관리 추가 / DP-437
ebbll Sep 16, 2025
e66a6e9
Merge pull request #210 from DeepDirect/fix/DP-437/team-applicants
ebbll Sep 16, 2025
0c7eed2
feat(profile): 비공개 설정을 위한 props 추가 / DP-438
ssoogit Sep 16, 2025
9c0b7c1
feat(profile): 프로필 페이지 지도 섹션 본인 비공개 메세지 추가 / DP-438
ssoogit Sep 16, 2025
682d543
feat(profile): 프로필 페이지 포토폴리오 섹션 본인 비공개 메세지 추가 / DP-438
ssoogit Sep 16, 2025
233deb9
feat(profile): 프로필 페이지 포지션 섹션 본인 비공개 메세지 추가 / DP-438
ssoogit Sep 16, 2025
2402102
feat(profile): 프로필 페이지 프로젝트 섹션 본인 비공개 메세지 추가 / DP-438
ssoogit Sep 16, 2025
7306a3f
feat(profile): 프로필 페이지 스터디 섹션 본인 비공개 메세지 추가 / DP-438
ssoogit Sep 16, 2025
938d829
feat(profile): 프로필 페이지 기술 스택 섹션 본인 비공개 메세지 추가 / DP-438
ssoogit Sep 16, 2025
ffa27b5
feat(profile): 프로필 페이지 주활동시간 섹션 본인 비공개 메세지 추가 / DP-438
ssoogit Sep 16, 2025
e50da4d
feat(profile): 프로필 페이지 성향 섹션 본인 비공개 메세지 추가 / DP-438
ssoogit Sep 16, 2025
7d6d4b8
feat(profile): 프로필 페이지 본인 비공개 메세지 추가 설정 / DP-438
ssoogit Sep 16, 2025
50b8f4d
Merge pull request #212 from DeepDirect/feature/DP-438/profile-page-r…
ssoogit Sep 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 54 additions & 14 deletions src/features/Profile/components/ProfileView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -156,29 +156,69 @@ const ProfileView = forwardRef<HTMLDivElement, ExtendedProfileViewProps>(
</div>
</div>

{/* 상세 정보 섹션 - 공개 상태에 따라 조건부 렌더링 */}
{isProfilePublic ? (
// 공개 프로필: 모든 정보 표시
{/* 상세 정보 섹션 - 본인이 아니고 비공개일 때만 숨김 */}
{!user.isMine && !isProfilePublic ? (
// 타인의 비공개 프로필: 비공개 메시지만 표시
<PrivateProfileMessage />
) : (
// 본인 프로필 또는 타인의 공개 프로필: 모든 정보 표시
<div className={styles.twoColumnLayout}>
{/* 왼쪽 컬럼 (737px) */}
<div className={styles.leftColumn}>
<LocationSection user={user} isEditable={isEditable} onEdit={handleSectionEdit} />
<TechStackSection user={user} isEditable={isEditable} onEdit={handleSectionEdit} />
<ProjectSection user={user} isEditable={isEditable} onEdit={handleSectionEdit} />
<StudySection user={user} isEditable={isEditable} onEdit={handleSectionEdit} />
<LocationSection
user={user}
isEditable={isEditable}
onEdit={handleSectionEdit}
isPrivate={user.isMine && !isProfilePublic}
/>
<TechStackSection
user={user}
isEditable={isEditable}
onEdit={handleSectionEdit}
isPrivate={user.isMine && !isProfilePublic}
/>
<ProjectSection
user={user}
isEditable={isEditable}
onEdit={handleSectionEdit}
isPrivate={user.isMine && !isProfilePublic}
/>
<StudySection
user={user}
isEditable={isEditable}
onEdit={handleSectionEdit}
isPrivate={user.isMine && !isProfilePublic}
/>
</div>

{/* 오른쪽 컬럼 (404px) */}
<div className={styles.rightColumn}>
<PositionSection user={user} isEditable={isEditable} onEdit={handleSectionEdit} />
<TraitsSection user={user} isEditable={isEditable} onEdit={handleSectionEdit} />
<TimeSection user={user} isEditable={isEditable} onEdit={handleSectionEdit} />
<PortfolioSection user={user} isEditable={isEditable} onEdit={handleSectionEdit} />
<PositionSection
user={user}
isEditable={isEditable}
onEdit={handleSectionEdit}
isPrivate={user.isMine && !isProfilePublic}
/>
<TraitsSection
user={user}
isEditable={isEditable}
onEdit={handleSectionEdit}
isPrivate={user.isMine && !isProfilePublic}
/>
<TimeSection
user={user}
isEditable={isEditable}
onEdit={handleSectionEdit}
isPrivate={user.isMine && !isProfilePublic}
/>
<PortfolioSection
user={user}
isEditable={isEditable}
onEdit={handleSectionEdit}
isPrivate={user.isMine && !isProfilePublic}
/>
</div>
</div>
) : (
// 비공개 프로필: 비공개 메시지만 표시
<PrivateProfileMessage />
)}
</div>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,22 @@
font-size: v.$fs-xxxsmall;
}
}

.privateMessage {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
margin-top: 16px;
padding: 17px 12px 0;
border-top: 1px solid v.$gray-4;
font-size: v.$fs-xxxsmall;
text-align: center;
color: v.$gray-1;

@include m.mobile {
margin-top: 12px;
padding: 13px 8px 0;
font-size: 11px;
}
}
12 changes: 10 additions & 2 deletions src/features/Profile/components/sections/LocationSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import { forwardRef } from 'react';

import { PencilSimpleIcon } from '@phosphor-icons/react';
import { LockIcon, PencilSimpleIcon } from '@phosphor-icons/react';
import clsx from 'clsx';

import ProfileMap from '@/features/map/components/ProfileMap/ProfileMap';
Expand All @@ -16,7 +16,7 @@ interface LocationSectionProps extends ProfileSectionProps {
}

const LocationSection = forwardRef<HTMLElement, LocationSectionProps>(
({ user, isEditable = false, onEdit, className }, ref) => {
({ user, isEditable = false, onEdit, isPrivate = false, className }, ref) => {
const handleEdit = () => {
if (isEditable && onEdit) {
onEdit('location');
Expand Down Expand Up @@ -61,6 +61,14 @@ const LocationSection = forwardRef<HTMLElement, LocationSectionProps>(
{/* 지도 영역 */}
<ProfileMap playerId={user.userId} location={user.location} />
</div>

{/* 비공개 메시지 */}
{isPrivate && (
<div className={styles.privateMessage}>
<LockIcon size={16} weight="regular" />
<span>프로필 비공개 중입니다. 다른 사용자에게는 보이지 않습니다.</span>
</div>
)}
</section>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,22 @@
@include m.font-tiny-text;
}
}

.privateMessage {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
margin-top: 16px;
padding: 17px 12px 0;
border-top: 1px solid v.$gray-4;
font-size: v.$fs-xxxsmall;
text-align: center;
color: v.$gray-1;

@include m.mobile {
margin-top: 12px;
padding: 13px 8px 0;
font-size: 11px;
}
}
12 changes: 10 additions & 2 deletions src/features/Profile/components/sections/PortfolioSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import { forwardRef } from 'react';

import { PencilSimpleIcon } from '@phosphor-icons/react';
import { LockIcon, PencilSimpleIcon } from '@phosphor-icons/react';
import clsx from 'clsx';

import type { ProfileSectionProps } from '@/types/user';
Expand All @@ -15,7 +15,7 @@ interface PortfolioSectionProps extends ProfileSectionProps {
}

const PortfolioSection = forwardRef<HTMLElement, PortfolioSectionProps>(
({ user, isEditable = false, onEdit, className }, ref) => {
({ user, isEditable = false, onEdit, isPrivate = false, className }, ref) => {
const handleEdit = () => {
if (isEditable && onEdit) {
onEdit('portfolio');
Expand Down Expand Up @@ -72,6 +72,14 @@ const PortfolioSection = forwardRef<HTMLElement, PortfolioSectionProps>(
</div>
)}
</div>

{/* 비공개 메시지 */}
{isPrivate && (
<div className={styles.privateMessage}>
<LockIcon size={16} weight="regular" />
<span>프로필 비공개 중입니다. 다른 사용자에게는 보이지 않습니다.</span>
</div>
)}
</section>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,22 @@
padding: 2px 10px;
}
}

.privateMessage {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
margin-top: 16px;
padding: 17px 12px 0;
border-top: 1px solid v.$gray-4;
font-size: v.$fs-xxxsmall;
text-align: center;
color: v.$gray-1;

@include m.mobile {
margin-top: 12px;
padding: 13px 8px 0;
font-size: 11px;
}
}
12 changes: 10 additions & 2 deletions src/features/Profile/components/sections/PositionSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import { forwardRef } from 'react';

import { PencilSimpleIcon } from '@phosphor-icons/react';
import { LockIcon, PencilSimpleIcon } from '@phosphor-icons/react';
import clsx from 'clsx';

import type { ProfileSectionProps } from '@/types/user';
Expand All @@ -15,7 +15,7 @@ interface PositionSectionProps extends ProfileSectionProps {
}

const PositionSection = forwardRef<HTMLElement, PositionSectionProps>(
({ user, isEditable = false, onEdit, className }, ref) => {
({ user, isEditable = false, onEdit, isPrivate = false, className }, ref) => {
const handleEdit = () => {
if (isEditable && onEdit) {
onEdit('position');
Expand Down Expand Up @@ -70,6 +70,14 @@ const PositionSection = forwardRef<HTMLElement, PositionSectionProps>(
</div>
)}
</div>

{/* 비공개 메시지 */}
{isPrivate && (
<div className={styles.privateMessage}>
<LockIcon size={16} weight="regular" />
<span>프로필 비공개 중입니다. 다른 사용자에게는 보이지 않습니다.</span>
</div>
)}
</section>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,3 +195,22 @@
padding: 6px 12px;
}
}

.privateMessage {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
margin-top: 16px;
padding: 17px 12px 0;
border-top: 1px solid v.$gray-4;
font-size: v.$fs-xxxsmall;
text-align: center;
color: v.$gray-1;

@include m.mobile {
margin-top: 12px;
padding: 13px 8px 0;
font-size: 11px;
}
}
Loading