모집 완료 기간
diff --git a/components/agenda/utils/CustomImage.tsx b/components/agenda/utils/CustomImage.tsx
index cc43ff197..87ae26f23 100644
--- a/components/agenda/utils/CustomImage.tsx
+++ b/components/agenda/utils/CustomImage.tsx
@@ -1,6 +1,6 @@
import Image from 'next/image';
import classNames from 'classnames';
-import { useState } from 'react';
+import { MouseEvent, useState } from 'react';
import { CustomImageProps } from 'types/agenda/utils/customImageTypes';
import styles from 'styles/agenda/utils/CustomImage.module.scss';
@@ -10,8 +10,12 @@ const CustomImage = ({
alt,
addClass,
isProfileImage,
+ name,
+ description,
}: CustomImageProps) => {
const [imgSrc, setImgSrc] = useState(src);
+ const [isHovered, setIsHovered] = useState(false);
+ const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });
const handleError = () => {
isProfileImage
@@ -19,17 +23,41 @@ const CustomImage = ({
: setImgSrc('/image/agenda/42-icon.svg');
};
+ const handleMouseEnter = (e: MouseEvent
) => {
+ setIsHovered(true);
+ setMousePosition({
+ x: e.clientX,
+ y: e.clientY,
+ });
+ };
+
+ const handleMouseLeave = () => {
+ setIsHovered(false);
+ };
+
return src ? (
-
+
+
+ {isHovered && (
+
+
{name}
+
{description}
+
+ )}
+
) : null;
};
diff --git a/components/agenda/utils/PageController.tsx b/components/agenda/utils/PageController.tsx
index 1f5f485f2..9b9f62365 100644
--- a/components/agenda/utils/PageController.tsx
+++ b/components/agenda/utils/PageController.tsx
@@ -99,7 +99,7 @@ const PageController = ({
? handleNavigation(
'/agenda/detail?agenda_key=' + data[current].agendaKey
)
- : null;
+ : handleNavigation('/agenda');
}}
className={styles.toClick}
/>
diff --git a/components/takgu/Layout/Header.tsx b/components/takgu/Layout/Header.tsx
index 3ab150d9d..7aac9bb40 100644
--- a/components/takgu/Layout/Header.tsx
+++ b/components/takgu/Layout/Header.tsx
@@ -78,7 +78,7 @@ export default function Header() {
)}
diff --git a/components/takgu/Layout/MenuBar/MenuBarElement.tsx b/components/takgu/Layout/MenuBar/MenuBarElement.tsx
index 7fe74b20f..15a18513c 100644
--- a/components/takgu/Layout/MenuBar/MenuBarElement.tsx
+++ b/components/takgu/Layout/MenuBar/MenuBarElement.tsx
@@ -12,6 +12,7 @@ import AdminEmoji from 'public/image/takgu/menu_admin.svg';
import AnnouncementEmoji from 'public/image/takgu/menu_announcement.svg';
import CurrentMatchEmoji from 'public/image/takgu/menu_currentMatch.svg';
import HallOfFameEmoji from 'public/image/takgu/menu_halloffame.svg';
+import HomeEmoji from 'public/image/takgu/menu_home.svg';
import ManualEmoji from 'public/image/takgu/menu_manual.svg';
import RankingEmoji from 'public/image/takgu/menu_ranking.svg';
import RecruitEmoji from 'public/image/takgu/menu_recruit.svg';
@@ -75,6 +76,10 @@ const MenuItem = ({ itemName, onClick }: menuItemProps) => {
name: '지원하기',
svg:
,
},
+ Home: {
+ name: 'Home',
+ svg:
,
+ },
};
return (
@@ -126,6 +131,12 @@ export const MainMenu = () => {
onClick={HeaderState?.resetOpenMenuBarState}
/>
)}
+
+
+
{
{isAdmin && (
-
+
+
+
)}
diff --git a/pages/agenda/detail/host/index.tsx b/pages/agenda/detail/host/index.tsx
index db42ba343..dfab0ba6b 100644
--- a/pages/agenda/detail/host/index.tsx
+++ b/pages/agenda/detail/host/index.tsx
@@ -20,6 +20,7 @@ const ModifyAgenda = () => {
const { sendRequest } = useFetchRequest();
const { openModal } = useModal();
const agendaStatus = agendaData?.agendaStatus;
+ const agendaIsRanking = agendaData?.isRanking;
const setSnackbar = useSetRecoilState(toastState);
const handleClick = (description: string, onProceed: () => void) => {
@@ -70,9 +71,14 @@ const ModifyAgenda = () => {
const resultAgenda = () => {
if (agendaStatus && agendaStatus === AgendaStatus.CONFIRM) {
- handleClick('행사를 상 입력 없이 종료하시겠습니까?', () => {
- sendRequest('PATCH', 'finish', {}, { agenda_key: agendaKey });
- router.push(`/agenda/detail?agenda_key=${agendaKey}`);
+ handleClick('행사를 종료하시겠습니까?', () => {
+ sendRequest(
+ 'PATCH',
+ 'finish',
+ { awards: [] },
+ { agenda_key: agendaKey }
+ );
+ window.location.href = `/agenda/detail?agenda_key=${agendaKey}`;
});
} else {
setSnackbar({
@@ -86,7 +92,7 @@ const ModifyAgenda = () => {
const resultFormAgenda = () => {
if (agendaStatus && agendaStatus === AgendaStatus.CONFIRM) {
- handleClick('행사 종료 후 상 입력을 하시겠습니까?', () => {
+ handleClick('행사 종료 및 상 입력을 하시겠습니까?', () => {
router.push(`/agenda/detail/host/result?agenda_key=${agendaKey}`);
});
} else {
@@ -111,6 +117,7 @@ const ModifyAgenda = () => {
if (!agendaKey) {
return
;
}
+ console.log('data', agendaData);
return (
<>
@@ -150,11 +157,14 @@ const ModifyAgenda = () => {
행사가 진행 중인 상태에서만 행사를 종료할 수 있습니다.
-
-
+ {agendaIsRanking ? (
+
+ ) : (
+
+ )}
diff --git a/pages/agenda/detail/host/result.tsx b/pages/agenda/detail/host/result.tsx
index 29a03ea51..f3471c5ad 100644
--- a/pages/agenda/detail/host/result.tsx
+++ b/pages/agenda/detail/host/result.tsx
@@ -24,7 +24,7 @@ function checkAwardSubmitable(awardList: AwardListProps[]) {
const awardedTeams: { [key: string]: string } = {};
awardList.forEach((awardInfo) => {
if (awardInfo.teams.length === 0) {
- throw new Error(awardInfo.award + '상에 팀이 없습니다.');
+ throw new Error(awardInfo.award + '에 팀이 없습니다.');
}
awardInfo.teams.forEach((team) => {
if (awardedTeams[team]) {
@@ -59,7 +59,7 @@ function parseData(awardList: AwardListProps[]) {
Data.push({
awardName: awardInfo.award,
teamName: team,
- awardPriority: key,
+ awardPriority: key + 1,
});
});
});
@@ -118,15 +118,21 @@ const SubmitAgendaResult = () => {
}
const msg = awardlistToString(awardList);
+
openModal({
type: 'proceedCheck',
title: '결과 제출 전 확인',
description: msg + '\n결과를 제출하시겠습니까?',
- onProceed: () => {
- instanceInAgenda.patch(`/confirm?agenda_key=${agenda_key}`, {
- awards: Data,
- });
- closeModal();
+ onProceed: async () => {
+ try {
+ await instanceInAgenda.patch(`/finish?agenda_key=${agenda_key}`, {
+ awards: Data,
+ });
+ closeModal();
+ window.location.href = `/agenda/detail?agenda_key=${agenda_key}`;
+ } catch (error) {
+ return error;
+ }
},
});
};
diff --git a/pages/agenda/profile/user.tsx b/pages/agenda/profile/user.tsx
index c2fe22cdd..f41222774 100644
--- a/pages/agenda/profile/user.tsx
+++ b/pages/agenda/profile/user.tsx
@@ -25,7 +25,7 @@ const AgendaProfile = () => {
const isMyProfile = useRef(false); // 내 프로필 페이지인지 아닌지 확인
const [isIntraId, setIsIntraId] = useState
(false); // 인트라 아이디가 42에 있는지 확인
const [isAgendaId, setIsAgendaId] = useState(false); // 인트라 아이디가 agenda에 있는지 확인
- const [activeTab, setActiveTab] = useState('current'); // 현재 활성화된 탭 상태 관리
+ const [activeTab, setActiveTab] = useState(''); // 현재 활성화된 탭 상태 관리
/** API GET */
// GET: intraData (42 인트라 데이터 가져오기)
@@ -39,7 +39,11 @@ const AgendaProfile = () => {
url: `/profile/${queryIntraId}`,
isReady: isIntraId,
});
-
+ // GET: current
+ const currentListData = useFetchGet({
+ url: '/profile/current/list',
+ isReady: isAgendaId,
+ }).data;
// GET: host current
const {
content: hostCurrentListData,
@@ -48,11 +52,6 @@ const AgendaProfile = () => {
url: `/host/current/list/${queryIntraId}`,
isReady: isAgendaId,
});
- // GET: current team
- const currentListData = useFetchGet({
- url: '/profile/current/list',
- isReady: isAgendaId,
- }).data;
// GET: host history
const {
content: hostHistoryListData,
@@ -70,17 +69,19 @@ const AgendaProfile = () => {
isReady: isAgendaId,
});
- /** useEffect */
+ /** useEffect - 순차적으로 데이터 호출 */
useEffect(() => {
const updateProfileStatus = () => {
// 1. queryIntraId와 myIntraId가 있을 때 프로필 URL 설정
isMyProfile.current = queryIntraId === myIntraId;
+ isMyProfile.current
+ ? setActiveTab('current')
+ : setActiveTab('hostCurrent');
// 2. intraData가 있으면 인트라 아이디가 42에 있다는 뜻이므로 isIntraId = true
setIsIntraId(!!intraData);
// 3. agendaProfileData가 있으면 아젠다에 등록된 사용자이므로 isAgendaId = true
setIsAgendaId(!!agendaProfileData);
};
-
setIsIntraId(false);
setIsAgendaId(false);
updateProfileStatus();
@@ -123,17 +124,19 @@ const AgendaProfile = () => {
AGENDA LIST
-
+ {isMyProfile.current ? (
+
+ ) : null}
- {/* Host Current List */}
- {activeTab === 'hostCurrent' &&
- hostCurrentListData &&
- hostCurrentListData.length > 0 ? (
- <>
-
-
- >
- ) : activeTab === 'hostCurrent' ? (
- ''
- ) : null}
-
- {/* Current List */}
+ {/* Current List - 참여중 */}
{activeTab === 'current' &&
isMyProfile.current &&
currentListData ? (
<>
>
- ) : activeTab === 'current' ? (
- ''
) : null}
- {/* History Host List */}
- {activeTab === 'hostHistory' &&
- hostHistoryListData &&
- hostHistoryListData.length > 0 ? (
+ {/* Host Current List - 개최중 */}
+ {activeTab === 'hostCurrent' && hostCurrentListData ? (
<>
-
{' '}
-
+
+
>
- ) : activeTab === 'hostHistory' ? (
- ''
) : null}
- {/* History List */}
+ {/* History List - 참여 기록 */}
{activeTab === 'history' && historyListData ? (
<>
{' '}
>
- ) : activeTab === 'history' ? (
- ''
+ ) : null}
+
+ {/* History Host List - 개최 기록 */}
+ {activeTab === 'hostHistory' && hostHistoryListData ? (
+ <>
+
{' '}
+
+ >
) : null}
diff --git a/pages/index.tsx b/pages/index.tsx
index 5932e6eb2..f15e94bb2 100644
--- a/pages/index.tsx
+++ b/pages/index.tsx
@@ -2,6 +2,7 @@ import Image from 'next/image';
import { useRouter } from 'next/router';
import type { NextPage } from 'next';
import PageController from 'components/agenda/utils/PageController';
+import RightArrow from 'public/image/agenda/ChevronRight.svg';
import PingpongIcon from 'public/image/takgu/ping-pong.svg';
import styles from 'styles/index.module.scss';
@@ -14,28 +15,41 @@ const Index: NextPage = () => {
return (
-
handleNavigation('/agenda')}
- >
- Agenda
-
+
+
handleNavigation('/agenda')}
+ >
+ Agenda
+
+ handleNavigation('/agenda')}
+ />
+
-
Ticket
+
handleNavigation('/agenda/ticket')}
+ >
+ Ticket
+
@@ -49,7 +63,9 @@ const Index: NextPage = () => {
className={styles.container}
onClick={() => handleNavigation('/takgu')}
>
-
+
@@ -57,7 +73,7 @@ const Index: NextPage = () => {
handleNavigation('/takgu')}
+ // onClick={() => handleNavigation('/outer')}
>
Outer match
diff --git a/pages/takgu/recruit/index.tsx b/pages/takgu/recruit/index.tsx
index 8d8b70d52..aaf71be13 100644
--- a/pages/takgu/recruit/index.tsx
+++ b/pages/takgu/recruit/index.tsx
@@ -1,13 +1,15 @@
-import Lottie from 'lottie-react';
+import dynamic from 'next/dynamic';
import { Button } from '@mui/material';
import RecruitList from 'components/takgu/recruit/RecruitList';
import StickyHeader from 'components/takgu/recruit/StickyHeader';
-import recruitPingpong from 'public/lottie/recruitPingPong.json';
import useCheckRecruit from 'hooks/takgu/recruit/useCheckRecruit';
import commonStyle from 'styles/takgu/recruit/common.module.scss';
import layoutStyle from 'styles/takgu/recruit/layout.module.scss';
import textStyle from 'styles/takgu/recruit/text.module.scss';
+// Lottie 컴포넌트를 동적으로 임포트
+const Lottie = dynamic(() => import('lottie-react'), { ssr: false });
+
function Recruit() {
const { isRecruiting, isLoading } = useCheckRecruit();
@@ -20,7 +22,7 @@ function Recruit() {
@@ -38,7 +40,7 @@ function Recruit() {
diff --git a/public/image/takgu/menu_home.svg b/public/image/takgu/menu_home.svg
new file mode 100644
index 000000000..d334c5664
--- /dev/null
+++ b/public/image/takgu/menu_home.svg
@@ -0,0 +1,3 @@
+
diff --git a/styles/agenda/Form/AgendaResultForm.module.scss b/styles/agenda/Form/AgendaResultForm.module.scss
index 2257141b0..1205493c1 100644
--- a/styles/agenda/Form/AgendaResultForm.module.scss
+++ b/styles/agenda/Form/AgendaResultForm.module.scss
@@ -106,3 +106,29 @@
outline: none;
box-shadow: 0 0 5px 5px var(--highlight-yellow);
}
+
+.formBtn {
+ display: flex;
+ height: 1rem;
+ flex: 1;
+ padding: 0.5rem;
+ margin: 0 0.5rem;
+ cursor: pointer;
+ user-select: none;
+ border-radius: $radius-small;
+ justify-content: center;
+ align-items: center;
+ &.submit {
+ @include textButton('submit', 'highlight');
+ }
+ &.cancel {
+ @include textButton('cancel', 'default');
+ }
+}
+
+.buttonContainer {
+ display: flex;
+ margin: 1em 2rem;
+ gap: 1rem;
+ justify-content: space-between;
+}
diff --git a/styles/agenda/Home/AgendaInfo.module.scss b/styles/agenda/Home/AgendaInfo.module.scss
index 0d8cfaaf0..ddd61fddd 100644
--- a/styles/agenda/Home/AgendaInfo.module.scss
+++ b/styles/agenda/Home/AgendaInfo.module.scss
@@ -1,5 +1,33 @@
@import 'styles/agenda/common.scss';
+.emptyContainer {
+ display: flex;
+ width: 100%;
+ height: 100%;
+ flex-direction: column;
+ cursor: pointer;
+ justify-content: center;
+ align-items: center;
+ gap: 2rem;
+ @include text('default');
+}
+
+.emptyContent {
+ position: relative;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 0.5rem;
+ @include text('tab');
+}
+
+.arrowIcon {
+ position: absolute;
+ right: -2rem;
+ width: 1.2rem;
+ height: 1.2rem;
+}
+
.agendaInfoContainer {
display: flex;
width: 100%;
diff --git a/styles/agenda/Home/AgendaList.module.scss b/styles/agenda/Home/AgendaList.module.scss
index bba4ae6c2..3668f7809 100644
--- a/styles/agenda/Home/AgendaList.module.scss
+++ b/styles/agenda/Home/AgendaList.module.scss
@@ -45,6 +45,7 @@
.agendaListStatus {
@include text('statusButton');
+ cursor: pointer;
background: none;
border: none;
box-shadow: none;
diff --git a/styles/agenda/Layout/Header.module.scss b/styles/agenda/Layout/Header.module.scss
index f7a29a649..b20b2e382 100644
--- a/styles/agenda/Layout/Header.module.scss
+++ b/styles/agenda/Layout/Header.module.scss
@@ -18,8 +18,11 @@
padding: 1rem;
font-size: $font-size-l;
- justify-content: space-between;
+ gap: 1rem;
align-items: center;
+ @media screen and (min-width: 481px) {
+ gap: 1.5rem;
+ }
}
.logo {
@@ -36,13 +39,18 @@
height: 100%;
flex: 2;
gap: 2rem;
+ // justify-content: center;
justify-content: flex-start;
align-items: center;
- .menuIcon {
- width: 1.5rem;
- height: 1.5rem;
- cursor: pointer;
- }
+}
+
+.menuIcon {
+ // position: absolute;
+ // left: 2;
+ z-index: 2;
+ width: 1.5rem;
+ height: 1.5rem;
+ cursor: pointer;
}
.logoWrap {
diff --git a/styles/agenda/Layout/MenuBar.module.scss b/styles/agenda/Layout/MenuBar.module.scss
index 8a5c24370..5da906425 100644
--- a/styles/agenda/Layout/MenuBar.module.scss
+++ b/styles/agenda/Layout/MenuBar.module.scss
@@ -1,4 +1,5 @@
@import 'styles/agenda/common.scss';
+
.container {
position: fixed;
top: 4rem;
@@ -11,13 +12,13 @@
background: var(--menubar-bg);
}
.inactive {
- right: calc(max(25vw, 200px) * -1);
+ left: calc(max(25vw, 200px) * -1);
box-shadow: none;
transition: all 0.5s;
}
.active {
- right: 0;
- box-shadow: -1px 0 6px 0 var(--color-text);
+ left: 0; // 변경
+ box-shadow: 1px 0 6px 0 var(--color-text);
transition: all 0.5s;
}
@@ -28,6 +29,7 @@
width: 100vw;
height: 100vh;
}
+
.button {
display: flex;
width: 100%;
@@ -58,9 +60,17 @@
font-size: $font-size-s;
color: var(--color-text);
}
+
+ h3 {
+ margin: 0;
+ margin-bottom: 1rem;
+ font-size: $font-size-s;
+ color: var(--color-text);
+ }
p,
h1,
- h2 {
+ h2,
+ h3 {
@include hoverAction;
}
}
@@ -78,3 +88,37 @@
.activebg {
z-index: 300;
}
+
+.row {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ margin: 0.5rem 0;
+}
+
+.icon {
+ display: inline-flex;
+ width: 1.2rem;
+ height: 1.2rem;
+ margin-left: 0.5rem;
+ pointer-events: auto;
+ cursor: pointer;
+ align-items: center;
+ @include hoverAction;
+}
+.profile {
+ display: flex;
+ width: 100%;
+ width: 4.5rem;
+ height: 1.2rem;
+ flex-direction: column;
+ padding: 0.5rem;
+ margin: 0;
+ margin: 1rem 0.2rem;
+ border: var(--default-border);
+ border-radius: $radius-medium;
+ // box-shadow: var(--default-box-shadow);
+ border-radius: $radius-extra-small;
+ justify-content: center;
+ align-items: center;
+}
diff --git a/styles/agenda/Profile/AgendaProfile.module.scss b/styles/agenda/Profile/AgendaProfile.module.scss
index 07a7b6b1b..d41552f5f 100644
--- a/styles/agenda/Profile/AgendaProfile.module.scss
+++ b/styles/agenda/Profile/AgendaProfile.module.scss
@@ -53,8 +53,8 @@
}
@media screen and (min-width: 961px) {
width: 100%;
- min-height: 43rem;
- max-height: 43rem;
+ min-height: 47rem;
+ max-height: 47rem;
margin-top: 1rem;
}
}
diff --git a/styles/agenda/Profile/CurrentList.module.scss b/styles/agenda/Profile/CurrentList.module.scss
index 6ad137d52..68f812a09 100644
--- a/styles/agenda/Profile/CurrentList.module.scss
+++ b/styles/agenda/Profile/CurrentList.module.scss
@@ -9,6 +9,7 @@
.currentTeamEmpty {
@include text(description-s);
+ margin-left: 0.5rem;
}
.currentItemWrapper {
diff --git a/styles/agenda/Profile/HistoryList.module.scss b/styles/agenda/Profile/HistoryList.module.scss
index d920441e4..39c574de6 100644
--- a/styles/agenda/Profile/HistoryList.module.scss
+++ b/styles/agenda/Profile/HistoryList.module.scss
@@ -9,6 +9,7 @@
.historyEmpty {
@include text(description-s);
+ margin-left: 0.5rem;
}
// ITEM
diff --git a/styles/agenda/Profile/ProfileCard.module.scss b/styles/agenda/Profile/ProfileCard.module.scss
index de91d199d..98583b986 100644
--- a/styles/agenda/Profile/ProfileCard.module.scss
+++ b/styles/agenda/Profile/ProfileCard.module.scss
@@ -2,7 +2,7 @@
.profileImageCard {
width: 22rem;
- height: 31rem;
+ height: 35rem;
perspective: 1000px;
margin-bottom: 1rem;
}
@@ -217,11 +217,15 @@
.description {
width: 100%;
- height: 2.5rem;
+ min-height: 3.5rem;
+ max-height: 3.5rem;
+ overflow-y: scroll;
@include text(description-s);
+ white-space: pre-wrap;
}
.acheivementContainer {
+ position: relative; // acheivement hover
width: 100%;
height: auto;
@@ -233,7 +237,7 @@
display: flex;
flex-wrap: wrap;
width: 100%;
- height: 5rem;
+ height: 8rem;
margin-top: 0.5rem;
gap: 0.3rem;
overflow-y: scroll;
diff --git a/styles/agenda/agendaDetail/tabs/AgendaDescription.module.scss b/styles/agenda/agendaDetail/tabs/AgendaDescription.module.scss
index 5f3fd4da4..6ac429e80 100644
--- a/styles/agenda/agendaDetail/tabs/AgendaDescription.module.scss
+++ b/styles/agenda/agendaDetail/tabs/AgendaDescription.module.scss
@@ -76,3 +76,7 @@
flex-direction: column;
}
}
+
+.preWrap {
+ white-space: pre-wrap;
+}
diff --git a/styles/agenda/agendaDetail/tabs/AnnouncementItem.module.scss b/styles/agenda/agendaDetail/tabs/AnnouncementItem.module.scss
index 2ead58ac7..6ae9f9cd0 100644
--- a/styles/agenda/agendaDetail/tabs/AnnouncementItem.module.scss
+++ b/styles/agenda/agendaDetail/tabs/AnnouncementItem.module.scss
@@ -45,6 +45,7 @@
.announcementContent {
@include text('default');
+ white-space: pre-wrap;
}
.mobile {
diff --git a/styles/agenda/common.scss b/styles/agenda/common.scss
index 7485a5931..b2e8df5e8 100644
--- a/styles/agenda/common.scss
+++ b/styles/agenda/common.scss
@@ -39,6 +39,9 @@ $bg-color-deadline-cancel: rgba(18, 18, 18, 0.8);
$agenda-list-bg: linear-gradient(180deg, #fff 65px, rgba(0, 0, 0, 0) 100%),
var(--color-bg) lightgray 50% / cover no-repeat;
+$hover-bg-color: #e0c7fe;
+$hover-bg-title: #cda7fc;
+
// font-family
$font-text-bold: '11StreetGothicBold';
$font-text-regular: '11StreetGothicRegular';
diff --git a/styles/agenda/pages/agendakey/host/result.module.scss b/styles/agenda/pages/agendakey/host/result.module.scss
index cbe1397c1..f0a52ddc2 100644
--- a/styles/agenda/pages/agendakey/host/result.module.scss
+++ b/styles/agenda/pages/agendakey/host/result.module.scss
@@ -1 +1,7 @@
@import 'styles/agenda/common.scss';
+
+.container {
+ display: flex;
+ width: 100%;
+ padding: 0rem 4rem;
+}
diff --git a/styles/agenda/utils/CustomImage.module.scss b/styles/agenda/utils/CustomImage.module.scss
index edeb4e8fd..9e199eac3 100644
--- a/styles/agenda/utils/CustomImage.module.scss
+++ b/styles/agenda/utils/CustomImage.module.scss
@@ -1,6 +1,36 @@
@import 'styles/agenda/common.scss';
+.imageContainer {
+ width: 100%;
+ height: 100%;
+}
+
.customImage {
width: 100%;
height: 100%;
}
+
+.hoverContainer {
+ position: absolute;
+ bottom: 90%;
+ left: 55%;
+ z-index: 9999;
+ display: flex;
+ flex-direction: column;
+ background-color: $hover-bg-color;
+ border-radius: $radius-extra-small;
+ gap: 0.1rem;
+}
+
+.hoverName {
+ @include text('description-regular');
+ padding: 0.3rem;
+ font-weight: 900;
+ background-color: $hover-bg-title;
+ border-radius: $radius-extra-small $radius-extra-small 0 0;
+}
+
+.hoverDescription {
+ @include text('description');
+ padding: 0.3rem;
+}
diff --git a/styles/agenda/utils/PageController.module.scss b/styles/agenda/utils/PageController.module.scss
index fe83278c2..ac367e36b 100644
--- a/styles/agenda/utils/PageController.module.scss
+++ b/styles/agenda/utils/PageController.module.scss
@@ -8,6 +8,8 @@
@media screen and (max-width: 960px) {
height: 90%;
}
+ pointer-events: auto;
+ cursor: pointer;
}
.agendaInfoContainer {
diff --git a/styles/index.module.scss b/styles/index.module.scss
index bfdb4b916..c3485c97e 100644
--- a/styles/index.module.scss
+++ b/styles/index.module.scss
@@ -1,4 +1,5 @@
@import 'styles/agenda/common.scss';
+
.layout {
@include layout;
max-width: 100%;
@@ -7,11 +8,22 @@
'top top' auto
'content match' 17rem / 1fr 1fr;
gap: 1rem;
+ pointer-events: none;
}
+
.title {
@include text(main-menu);
+ display: inline-block;
margin: 0 0 0 2rem;
font-size: $font-size-l;
+ pointer-events: auto;
+ cursor: pointer;
+}
+
+.titleWarp {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
}
.container {
@@ -21,6 +33,8 @@
width: auto;
height: calc(100% - 4.7rem);
}
+ pointer-events: auto;
+ cursor: pointer;
}
.flex {
@@ -58,3 +72,20 @@
.pingpong {
grid-area: pingpong;
}
+
+.arrowIcon {
+ width: 1.2rem;
+ height: 1.2rem;
+ pointer-events: auto;
+ cursor: pointer;
+}
+
+.imageWarpper {
+ position: relative;
+ padding: 0.5rem;
+ overflow: hidden;
+ cursor: pointer;
+ @media screen and (max-width: 961px) {
+ padding: 1rem;
+ }
+}
diff --git a/types/agenda/utils/customImageTypes.ts b/types/agenda/utils/customImageTypes.ts
index e97236b4a..ffd69b329 100644
--- a/types/agenda/utils/customImageTypes.ts
+++ b/types/agenda/utils/customImageTypes.ts
@@ -3,4 +3,6 @@ export interface CustomImageProps {
alt: string;
addClass?: string;
isProfileImage?: boolean;
+ name?: string;
+ description?: string;
}
diff --git a/utils/agenda/getAgendaSnackBarInfo.ts b/utils/agenda/getAgendaSnackBarInfo.ts
index 4bb6d0f8b..e237ce89e 100644
--- a/utils/agenda/getAgendaSnackBarInfo.ts
+++ b/utils/agenda/getAgendaSnackBarInfo.ts
@@ -46,6 +46,10 @@ export default function getAgendaSnackBarInfo(
severity: 'success',
message: '대회가 성공적으로 확정되었습니다.',
},
+ '/finish': {
+ severity: 'success',
+ message: '결과가 성공적으로 등록되었습니다.',
+ },
'/cancel': {
severity: 'info',
message: '대회가 취소되었습니다.',
diff --git a/utils/recoil/agenda/modalState.ts b/utils/recoil/agenda/modalState.ts
index d726b828e..71c7c1af0 100644
--- a/utils/recoil/agenda/modalState.ts
+++ b/utils/recoil/agenda/modalState.ts
@@ -2,6 +2,6 @@ import { atom } from 'recoil';
import { agendaModal } from 'types/agenda/modalTypes';
export const agendaModalState = atom({
- key: 'modalState',
+ key: 'agendaModalState',
default: null,
});