Skip to content
1 change: 0 additions & 1 deletion apps/profile/src/components/Header/Header.styles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ const Header = styled.div<{ hasTitle: boolean }>`
justify-content: ${({ hasTitle }) => (hasTitle ? 'space-between' : 'flex-end')};

${mq_lg} {
padding: 0;
position: relative;
background-color: transparent;
}
Expand Down
62 changes: 5 additions & 57 deletions apps/profile/src/components/Notfound/Notfound.styles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,12 @@ const Header = styled.div`
}
`;

const CoverSection = styled.div<{ isCover: boolean }>`
const CoverSection = styled.div`
position: relative;
width: 100%;
height: 0;
padding-top: 100%;
overflow: hidden;
border-radius: ${({ isCover }) => (isCover ? '20px 20px 0 0' : '0')};
:after {
content: '';
position: absolute;
Expand All @@ -31,6 +30,10 @@ const CoverSection = styled.div<{ isCover: boolean }>`
height: 100%;
background: linear-gradient(to bottom, rgba(18, 19, 24, 0.2) 0%, rgba(18, 19, 24, 1) 100%);
}

${mq_lg} {
border-radius: 20px 20px 0 0;
}
`;

const CoverImage = styled.img`
Expand Down Expand Up @@ -70,57 +73,6 @@ const UserName = styled.h1`
margin: 0;
`;

const ModalOverlay = styled.div`
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.7);
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
padding: 20px;
`;

const ModalContent = styled.div`
background-color: white;
border-radius: 20px;
padding: 40px 24px 24px;
max-width: 450px;
width: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
min-height: 168px;
`;

const ModalText = styled.p`
${({ theme }) => theme.typo.b3};
color: '#282B33';
text-align: left;
margin: 0;
`;

const ModalButton = styled.a`
width: auto;
height: 48px;
padding: 0 24px;
display: flex;
align-items: center;
justify-content: center;
background-color: #ff5623;
color: white;
text-decoration: none;
border-radius: 8px;
${({ theme }) => theme.typo.sh1};
font-weight: 600;
cursor: pointer;
transition: background-color 0.2s;
align-self: flex-end;
`;

