Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(land): 새로운 렌딩페이지 레이아웃 적용 #259

Merged
merged 70 commits into from
Feb 17, 2025
Merged
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
28834db
chore(land): upgrade Next.js version from 14 to 15
Jeong-Ag Nov 12, 2024
6a03005
chore(land): set font and directory
Jeong-Ag Nov 13, 2024
8742239
feat(land): set layout with navbar and footer
Jeong-Ag Nov 13, 2024
4494db8
refactor(land): change directory structure
Jeong-Ag Nov 19, 2024
f9aa35f
feat(land): create sidebar and add icon package
Jeong-Ag Nov 23, 2024
2000166
style(land): add font and update font directory structure
Jeong-Ag Nov 23, 2024
38f8210
feat(land): create text slider component
Jeong-Ag Nov 23, 2024
940d670
feat(land): create home page first section
Jeong-Ag Nov 23, 2024
8802018
fix(land): change page export
Jeong-Ag Nov 23, 2024
18977b0
refactor(land): use function declaration and change tag
Jeong-Ag Nov 24, 2024
49bd4c9
refactor(land): remove 'use client' and replace button with next/link
Jeong-Ag Nov 24, 2024
f6b8a3c
refactor(land): update nav and sidebar to client-side rendering
Jeong-Ag Nov 24, 2024
aed5c79
refactor(land): replace <a> tag with Next.js <Link> components
Jeong-Ag Nov 24, 2024
0bb7e93
chore(land): add font file
Jeong-Ag Nov 28, 2024
39ea95a
refactor(land): use Section component for layout separation
Jeong-Ag Nov 28, 2024
8d8dbda
feat(land): create home page second Section
Jeong-Ag Nov 28, 2024
e670ca7
feat(land): create home page third section without animation
Jeong-Ag Nov 29, 2024
a39ba7c
chore(land): delete misplaced font file
Jeong-Ag Nov 30, 2024
9713ed7
feat(land): create home page fourth section
Jeong-Ag Dec 1, 2024
5101905
refactor(land): add dynamic class selection
Jeong-Ag Dec 1, 2024
b152ce1
feat(land): create home fifth section
Jeong-Ag Dec 13, 2024
9de2de6
feat(land): create last section, add support detail
Jeong-Ag Dec 14, 2024
1803ce4
style(land): hidden horizontal scroll
Jeong-Ag Dec 14, 2024
545af81
style(land): apply word break keep, adjust layout
Jeong-Ag Dec 14, 2024
94debbf
feat(land): change value section responsive view
Jeong-Ag Dec 15, 2024
e6eb9e8
style(land): add scroll and flip animations to value section
Jeong-Ag Dec 15, 2024
9408913
refactor(land): change sidebar position from right to top, add dark b…
Jeong-Ag Dec 15, 2024
eeeae67
style(land): set background image on last section
Jeong-Ag Dec 15, 2024
3dbced9
Merge branch 'main' into feature/181
Jeong-Ag Dec 15, 2024
54eebe5
chore(land): add eslint dependencies
Jeong-Ag Dec 15, 2024
9582f5a
fix(land): change code formate
Jeong-Ag Dec 15, 2024
29c37d4
refactor(land): apply tailwind css @layers
Jeong-Ag Dec 19, 2024
c650eb7
refactor(land): home page code splitting
Jeong-Ag Dec 19, 2024
e5b3310
feat(land): create review section
Jeong-Ag Dec 24, 2024
07334a1
feat(land): create part section
Jeong-Ag Dec 24, 2024
0ec01ae
refactor(land, member): minor code improvements
Jeong-Ag Dec 24, 2024
520dc5e
style(land): enhance layout and styling
Jeong-Ag Dec 25, 2024
b28ad83
refactor(land): replace URL with const, add code to remove warning
Jeong-Ag Jan 4, 2025
9b18e41
feat(member): add home data
Jeong-Ag Jan 6, 2025
7fcc630
chore(land): add `dayjs`, set custom color
Jeong-Ag Jan 7, 2025
dfb8c7b
feat(land): create apply process
Jeong-Ag Jan 7, 2025
acbc77e
feat(land): create recruitment notice table view
Jeong-Ag Jan 7, 2025
086dc77
feat(land): recruitment API integration
Jeong-Ag Jan 7, 2025
afa9047
feat(land): create FAQ view
Jeong-Ag Jan 7, 2025
e1170c6
feat(land): create now apply view
Jeong-Ag Jan 7, 2025
5ba650b
refactor(land): change apply path name
Jeong-Ag Jan 7, 2025
3489f39
feat(land): create apply form
Jeong-Ag Jan 9, 2025
5cfa8a4
feat(land): create error, not-found page
Jeong-Ag Jan 10, 2025
d9e6e3d
refactor(land): change recruitment type
Jeong-Ag Jan 11, 2025
12b1f04
refactor(land): change text on error page
Jeong-Ag Jan 13, 2025
9758a13
feat(land): create application detail page
Jeong-Ag Jan 13, 2025
f18ce7c
feat(land): create application result check page
Jeong-Ag Jan 15, 2025
e069d88
chore(land): add `react-toastify`
Jeong-Ag Jan 16, 2025
f7fa666
feat(land): apply toast to the layout
Jeong-Ag Jan 16, 2025
183f548
feat(land): create application form
Jeong-Ag Jan 16, 2025
0d2cd9c
feat(land): put FAQSection data
Jeong-Ag Jan 17, 2025
79a9e99
chore(land): set up access to the image on the server
Jeong-Ag Jan 18, 2025
6929027
feat(land): create ask page
Jeong-Ag Jan 18, 2025
3a22b2c
refactor(land): change review card design with image
Jeong-Ag Jan 20, 2025
85e0cd6
feat(land): add ChannelTalk
Jeong-Ag Jan 20, 2025
26b6478
refactor(land): add string utils and change interface with using extends
Jeong-Ag Jan 20, 2025
104cba7
style(land): adjust layout and change component color
Jeong-Ag Jan 21, 2025
f8c8ced
refactor(land): check recruitment status and display appropriate mess…
Jeong-Ag Jan 21, 2025
087cd7d
feat(land): create apply check section
Jeong-Ag Jan 21, 2025
aecb89b
refactor(land): use type and constant to improve application form
Jeong-Ag Jan 21, 2025
47ee72a
feat(land): add picture, replaced `ActivityCard` components with `Act…
Jeong-Ag Jan 21, 2025
29441b3
refactor(land): change responsive layout, delete `scroll={false}` in …
Jeong-Ag Jan 21, 2025
f779a55
Merge branch 'main' into feature/181
gwansikk Feb 17, 2025
c6ff3ff
chore: update
gwansikk Feb 17, 2025
5ce8787
fix: 버튼 색상
gwansikk Feb 17, 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
12 changes: 9 additions & 3 deletions apps/land/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
},
"dependencies": {
"@clab-platforms/design-system": "workspace:*",
"@clab-platforms/utils": "workspace:*",
"@clab-platforms/icon": "workspace:*",
"@clab-platforms/utils": "workspace:*",
"@tanstack/react-query": "^5.59.20",
"next": "15.0.0-rc.1",
"react": "19.0.0-rc-ed15d500-20241110",
Expand All @@ -22,9 +22,15 @@
"@types/node": "^20",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"@typescript-eslint/eslint-plugin": "^6.18.1",
"@typescript-eslint/parser": "^6.18.1",
"autoprefixer": "^10.0.1",
"eslint": "^8",
"eslint-config-next": "15.0.0-rc.1",
"eslint": "^8.57.0",
"eslint-config-next": "14.1.4",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-tailwindcss": "^3.15.1",
"postcss": "^8",
"tailwindcss": "^3.3.0",
"typescript": "^5"
Expand Down
Binary file added apps/land/public/clab_picture.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/land/public/fonts/NanumSquareB.ttf
Binary file not shown.
Binary file added apps/land/public/fonts/NanumSquareR.ttf
Binary file not shown.
2 changes: 1 addition & 1 deletion apps/land/src/app/PageLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export default function Page({
return (
<>
{nav && <Nav />}
<div className={cn('m-auto pt-12', className)}>{children}</div>
<div className={cn('m-auto pt-6', className)}>{children}</div>
{footer && <Footer />}
</>
);
Expand Down
4 changes: 2 additions & 2 deletions apps/land/src/app/fonts.css
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
@font-face {
font-family: 'NanumSquare';
src: url('/font/NanumSquareR.ttf') format('truetype');
src: url('/fonts/NanumSquareR.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}

@font-face {
font-family: 'NanumSquare';
src: url('/font/NanumSquareB.ttf') format('truetype');
src: url('/fonts/NanumSquareB.ttf') format('truetype');
font-weight: bold;
font-style: normal;
}
Expand Down
77 changes: 77 additions & 0 deletions apps/land/src/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
rgb(var(--background-end-rgb))
)
rgb(var(--background-start-rgb));
overflow-x: hidden;
}

@media (min-width: 768px) {
Expand Down Expand Up @@ -79,3 +80,79 @@
transform: translateX(var(--slide-end-offset, 0%));
}
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

프로젝트에서 tailwindcss를 쓰고 있는데 따로 tailwind 속성 사용 대신 이런식으로 정의하신 이유가 있을까요?
tailwind의 @layers 키워드를 통해서 사용해보시는건 어떨까 싶어요

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앗 layers를 사용해서 묶을 수 있겠네요! 수정하도록 할게요 감사합니다 😃

.scroll-fade-info {
opacity: 0;
transform: translateY(100px);
transition:
opacity 1s ease-out,
transform 1s ease-out;
}

.scroll-fade-info.visible {
opacity: 1;
transform: translateY(0);
}

.scroll-fade-activity {
opacity: 0;
transform: translateY(100px);
transition:
opacity 1s ease-out,
transform 1s ease-out;
}

.scroll-fade-activity.visible {
opacity: 1;
transform: translateY(0);
}

.flip-container {
perspective: 1000px;
overflow: hidden;
border-radius: 9999px;
width: 18rem;
height: 18rem;
text-align: center;
display: flex;
flex-direction: column;
white-space: pre-wrap;
box-shadow: 0 0 20px 1px #5874ff;
}

.flip {
position: relative;
width: 100%;
height: 100%;
transform-style: preserve-3d;
transform: rotateY(0deg);
transition: transform 0.5s;
border-radius: 9999px;
display: flex;
}

.front,
.back {
width: 100%;
height: 100%;
position: absolute;
backface-visibility: hidden;
display: flex;
align-items: center;
justify-content: center;
border-radius: 9999px;
}

.front {
background: none;
}

.back {
background: #5874ff;
transform: rotateY(180deg);
}

.flip-container:hover .flip {
transform: rotateY(-180deg);
}

30 changes: 30 additions & 0 deletions apps/land/src/app/home/components/ActivityCard.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { cn } from '@clab-platforms/utils';

import Image from 'next/image';

interface ActivityCardProps {
title: string;
image: string;
className?: string;
}

export default function ActivityCard({
title,
image,
className,
}: ActivityCardProps) {
return (
<div
className={cn('lg:max-w-1/3 w-full space-y-2 overflow-hidden', className)}
>
<p className="text-3xl font-bold">{title}</p>
<Image
className="rounded-md object-cover"
width={560}
height={420}
src={image}
alt={title}
/>
</div>
);
}
27 changes: 27 additions & 0 deletions apps/land/src/app/home/components/ValueCircle.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { cn } from '@clab-platforms/utils';

interface ValueCircleProps {
keyword: string;
description: string;
className?: string;
}

export default function ValueCircle({
keyword,
description,
className,
}: ValueCircleProps) {
return (
<div className={cn('flip-container', className)}>
<div className="flip">
<p className="text-clab-light-blue front text-3xl font-bold">
{keyword}
</p>
<p className="back flex flex-col p-6 text-xl">
<span className="mb-4 text-3xl font-extrabold">{keyword}</span>
{description}
</p>
</div>
</div>
);
}
2 changes: 2 additions & 0 deletions apps/land/src/app/home/components/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
export { default as TextSlider } from './TextSlider';
export { default as ValueCircle } from './ValueCircle';
export { default as ActivityCard } from './ActivityCard';
1 change: 1 addition & 0 deletions apps/land/src/app/home/hooks/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default as useScrollAnimation } from './useScrollAnimation';
30 changes: 30 additions & 0 deletions apps/land/src/app/home/hooks/useScrollAnimation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { useEffect, useState } from 'react';

export default function useScrollAnimation(targetClass: string) {
const [isVisible, setIsVisible] = useState(false);

useEffect(() => {
const handleScroll = () => {
const element = document.querySelector(`.${targetClass}`);
if (!element) return; // 요소가 없으면 반환
const direction = element.getBoundingClientRect();
const isInScreen =
direction.top < window.innerHeight - 300 && direction.bottom >= 0;

if (isInScreen) {
setIsVisible(true);
} else {
setIsVisible(false);
}
};

window.addEventListener('scroll', handleScroll);
handleScroll();

return () => {
window.removeEventListener('scroll', handleScroll);
};
}, [targetClass]);

return isVisible;
}
Loading
Loading