Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
2c00e9a
chore: typo / color system 업데이트
gonn-i Oct 9, 2025
dea55e1
feat: 업그레이드 - Next.js 13, React 18, styled-components 6, TypeScript 5 도입
gonn-i Oct 9, 2025
4b8f645
feat: header 디자인 수정 사항 반영
gonn-i Oct 9, 2025
994f36b
feat: footer 디자인 수정사항 반영
gonn-i Oct 9, 2025
5bee72b
chore: nav 폰트 동기화 및 활동 페이지 재네이밍
gonn-i Oct 9, 2025
44c3252
feat: 프로젝트 / 프로젝트 상세 디자인 수정사항 반영
gonn-i Oct 10, 2025
4f8cc61
feat: medium 페이지 구축
gonn-i Oct 10, 2025
6cea40a
feat: 홈 배너 / 연혁 section 디자인 수정사항 반영
gonn-i Oct 11, 2025
35d5536
faet: home 후원사 / 지원하기 section 수정사항 반영
gonn-i Oct 11, 2025
9fdac2a
feat: home 하이라이트 텍스트 section 수정사항 반영
gonn-i Oct 11, 2025
8d33c6f
chore: home titleSection color 수정 및 project- news section 문구 교체
gonn-i Oct 11, 2025
0fa7cb3
feat: home medium 부분 디자인 수정 사항 반영
gonn-i Oct 11, 2025
595385b
feat: news card props data format 동기화
gonn-i Oct 11, 2025
161ef4d
feat: 배너 27th 서커스 이미지 삽입 및 디자인 업데이트
gonn-i Oct 11, 2025
3371e5e
chore: project menu bubbleMenu 삭제
gonn-i Oct 11, 2025
a6ab0eb
chore: 26th lettie 프로젝트 소개 편집 반영
gonn-i Oct 11, 2025
f82dbef
feat: recuit d-day timer section 구현
gonn-i Oct 11, 2025
91e5c2a
chore: 26th dDay 코드 복원
gonn-i Oct 11, 2025
981bdd4
feat: recuit 지원하기 section 구현
gonn-i Oct 11, 2025
0730285
feat: recuit 자주묻는질문 section 반영
gonn-i Oct 12, 2025
1bf732c
feat: recuit 모집일정 section 구현
gonn-i Oct 12, 2025
d10e17d
feat: recuit session-overview 구현
gonn-i Oct 12, 2025
b359f11
feat: recuit 이런사람을 찾아요 section 구현
gonn-i Oct 12, 2025
2d54360
chore: recuit sectionTemplate 구조 수정
gonn-i Oct 12, 2025
851b6c9
feat: recuit 직군별 인재상 section 반영
gonn-i Oct 12, 2025
82fad26
fix: 불필요한 타입 삭제에 따른 dependency 제거
gonn-i Oct 13, 2025
f99fc12
refactor: button common type 변경사항 반영 및 코드 내부 동기화
gonn-i Oct 13, 2025
1bc2cd0
chore: header backdrop filter 적용
gonn-i Oct 13, 2025
e42c913
delete: 임시적으로 chromatic deploy workflow 삭제
gonn-i Oct 13, 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
17 changes: 0 additions & 17 deletions .github/workflows/storybook-chromatic-action.yml

This file was deleted.

File renamed without changes.
46 changes: 19 additions & 27 deletions components/common/AnimatedBox/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,21 @@ import { useSpring, animated } from '@react-spring/web';
import { Box } from 'components/common';
import styled from 'styled-components';
import media from 'styles/media';
import { PaletteKeyTypes } from 'styles/theme';

export interface AnimatedBoxProps {
children: ReactNode;
className?: string;
color: PaletteKeyTypes;
fontColor: PaletteKeyTypes;
}

