Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
27 changes: 27 additions & 0 deletions public/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 5 additions & 2 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@
import '../styles/globals.css';

export const metadata: Metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
title: 'DEVING',
description: '개발자들만의 다양한 모임을 즐겨요!',
icons: {
icon: '/logo.svg', // 또는 "/icon.png"
},
};

const pretendard = localFont({
Expand All @@ -33,7 +36,7 @@
children: React.ReactNode;
}>) {
const userInfo = await getUserInfo();
console.log('banner Info', userInfo);

Check warning on line 39 in src/app/layout.tsx

View workflow job for this annotation

GitHub Actions / check

Unexpected console statement

return (
<html lang="ko" className={pretendard.variable}>
Expand Down
2 changes: 2 additions & 0 deletions src/app/meeting/[category]/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import FloatingButtonGroup from '@/components/common/FloatingButtonGroup';
import ReviewAvgCard from '@/components/common/review/ReviewAvgCard';

import BackButton from '../../components/BackButton';
Expand All @@ -13,6 +14,7 @@ export default function page({ params }: { params: { id: string } }) {

return (
<div className="flex flex-col gap-[48px]">
<FloatingButtonGroup />
<BackButton />
<div className="flex flex-col gap-[48px] p-[16px] md:px-[48px]">
<CardWrapper meetingId={meetingId} />
Expand Down
3 changes: 3 additions & 0 deletions src/app/meeting/components/CardWrapper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import SkeletonMeetingTotalInfo from './skeletons/SkeletonMeetingTotalInfo';

const CardWrapper = ({ meetingId }: { meetingId: number }) => {
const { data: meeting, isLoading, error } = useDetailQueries(meetingId);

Check warning on line 13 in src/app/meeting/components/CardWrapper.tsx

View workflow job for this annotation

GitHub Actions / check

'error' is assigned a value but never used. Allowed unused vars must match /^_/u
const { category } = useParams();
const categoryStr = Array.isArray(category) ? category[0] : category;

Expand All @@ -35,6 +35,7 @@
isLike={meeting.isLike}
total={meeting.maxMember}
value={meeting.memberCount}
skills={meeting.meetingSkillArray}
>
<CardRightSection meeting={meeting} />
</VerticalCard>
Expand All @@ -55,6 +56,7 @@
isLike={meeting.isLike}
total={meeting.maxMember}
value={meeting.memberCount}
skills={meeting.meetingSkillArray}
/>
<CardRightSection meeting={meeting} />
</div>
Expand All @@ -70,6 +72,7 @@
isLike={meeting.isLike}
total={meeting.maxMember}
value={meeting.memberCount}
skills={meeting.meetingSkillArray}
className="flex-row"
>
<CardRightSection meeting={meeting} />
Expand Down
1 change: 1 addition & 0 deletions src/app/meeting/components/MeetingList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ const MeetingList = () => {
callBack: () => {
handleSearchOption({ keyword: inputValue });
},
delay: 300,
});

const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
Expand Down
20 changes: 20 additions & 0 deletions src/app/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,26 @@ export default function Home() {
</div>
</section>

{/* ✅ 이슈 제보 섹션 추가 ✅ */}
<section className="bg-Cgray200 py-10">
<div className="container mx-auto px-4 text-center">
<h3 className="typo-head3 mb-4 text-white">
사이트에서 문제가 발생했나요?
</h3>
<p className="typo-body2 mb-6 text-Cgray700">
오류를 발견하셨다면 아래 버튼을 눌러 이슈를 제보해주세요.
</p>
<Link
href="https://www.notion.so/kangyunji/1ab68460118e805ab4bbe1cd31beaf0c?pvs=4" // 🔗 노션 URL로 변경
target="_blank"
rel="noopener noreferrer"
className="bg-red-500 typo-button2 rounded-full px-6 py-3 text-white transition-opacity hover:opacity-90"
>
🛠 이슈 제보하기
</Link>
</div>
</section>

{/* Footer */}
<footer className="bg-BG_2 py-8">
<div className="container mx-auto px-4">
Expand Down
Binary file removed src/assets/icon/favicon.ico
Binary file not shown.
6 changes: 3 additions & 3 deletions src/components/common/FloatingButtonGroup.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const FloatingButtonGroup = () => {
const router = useRouter();
const MoveToCreateMeetingPage = () => {
// TODO: 모임 생성 페이지로 이동
router.push('/');
router.push('/meeting/create-meeting');
};

return (
Expand All @@ -28,13 +28,13 @@ const FloatingButtonGroup = () => {
{/* 웹 노출 */}
<FloatingButton
onClick={MoveToCreateMeetingPage}
className="z-10 hidden md:hidden lg:flex"
className="z-10 hidden md:flex"
icon={<Plus />}
/>
{/* 테블릿, 모바일 노출 노출 */}
<FloatingButton
onClick={MoveToCreateMeetingPage}
className="z-10 flex md:flex lg:hidden"
className="z-10 flex md:hidden"
variant="text"
icon={<Plus />}
>
Expand Down
30 changes: 22 additions & 8 deletions src/components/common/Header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const BeforeLogin = () => {
<nav className="ml-auto flex">
<Link
href="/login"
className="text-head3 hidden h-[54px] items-center justify-center text-white lg:flex"
className="text-head3 hidden h-[54px] items-center justify-center text-white md:flex"
>
로그인
</Link>
Expand Down Expand Up @@ -66,7 +66,7 @@ const AfterLogin = ({ userInfo }: { userInfo: IUserInfo }) => {
},
];
return (
<nav className="ml-auto hidden lg:flex">
<nav className="ml-auto hidden md:flex">
<div className="flex items-center">
<Dropdown
options={menu}
Expand All @@ -84,7 +84,10 @@ const AfterLogin = ({ userInfo }: { userInfo: IUserInfo }) => {
),
}}
/>
<span className="typo-head3 m-auto w-[77px] text-center text-white">
<span
title={userInfo.name}
className="typo-head3 m-auto w-[77px] truncate text-center text-white"
>
{userInfo.name}
</span>
</div>
Expand Down Expand Up @@ -129,7 +132,10 @@ const MobileAfterLogin = ({ userInfo }: { userInfo: IUserInfo }) => {
src={userInfo.profilePic}
alt="프로필 이미지"
/>
<span className="typo-head3 m-auto w-[77px] text-center text-white">
<span
title={userInfo.name}
className="typo-head3 m-auto w-[77px] truncate text-center text-white"
>
{userInfo.name}
</span>
</div>
Expand All @@ -156,7 +162,7 @@ const NavLinks = ({ isMobile }: { isMobile?: boolean }) => {

return (
<ul
className={`${!isMobile ? 'hidden items-center text-Cgray700 lg:flex' : 'text-Cgray400'}`}
className={`${!isMobile ? 'hidden items-center text-Cgray700 md:flex' : 'text-Cgray400'}`}
>
{navigation.map((item) => (
<li
Expand All @@ -182,7 +188,7 @@ const Header = ({ userInfo }: { userInfo: IUserInfo }) => {
<div>
{/* desktop */}
<header
className={`flex h-20 items-center bg-BG px-[24px] lg:bg-main ${!isOpen && 'bg-main'}`}
className={`flex h-20 items-center bg-BG px-[24px] md:bg-main ${!isOpen && 'bg-main'}`}
>
<div className="item-center mx-auto flex w-full max-w-[1340px] items-center justify-between">
<Link href="/" className="mr-[40px] flex-shrink-0">
Expand All @@ -191,7 +197,7 @@ const Header = ({ userInfo }: { userInfo: IUserInfo }) => {
<NavLinks />
{!isLogIn ? <BeforeLogin /> : <AfterLogin userInfo={userInfo} />}
<Menu
className="text-white lg:hidden"
className="text-white md:hidden"
onClick={() => setIsOpen((prev) => !prev)}
/>
</div>
Expand All @@ -201,7 +207,15 @@ const Header = ({ userInfo }: { userInfo: IUserInfo }) => {
<div
className={`fixed right-0 z-50 h-screen w-screen transform overflow-x-hidden bg-BG px-[24px] transition-transform duration-300 ease-in-out ${
isOpen ? 'translate-x-0' : 'translate-x-full'
} lg:hidden`}
} md:hidden`}
role="button"
tabIndex={0}
onClick={() => setIsOpen(false)}
onKeyDown={(e) => {
if (e.key === 'Enter' || e.key === ' ') {
setIsOpen(false);
}
}}
>
{!isLogIn ? (
<MobileBeforeLogin />
Expand Down
7 changes: 4 additions & 3 deletions src/components/ui/HorizonCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
import { getAccessToken } from '@/lib/serverActions';
import { getIconComponent } from '@/util/getIconDetail';
import { useQueryClient } from '@tanstack/react-query';
import { Heart } from 'lucide-react';
import { Heart, Map } from 'lucide-react';
import Image from 'next/image';
import { useParams, useRouter } from 'next/navigation';
import { useState } from 'react';
Expand Down Expand Up @@ -168,13 +168,14 @@ const HorizonCard = ({
onError={() => setThumbnail('/thumbnail.jpg')}
/>
</div>
<div className="flex min-w-0 flex-1 flex-col px-[10px] md:px-[30px] lg:px-[40px]">
<div className="flex min-w-0 flex-1 flex-col justify-center px-[10px] md:px-[30px] lg:px-[40px]">
<div className="type-button2 flex justify-between text-Cgray800 md:typo-head2 lg:typo-head2">
<span className="mr-4 max-w-[950px] overflow-hidden truncate text-ellipsis whitespace-nowrap">
{title}
</span>
</div>
<div className="md:typo-button typo-body2 mt-3 flex truncate text-Cgray500 lg:typo-button1">
<div className="md:typo-button typo-body2 mt-3 flex items-center gap-1 truncate text-Cgray500 lg:typo-button1">
<Map size={20} strokeWidth={1} />
<span className="max-w-[950px] overflow-hidden truncate text-ellipsis whitespace-nowrap">
{location}
</span>
Expand Down
6 changes: 4 additions & 2 deletions src/components/ui/VerticalCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
import { getAccessToken } from '@/lib/serverActions';
import { getIconComponent } from '@/util/getIconDetail';
import { useQueryClient } from '@tanstack/react-query';
import { Heart } from 'lucide-react';
import { Heart, Map } from 'lucide-react';
import Image from 'next/image';
import { useRouter } from 'next/navigation';
import { useState } from 'react';
Expand Down Expand Up @@ -167,7 +167,9 @@ const VerticalCard = ({
}
></Button>
</div>
<div className="mt-3 truncate text-Cgray500">
<div className="mt-3 flex items-center gap-1 truncate text-Cgray500">
<Map size={20} strokeWidth={1} />

<span className="max-w-[270px] overflow-hidden truncate text-ellipsis whitespace-nowrap">
{location}
</span>
Expand Down
1 change: 1 addition & 0 deletions src/service/api/meeting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ export interface MeetingDetail {
requireApproval: boolean;
isLike: boolean;
isMember: boolean;
meetingSkillArray: string[];
}

export interface MeetingManager {
Expand Down
5 changes: 3 additions & 2 deletions src/util/validation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@ export const emailValidation = {
export const passwordValidation = {
required: '비밀번호를 입력해주세요.',
minLength: {
value: 6,
value: 8,
message: '비밀번호는 최소 8자 이상이어야 합니다.',
},
pattern: {
value: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/,
value:
/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!@#$%^&*()_+~\-={}\[\]:;"'<>,.?/\\|]{8,}$/,
message: '비밀번호는 영어와 숫자 포함 8자 이상이어야 합니다.',
},
};
Expand Down
Loading