diff --git a/public/images/main/coin-drop.png b/public/images/main/coin-drop.png new file mode 100644 index 00000000..77914736 Binary files /dev/null and b/public/images/main/coin-drop.png differ diff --git a/src/components/RecruitEntrance/RecruitEntrance.stories.tsx b/src/components/RecruitEntrance/RecruitEntrance.stories.tsx new file mode 100644 index 00000000..e2744b94 --- /dev/null +++ b/src/components/RecruitEntrance/RecruitEntrance.stories.tsx @@ -0,0 +1,21 @@ +import type { Meta, StoryObj } from '@storybook/react'; + +import { RecruitEntrance } from './index'; + +const meta: Meta = { + title: 'components/RecruitEntrance', + component: RecruitEntrance, + args: {}, +}; + +export default meta; + +type Story = StoryObj; + +export const Primary: Story = { + render: () => ( +
+ +
+ ), +}; diff --git a/src/components/RecruitEntrance/RecruitEntrance.tsx b/src/components/RecruitEntrance/RecruitEntrance.tsx new file mode 100644 index 00000000..906ca457 --- /dev/null +++ b/src/components/RecruitEntrance/RecruitEntrance.tsx @@ -0,0 +1,103 @@ +import Image from 'next/image'; +import { css, Theme } from '@emotion/react'; + +import { Button } from '~/components/Button'; +import { commonLayoutCss } from '~/styles/layout'; +import { mediaQuery } from '~/styles/media'; + +export function RecruitEntrance() { + return ( +
+
+ passport combination +
+
+

14기 모집 안내

+
+

지원 자격부터 모집 직무까지

+

상세 내용을 한 번에 확인해보세요

+
+ +
+
+ ); +} + +const imageContainerCss = css` + padding: 24px; + ${mediaQuery('tablet')} { + width: 346px; + padding: 0; + margin-left: 53px; + img { + position: relative; + left: -53px; + } + } + + ${mediaQuery('mobile')} { + width: 124px; + margin-left: 0; + img { + width: auto; + height: 170px; + left: -16px; + } + } +`; + +const infoContainerCss = (theme: Theme) => css` + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + gap: 24px; + text-align: left; + padding-right: 80px; + + h1 { + ${theme.typos.pretendard.subTitle1}; + color: ${theme.colors.white}; + } + p { + ${theme.typos.pretendard.subTitle2}; + color: ${theme.colors.gray100}; + } + + ${mediaQuery('tablet')} { + padding-right: 0; + } + + ${mediaQuery('mobile')} { + gap: 8px; + + h1 { + ${theme.typos.pretendard.subTitle2}; + } + + p { + font-size: 14px; + } + button { + margin-top: 16px; + } + } +`; + +const layoutCss = css` + display: flex; + gap: 80px; + + ${mediaQuery('tablet')} { + gap: 7px; + } + + ${mediaQuery('mobile')} { + gap: 16px; + } +`; diff --git a/src/components/RecruitEntrance/index.tsx b/src/components/RecruitEntrance/index.tsx new file mode 100644 index 00000000..71abcb28 --- /dev/null +++ b/src/components/RecruitEntrance/index.tsx @@ -0,0 +1 @@ +export { RecruitEntrance } from './RecruitEntrance'; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index ed06ce9d..782a08d5 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,8 +1,10 @@ import { css, Theme } from '@emotion/react'; import { Journey } from '~/components/Journey'; +import { RecruitEntrance } from '~/components/RecruitEntrance'; import { SEO } from '~/components/SEO'; import { TimerContainer } from '~/components/TimerContainer'; +import { mediaQuery } from '~/styles/media'; export default function Root() { return ( @@ -12,6 +14,7 @@ export default function Root() {
+
@@ -23,7 +26,13 @@ const layoutCss = (theme: Theme) => css` `; const contentCss = css` - & > * { + & > section { margin-bottom: 200px; } + + ${mediaQuery('mobile')} { + & > section { + margin-bottom: 120px; + } + } `;