function AnimatedBox({ children, className }: AnimatedBoxProps): ReactElement {
function AnimatedBox({
children,
className,
color,
fontColor,
}: AnimatedBoxProps): ReactElement {
const animatedDivRef = useRef(null);
const [isIntersect, setIsIntersect] = useState(false);

Expand Down Expand Up @@ -44,9 +52,8 @@ function AnimatedBox({ children, className }: AnimatedBoxProps): ReactElement {
<animated.div ref={animatedDivRef} style={styles}>
<StyledBox
className={className}
width={380}
height={268}
backgroundColor="white"
backgroundColor={color}
fontColor={fontColor}
borderRadius={20}
>
{children}
Expand All @@ -59,31 +66,16 @@ export default AnimatedBox;

const StyledBox = styled(Box)`
display: flex;
flex-direction: column;
justify-content: center;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding: 0;
filter: drop-shadow(
0px 5px 40px ${({ theme }) => theme.palette.grey_850 + '3'}
);

.title-text {
color: ${({ theme }) => theme.palette.grey_500};
${({ theme }) => theme.textStyle.web.Subtitle};
}
.content-text {
${({ theme }) => theme.textStyle.web.Head}
}
padding: 20px 24px;
width: auto;
background-color: ${({ theme, backgroundColor }) =>
backgroundColor && theme.palette[backgroundColor]};
color: ${({ theme, fontColor }) => fontColor && theme.palette[fontColor]};

${media.mobile} {
width: 335px;
height: 220px;

.title-text {
${({ theme }) => theme.textStyle.mobile.Subtitle}
}
.content-text {
${({ theme }) => theme.textStyle.mobile.Head}
}
width: auto;
}
`;
26 changes: 3 additions & 23 deletions components/common/AnimatedButton/index.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,49 +31,29 @@ const Template: Story<AnimatedButtonProps> = (args) => (
export const PrimaryAnimatedButton = Template.bind({});

PrimaryAnimatedButton.args = {
width: 190,
height: 65,
fontColor: 'white',
buttonColor: 'orange_400',
className: 'recruitButton',
buttonText: '21기에서 만나요!',
};

export const SecondaryAnimatedButton = Template.bind({});

SecondaryAnimatedButton.args = {
width: 190,
height: 65,
fontColor: 'black',
buttonColor: 'grey_850',
borderColor: 'lightGrey',
className: 'recruitButton',
buttonText: '21기에서 만나요!',
variant: 'secondary',
variant: 'black',
};

export const DisabledAnimatedButton = Template.bind({});

DisabledAnimatedButton.args = {
width: 190,
height: 65,
fontColor: 'black',
buttonColor: 'grey_850',
borderColor: 'lightGrey',
className: 'recruitButton',
buttonText: '21기에서 만나요!',
variant: 'secondary',
variant: 'primary',
disabled: true,
};

export const SmallSizeAnimatedButton = Template.bind({});

SmallSizeAnimatedButton.args = {
width: 120,
height: 50,
fontColor: 'black',
buttonColor: 'grey_850',
borderColor: 'lightGrey',
className: 'recruitButton',
variant: 'primary',
buttonText: '지원하기',
};
10 changes: 3 additions & 7 deletions components/common/AnimatedButton/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,22 @@ import media from 'styles/media';
import { slideIn, slideOut } from 'styles/utils-styles';
import Button, { ButtonProps } from '../Button';

export type AnimatedButtonVariant = 'primary' | 'secondary';
export type AnimatedButtonVariant = 'primary' | 'black';

export interface AnimatedButtonProps extends ButtonProps {
width: number;
height: number;
buttonText: string;
href?: string;
variant?: AnimatedButtonVariant;
variant: AnimatedButtonVariant;
}

function AnimatedButton({
width,
height,
buttonText,
href,
variant = 'primary',
...rest
}: AnimatedButtonProps) {
return (
<ButtonStyled width={width} height={height} variant={variant} {...rest}>
<ButtonStyled variant={variant} {...rest}>
{/* <svg
width={`${width + 2}px`}
height={`${height}px`}
Expand Down
24 changes: 14 additions & 10 deletions components/common/Badge/index.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import type { ReactElement, ReactNode } from 'react';
import styled from 'styled-components';
import media from 'styles/media';
import { PaletteKeyTypes } from 'styles/theme';
import { PaletteKeyTypes, TextStyleV2Types } from 'styles/theme';

interface IBadgeStyle {
backgroundColor?: PaletteKeyTypes;
typoColor?: PaletteKeyTypes;
}

interface BadgeProps extends IBadgeStyle {
Expand All @@ -16,10 +17,15 @@ function Badge({
className,
children,
backgroundColor = 'grey_100',
typoColor = 'black_60',
}: BadgeProps): ReactElement {
return (
<StyledBadge className={className} backgroundColor={backgroundColor}>
{children}기
<StyledBadge
className={className}
backgroundColor={backgroundColor}
typoColor={typoColor}
>
{children}
</StyledBadge>
);
}
Expand All @@ -28,16 +34,14 @@ const StyledBadge = styled.div<IBadgeStyle>`
display: flex;
justify-content: center;
align-items: center;
width: 59px;
height: 37px;
border-radius: 20px;
color: ${({ theme }) => theme.palette.grey_1000};
padding: 2px 8px;
border-radius: 4px;
background-color: ${({ theme, backgroundColor }) =>
backgroundColor && theme.palette[backgroundColor]};

${({ theme }) => theme.textStyle.web.Body_1};
color: ${({ theme, typoColor }) => typoColor && theme.palette[typoColor]};
${({ theme }) => theme.textStyleV2.resp.caption_md};
${media.mobile} {
${({ theme }) => theme.textStyle.mobile.Body_1};
${({ theme }) => theme.textStyleV2.resp.caption_sm};
}
`;

Expand Down
66 changes: 66 additions & 0 deletions components/common/Banner/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import React, { ReactElement } from 'react';
import styled from 'styled-components';
import media from 'styles/media';

interface BannerProps {
backgroundImg?: string;
className?: string;
title?: string;
description?: string;
}

function Banner({
className,
backgroundImg = '/assets/images/27th/banner_project_story.png',
title,
description,
}: BannerProps): ReactElement {
return (
<StyledBox backgroundImg={backgroundImg} className={className}>
<StyledTitle>{title}</StyledTitle>
<StyledDescription>{description}</StyledDescription>
</StyledBox>
);
}

const StyledBox = styled.div<BannerProps>`
background-repeat: no-repeat;
background-size: cover;
background-image: url(${({ backgroundImg }) => backgroundImg});
background-color: ${({ theme, backgroundImg }) =>
!backgroundImg && theme.palette.grey_800};
padding: 146px 0 93px 0;
width: 100%;
display: flex;
flex-direction: column;
justify-content: center;
gap: 8px;
`;

const StyledTitle = styled.h1`
color: ${({ theme }) => theme.palette.white_100};
${({ theme }) => theme.textStyleV2.resp.title1_md};
margin: 0 80px;
white-space: nowrap;

${media.mobile} {
${({ theme }) => theme.textStyleV2.resp.title1_sm};
white-space: pre-line;
margin: 0 24px;
}
`;

const StyledDescription = styled.p`
color: ${({ theme }) => theme.palette.white_50};
${({ theme }) => theme.textStyleV2.resp.subtitle_md};
margin: 0 80px;
white-space: nowrap;

${media.mobile} {
${({ theme }) => theme.textStyleV2.resp.subtitle_sm};
white-space: pre-line;
margin: 0 24px;
}
`;

export default Banner;
3 changes: 3 additions & 0 deletions components/common/Box/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import theme, { PaletteKeyTypes } from 'styles/theme';

interface IBoxStyle {
backgroundColor?: PaletteKeyTypes;
fontColor?: PaletteKeyTypes;
width?: number;
height?: number;
borderRadius?: number;
Expand All @@ -22,6 +23,7 @@ function Box({
height,
backgroundColor = 'grey',
borderRadius = 20,
fontColor = 'black',
...rest
}: BoxProps): ReactElement {
return (
Expand All @@ -44,6 +46,7 @@ const StyledBox = styled.div<IBoxStyle>`
border-radius: ${({ borderRadius }) => borderRadius}px;
background-color: ${({ backgroundColor }) =>
backgroundColor && theme.palette[backgroundColor]};
color: ${({ fontColor }) => fontColor && theme.palette[fontColor]};
`;

export default Box;
74 changes: 0 additions & 74 deletions components/common/BubbleMenu/index.tsx

This file was deleted.

Loading
Loading