Skip to content

Commit

Permalink
Merge pull request #30 from tag-wonder/feat/result-card
Browse files Browse the repository at this point in the history
  • Loading branch information
saseungmin authored Dec 6, 2023
2 parents 2fc027b + ba7b2f9 commit be22207
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 27 deletions.
44 changes: 37 additions & 7 deletions src/app/result/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,48 @@ function ResultPage() {
<section className={styles.resultSection}>
<h2 className={clsx(fonts.samliphopangche, styles.subTitle)}>๊ฐ€์žฅ ๋งŽ์ด ์ ํ˜€์ง„ ํƒœ๊ทธ</h2>
<div className={styles.resultContentsWrapper}>
<ResultCard color="pink" />
<ResultCard color="brown" />
<ResultCard color="grey" />
<ResultCard
color="pink"
title="์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”"
voteCount={51}
voters={['์‚ฌ์Šน๋ฏผ', '์•ˆ์ก๊ตฐ', 'ํ•œ์ฑ„์˜', '์–ด์ฉŒ๊ณ ', '์ €์ฉŒ๊ณ ', '์–ด์ฉŒ๊ณ ์ €์ฉŒ๊ณ ', '๋ธ”๋ผ๋ธ”๋ผ']}
grade={1}
/>
<ResultCard
color="brown"
title="์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”"
voteCount={29}
voters={['์‚ฌ์Šน๋ฏผ', '์•ˆ์ก๊ตฐ', 'ํ•œ์ฑ„์˜', '์–ด์ฉŒ๊ณ ', '์ €์ฉŒ๊ณ ', '์–ด์ฉŒ๊ณ ์ €์ฉŒ๊ณ ', '๋ธ”๋ผ๋ธ”๋ผ']}
grade={2}
/>
<ResultCard
color="grey"
title="์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”"
voteCount={13}
voters={['์‚ฌ์Šน๋ฏผ', '์•ˆ์ก๊ตฐ', 'ํ•œ์ฑ„์˜', '์–ด์ฉŒ๊ณ ', '์ €์ฉŒ๊ณ ', '์–ด์ฉŒ๊ณ ์ €์ฉŒ๊ณ ', '๋ธ”๋ผ๋ธ”๋ผ']}
grade={3}
/>
</div>
</section>
<div className={styles.divider} />
<section className={styles.resultSection}>
<h2 className={clsx(fonts.samliphopangche, styles.subTitle)}>๊ฐ€์žฅ ๋งŽ์ด ์ ํ˜€์ง„ ํƒœ๊ทธ</h2>
<h2 className={clsx(fonts.samliphopangche, styles.subTitle)}>๋‚ด๊ฐ€ ๋ฐ›์€ ํƒœ๊ทธ ๋ชฉ๋ก</h2>
<div className={styles.resultContentsWrapper}>
<div>1๋“ฑ</div>
<div>2๋“ฑ</div>
<div>3๋“ฑ</div>
<ResultCard
title="์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”"
voteCount={4}
voters={['์‚ฌ์Šน๋ฏผ', '์•ˆ์ก๊ตฐ', 'ํ•œ์ฑ„์˜', '์–ด์ฉŒ๊ณ ', '์ €์ฉŒ๊ณ ', '์–ด์ฉŒ๊ณ ์ €์ฉŒ๊ณ ', '๋ธ”๋ผ๋ธ”๋ผ']}
/>
<ResultCard
title="์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”"
voteCount={3}
voters={['์‚ฌ์Šน๋ฏผ', '์•ˆ์ก๊ตฐ', 'ํ•œ์ฑ„์˜', '์–ด์ฉŒ๊ณ ', '์ €์ฉŒ๊ณ ', '์–ด์ฉŒ๊ณ ์ €์ฉŒ๊ณ ', '๋ธ”๋ผ๋ธ”๋ผ']}
/>
<ResultCard
title="์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”"
voteCount={2}
voters={['์‚ฌ์Šน๋ฏผ', '์•ˆ์ก๊ตฐ', 'ํ•œ์ฑ„์˜', '์–ด์ฉŒ๊ณ ', '์ €์ฉŒ๊ณ ', '์–ด์ฉŒ๊ณ ์ €์ฉŒ๊ณ ', '๋ธ”๋ผ๋ธ”๋ผ']}
/>
</div>
</section>
</main>
Expand Down
19 changes: 17 additions & 2 deletions src/components/common/ResultCard/index.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,21 @@
border-radius: 4px;
gap: 18px;
width: 100%;
padding: 12px 12px 36px 12px;
padding: 12px;
position: relative;

&.open {
padding: 12px 12px 36px 12px;
}

.cardTitleWrapper {
display: flex;
flex-direction: column;
gap: 12px;
border-bottom: 1px dashed color("grey/08");

&.open {
border-bottom: 1px dashed color("grey/08");
}

.titleDescription {
display: flex;
Expand All @@ -34,6 +41,14 @@
padding: 0px;
border: none;
background-color: transparent;

.arrowIcon {
transform: rotate(0);

&.open {
transform: rotate(180deg);
}
}
}
}

Expand Down
52 changes: 34 additions & 18 deletions src/components/common/ResultCard/index.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
'use client';

import { checkEmpty, checkNumber } from '@nf-team/core';
import { useBoolean } from '@nf-team/react';
import clsx from 'clsx';

import fonts from '@/app/fonts';
Expand All @@ -7,33 +11,45 @@ import { ColorType } from '@/lib/types/color';
import styles from './index.module.scss';

type Props = {
color: ColorType;
color?: ColorType;
grade?: number;
voteCount: number;
title: string;
voters: string[];
};

function ResultCard({ color }: Props) {
function ResultCard({
color, grade, voteCount, title, voters,
}: Props) {
const [isOpen, , , toggleOpen] = useBoolean(false);

return (
<div className={styles.resultCardWrapper}>
<div className={styles.cardTitleWrapper}>
<div className={styles.optionTitle}>
<div className={clsx(styles.gradBadge, styles[color])}>
<div className={clsx(fonts.samliphopangche, styles.grade)}>1๋“ฑ</div>
<div className={clsx(styles.resultCardWrapper, isOpen && styles.open)}>
<div className={clsx(styles.cardTitleWrapper, isOpen && styles.open)}>
{grade && (
<div className={styles.optionTitle}>
<div className={clsx(styles.gradBadge, color && styles[color])}>
<div className={clsx(fonts.samliphopangche, styles.grade)}>{`${checkNumber(grade)}๋“ฑ`}</div>
</div>
<div className={styles.space} />
<div className={clsx(fonts.samliphopangche, styles.voted)}>{`${checkNumber(voteCount)}๋ช… ์ ์Œ`}</div>
</div>
<div className={styles.space} />
<div className={clsx(fonts.samliphopangche, styles.voted)}>51๋ช… ์ ์Œ</div>
</div>
)}
<div className={styles.titleDescription}>
<div className={styles.title}>์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”์•ˆ๋…•ํ•˜์„ธ์š”</div>
<button className={styles.arrowButton} type="button">
<ArrowIcon />
<div className={styles.title}>{`${title}${grade ? '' : `(${checkNumber(voteCount)})`}`}</div>
<button className={styles.arrowButton} type="button" onClick={() => toggleOpen()}>
<ArrowIcon className={clsx(styles.arrowIcon, isOpen && styles.open)} />
</button>
</div>
</div>
<div className={clsx(fonts.samliphopangche, styles.resultCardContents)}>
<div className={styles.voterTitle}>ํƒœ๊ทธ ์ ์€ ์‚ฌ๋žŒ</div>
<div className={styles.voter}>
์‚ฌ์Šน๋ฏผ, ์•ˆ์ •๊ท , ํ•œ์ฑ„์˜,์–ด์ฉŒ๊ณ ,์ €์ฉŒ๊ณ ,์–ด์ฉŒ๊ณ ์ €์ฉŒ๊ณ ,๋ธ”๋ผ๋ธ”๋ผ,
{isOpen && (
<div className={clsx(fonts.samliphopangche, styles.resultCardContents)}>
<div className={styles.voterTitle}>ํƒœ๊ทธ ์ ์€ ์‚ฌ๋žŒ</div>
<div className={styles.voter}>
{checkEmpty(voters).join(', ')}
</div>
</div>
</div>
)}
</div>
);
}
Expand Down

0 comments on commit be22207

Please sign in to comment.