export default {
Header,
CoverSection,
Expand All @@ -129,8 +81,4 @@ export default {
ProfileInfo,
Nickname,
UserName,
ModalOverlay,
ModalContent,
ModalText,
ModalButton,
};
52 changes: 23 additions & 29 deletions apps/profile/src/components/Notfound/index.tsx
Original file line number Diff line number Diff line change
@@ -1,40 +1,34 @@
import { useState } from 'react';
import { Confirm } from '@boolti/ui';
import Layout from '~/components/Layout';
import { EXTERNAL_DOMAIN } from '~/constants/external';

import Styled from './Notfound.styles';

const NotFound = () => {
const [showModal, setShowModal] = useState(true);

return (
<>
<Layout>
<Styled.Header />
<Styled.CoverSection isCover={false}>
<Styled.CoverImage
src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgQChENDRAPDQ8QDQ0NEBANDQ8NDQ8PFBEWFhUdExMZHCggGBolGxUTITEhJSkrLi42Fx85ODMsNygtLisBCgoKDg0OFxAQFS4dICU3NSsrLS0rMC0rLSstKzctLSs1Ky03KystNS0rKy0tLS0rKysrKzc3LS03KysrKysrN//AABEIAOAA4QMBIgACEQEDEQH/xAAaAAEBAQADAQAAAAAAAAAAAAAAAQUCBAYD/8QAMRABAAIAAwYCCQUBAQAAAAAAAAECAwQRBRIhMUFRMnEiYXKRkqGxweEzQlKB0SMU/8QAGQEBAQEBAQEAAAAAAAAAAAAAAAEDAgQF/8QAHhEBAQEBAAIDAQEAAAAAAAAAAAECEQMxIUFREhP/2gAMAwEAAhEDEQA/APVgr6L5qCoKKIIoAAAAAAAAAAAAAIKAgoCCgIKAgoCKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAKogCiKAAIAAAAAAAAAAAACAqiAKIAogAqAgAKAAKigACAAAAA5Uw72nSsTPlGr71yGYnpEecwlsiyWusO1Oz8x2ifK0PhiYOLXxVmP64e87DlcAFQABABQAAAAAAAQAFAAFRQABAACIno0crs+OeJ8P8Arns7KxEb9uc8vVDustb+o1zj7qVrERpEREdo4KDNqAA6eZyFLcaejPb9s/4y71tE6TGkw9A62dy0XrrHijl6/U0zv9Z6x+McBqxQAUAAAAAAAEABQABUUAAQfbJ4W/ixHTnPlD4tDZFeNreUOdXkdZna0QGD0AAAAAAMjaWFu4uscrcf76uq1Nq1/wCcT2t9YZbfN7GG5yoA6cgAAAAAAAAAAACooAAg09k+C3tR9GY72yr6XmveNfc536d49tMBg3AAAAAAdXaf6M+1VkNLa1/RrX17zNbY9MN+0AduQAAAAAAAQAFAAFRQABBywsSa3i0c4nVxBW/h3rasWjlMauTHyWamk6TxrPylr1tExrE6xPWGGs8b511QHLoAAJmIjWeEDLz+c3vQp4es9/wsnXOtcdfNY2/iTbpyjyfIG7BAFAAAAAAAAQAFAAFRQABAAB9cDMYlJ9GeHWJ5S+Qi9auFtHCnxa1n3w7FcfBnlavvhhI5uI7nkrfnGwo52r8UPhi5/AjlO9Pq/wBY6p/nC+SuxmM5iX4eGvaPu64O5OOLegCogAoAAAAAAAIACgACooAAgPtl8tiXnhwjrM8mngZPCpx03p7z9nN1I7zm1mYWUxrcq6R3nhDt4ezP5W+GPu0Bnd1pMR1a7Py8dJnzmXOMnl/4R833HPa6/mfj4/8Ajy/8I+bhbIZeekx5TLsh2n8z8Z99mR+23xQ6uLk8evONY714todTdc3EeeG1j5TCvzjSe8cJ/LMzOVxKc+Ne8fdpNSs9YsdcB05AAAAAAABAAUAAVFAdvJZOb+lbhX52/Djkctv21nwxz9c9mxEQz3rnxHeM9+aViIjSOER0gBk2AAAAAAAACYjTSeIAy89kt306eHrHb8Oi9GyNoZXdner4Z+Utca+qy1n7jpgNGYAAAAAIACgADlSk2tFY5zOji0NlYWtpvPThHmlvIsna7+Dh1rSKx0+cuYPO9AAAAAAAAAAAACuOJStqzWeUxo5Ajz+PhTS81np84cGntbC9GLx04T5dGY3zexhqcoA6QAAAEABQABt5Gm7g19cb3vYkRxehrGkRHaIhn5Gnj9qAyagAAAAAAAAAAAKAI4Y9N7DtXvE+9596N5/MV0xLR2tP1aeNn5HABqzAAABAAUABywvHX2o+r0Dz+F46+1X6vQMvI18f2AM2gAAAAAAAAAAACgCDCzv69/a+zdYee/Xv5/Z34/bjfp8AGzIAAAB//9k="
alt="기본 프로필"
/>
<Styled.CoverOverlay>
<Styled.ProfileInfo>
<Styled.Nickname>-</Styled.Nickname>
</Styled.ProfileInfo>
</Styled.CoverOverlay>
</Styled.CoverSection>
<Layout>
<Styled.Header />
<Styled.CoverSection>
<Styled.CoverImage
src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgQChENDRAPDQ8QDQ0NEBANDQ8NDQ8PFBEWFhUdExMZHCggGBolGxUTITEhJSkrLi42Fx85ODMsNygtLisBCgoKDg0OFxAQFS4dICU3NSsrLS0rMC0rLSstKzctLSs1Ky03KystNS0rKy0tLS0rKysrKzc3LS03KysrKysrN//AABEIAOAA4QMBIgACEQEDEQH/xAAaAAEBAQADAQAAAAAAAAAAAAAAAQUCBAYD/8QAMRABAAIAAwYCCQUBAQAAAAAAAAECAwQRBRIhMUFRMnEiYXKRkqGxweEzQlKB0SMU/8QAGQEBAQEBAQEAAAAAAAAAAAAAAAEDAgQF/8QAHhEBAQEBAAIDAQEAAAAAAAAAAAECEQMxIUFREhP/2gAMAwEAAhEDEQA/APVgr6L5qCoKKIIoAAAAAAAAAAAAAIKAgoCCgIKAgoCKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAKogCiKAAIAAAAAAAAAAAACAqiAKIAogAqAgAKAAKigACAAAAA5Uw72nSsTPlGr71yGYnpEecwlsiyWusO1Oz8x2ifK0PhiYOLXxVmP64e87DlcAFQABABQAAAAAAAQAFAAFRQABAACIno0crs+OeJ8P8Arns7KxEb9uc8vVDustb+o1zj7qVrERpEREdo4KDNqAA6eZyFLcaejPb9s/4y71tE6TGkw9A62dy0XrrHijl6/U0zv9Z6x+McBqxQAUAAAAAAAEABQABUUAAQfbJ4W/ixHTnPlD4tDZFeNreUOdXkdZna0QGD0AAAAAAMjaWFu4uscrcf76uq1Nq1/wCcT2t9YZbfN7GG5yoA6cgAAAAAAAAAAACooAAg09k+C3tR9GY72yr6XmveNfc536d49tMBg3AAAAAAdXaf6M+1VkNLa1/RrX17zNbY9MN+0AduQAAAAAAAQAFAAFRQABBywsSa3i0c4nVxBW/h3rasWjlMauTHyWamk6TxrPylr1tExrE6xPWGGs8b511QHLoAAJmIjWeEDLz+c3vQp4es9/wsnXOtcdfNY2/iTbpyjyfIG7BAFAAAAAAAAQAFAAFRQABAAB9cDMYlJ9GeHWJ5S+Qi9auFtHCnxa1n3w7FcfBnlavvhhI5uI7nkrfnGwo52r8UPhi5/AjlO9Pq/wBY6p/nC+SuxmM5iX4eGvaPu64O5OOLegCogAoAAAAAAAIACgACooAAgPtl8tiXnhwjrM8mngZPCpx03p7z9nN1I7zm1mYWUxrcq6R3nhDt4ezP5W+GPu0Bnd1pMR1a7Py8dJnzmXOMnl/4R833HPa6/mfj4/8Ajy/8I+bhbIZeekx5TLsh2n8z8Z99mR+23xQ6uLk8evONY714todTdc3EeeG1j5TCvzjSe8cJ/LMzOVxKc+Ne8fdpNSs9YsdcB05AAAAAAABAAUAAVFAdvJZOb+lbhX52/Djkctv21nwxz9c9mxEQz3rnxHeM9+aViIjSOER0gBk2AAAAAAAACYjTSeIAy89kt306eHrHb8Oi9GyNoZXdner4Z+Utca+qy1n7jpgNGYAAAAAIACgADlSk2tFY5zOji0NlYWtpvPThHmlvIsna7+Dh1rSKx0+cuYPO9AAAAAAAAAAAACuOJStqzWeUxo5Ajz+PhTS81np84cGntbC9GLx04T5dGY3zexhqcoA6QAAAEABQABt5Gm7g19cb3vYkRxehrGkRHaIhn5Gnj9qAyagAAAAAAAAAAAKAI4Y9N7DtXvE+9596N5/MV0xLR2tP1aeNn5HABqzAAABAAUABywvHX2o+r0Dz+F46+1X6vQMvI18f2AM2gAAAAAAAAAAACgCDCzv69/a+zdYee/Xv5/Z34/bjfp8AGzIAAAB//9k="
alt="기본 프로필"
/>
<Styled.CoverOverlay>
<Styled.ProfileInfo>
<Styled.Nickname>-</Styled.Nickname>
</Styled.ProfileInfo>
</Styled.CoverOverlay>
</Styled.CoverSection>

{showModal && (
<Styled.ModalOverlay onClick={() => setShowModal(false)}>
<Styled.ModalContent onClick={(e) => e.stopPropagation()}>
<Styled.ModalText>존재하지 않는 프로필입니다.</Styled.ModalText>
<Styled.ModalButton href={EXTERNAL_DOMAIN.SHOW_MANAGER}>
불티 홈 바로 가기
</Styled.ModalButton>
</Styled.ModalContent>
</Styled.ModalOverlay>
)}
</Layout>
</>
<Confirm
confirmText="불티 홈 바로 가기"
onConfirm={() => {
window.location.href = EXTERNAL_DOMAIN.SHOW_MANAGER;
}}
>
존재하지 않는 프로필입니다.
</Confirm>
</Layout>
);
};

Expand Down
4 changes: 2 additions & 2 deletions apps/profile/src/components/VideoCard/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ const VideoCard = ({ videoUrl }: VideoCardProps) => {
const formattedDuration = formatYoutubeDuration(data?.duration ?? null);

return (
<Styled.VideoCard href={videoUrl}>
<Styled.VideoCard href={videoUrl} target="_blank" rel="noopener noreferrer">
<Styled.VideoThumbnailWrapper>
<Styled.VideoThumbnail src={getYoutubeThumbnailUrl(videoId)} alt="YouTube video" />
</Styled.VideoThumbnailWrapper>
<Styled.VideoInfo>
<Styled.VideoTitle>{data?.title ?? 'YouTube 영상'}</Styled.VideoTitle>
<Styled.VideoTitle>{data?.title ?? '알 수 없는 동영상'}</Styled.VideoTitle>
{formattedDuration && <Styled.VideoDuration>{formattedDuration}</Styled.VideoDuration>}
</Styled.VideoInfo>
</Styled.VideoCard>
Expand Down
9 changes: 2 additions & 7 deletions apps/profile/src/constants/external.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
import { IS_PRODUCTION_PHASE } from './phase';

export const EXTERNAL_DOMAIN = {
SHOW_MANAGER: `https://${IS_PRODUCTION_PHASE ? '' : 'dev.'}boolti.in`,
SHOW_TICKET_PREVIEW: `https://${IS_PRODUCTION_PHASE ? '' : 'dev.'}preview.boolti.in`,
SHOW_MANAGER: `https://${IS_PRODUCTION_PHASE ? '' : 'dev.'}preview.boolti.in`,
} as const;

export const EXTERNAL_URL = {
SHOW_MANAGER_INFO: (showId: string | number) =>
`${EXTERNAL_DOMAIN.SHOW_MANAGER}/show/${showId}/info`,

SHOW_TICKET_PREVIEW: (showId: string | number) =>
`${EXTERNAL_DOMAIN.SHOW_TICKET_PREVIEW}/show/${showId}`,
SHOW_MANAGER_INFO: (showId: string | number) => `${EXTERNAL_DOMAIN.SHOW_MANAGER}/show/${showId}`,
} as const;
1 change: 1 addition & 0 deletions apps/profile/src/constants/schemes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,5 @@ export function createAppScheme({ path, query }: SchemeOptions): string {
export const SCHEMES = {
홈: () => createAppScheme({ path: 'home' }),
선물_등록: (giftId: string) => createAppScheme({ path: `gift/${giftId}` }),
브릿지_스토어: () => createAppScheme({ path: 'bridge/store' }),
};
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,14 @@ const Container = styled.div`
display: flex;
flex-direction: column;
gap: 16px;
padding: 20px;

${mq_lg} {
padding: 20px;
}
padding: 0px 20px;
`;

const CountText = styled.p`
${({ theme }) => theme.typo.b2};
color: ${({ theme }) => theme.palette.grey.g40};

${mq_lg} {
padding: 0;
}
padding: 16px 0px 12px 0px;
margin-left: 20px;
`;

const LinkItem = styled.a`
Expand Down
9 changes: 7 additions & 2 deletions apps/profile/src/pages/ProfileLinkPage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,15 @@ export const ProfileLinkPage = () => {
return (
<Layout>
<Header title="링크" />
<Styled.CountText>전체 {data?.length || 0}개</Styled.CountText>
<Styled.Container>
<Styled.CountText>총 {data?.length || 0}개</Styled.CountText>
{data?.map((link, index) => (
<Styled.LinkItem key={`${link.link}-${index}`} href={link.link}>
<Styled.LinkItem
key={`${link.link}-${index}`}
href={link.link}
target="_blank"
rel="noopener noreferrer"
>
<Styled.IconWrapper>
<ChainLink />
</Styled.IconWrapper>
Expand Down
15 changes: 7 additions & 8 deletions apps/profile/src/pages/ProfilePage/ProfilePage.styles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,12 +139,6 @@ const Section = styled.div`
padding: 32px 20px 24px 20px;
`;

const Sections = styled.div`
& > ${Section}:not(:last-child) {
border-bottom: 1px solid ${({ theme }) => theme.palette.grey.g90};
}
`;

const PastShowSection = styled.div`
padding: 32px 0px;
`;
Expand Down Expand Up @@ -382,7 +376,7 @@ const ShareDropdownItem = styled.button`
padding: 0 16px;
background: none;
border: none;
${({ theme }) => theme.typo.b3};
${({ theme }) => theme.typo.b1};
color: ${({ theme }) => theme.palette.mobile.grey.g15};
text-align: left;
cursor: pointer;
Expand Down Expand Up @@ -443,6 +437,11 @@ const DialogDescription = styled.p`
}
`;

const Divider = styled.hr`
border-top: 1px solid ${({ theme }) => theme.palette.grey.g90};
margin: 0px 20px;
`;

export default {
CoverSection,
CoverImage,
Expand All @@ -456,10 +455,10 @@ export default {
InfoText,
ActionButtons,
IconButton,
Sections,
Section,
SectionHeader,
SectionTitle,
Divider,
ViewAllButton,
ArrowIcon,
ShowList,
Expand Down
Loading
Loading