Skip to content

Commit fd55788

Browse files
authored
Merge branch 'dev' into feat/#17/get-is-login
2 parents d38c858 + 01ad4b1 commit fd55788

File tree

6 files changed

+132
-1
lines changed

6 files changed

+132
-1
lines changed

โ€Žsrc/assets/icons/Arrow.tsxโ€Ž

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
const Arrow = () => {
2+
return (
3+
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="13" viewBox="0 0 12 13" fill="none">
4+
<path
5+
d="M10.0152 4.24986C9.89675 4.13147 9.73615 4.06496 9.5687 4.06496C9.40125 4.06496 9.24065 4.13147 9.12222 4.24986L5.99626 7.37582L2.8703 4.24986C2.75119 4.13482 2.59167 4.07117 2.42609 4.07261C2.26051 4.07405 2.10212 4.14046 1.98504 4.25755C1.86795 4.37464 1.80154 4.53303 1.8001 4.69861C1.79866 4.86419 1.86231 5.02371 1.97734 5.14281L5.54978 8.71525C5.66821 8.83364 5.82881 8.90015 5.99626 8.90015C6.16371 8.90015 6.32431 8.83364 6.44274 8.71525L10.0152 5.14281C10.1336 5.02438 10.2001 4.86379 10.2001 4.69633C10.2001 4.52888 10.1336 4.36828 10.0152 4.24986Z"
6+
fill="currentColor"
7+
/>
8+
</svg>
9+
);
10+
};
11+
export default Arrow;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import type { PropsWithChildren } from 'react';
2+
import * as s from './style.css';
3+
4+
interface Props extends PropsWithChildren {
5+
color?: 'gray' | 'main';
6+
onClick?: () => void;
7+
}
8+
const Chip = ({ children, color = 'gray', onClick }: Props) => {
9+
return (
10+
<div className={s.Container({ color })} onClick={onClick}>
11+
{children}
12+
</div>
13+
);
14+
};
15+
export default Chip;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { cva } from '@styled-system/css';
2+
3+
export const Container = cva({
4+
base: {
5+
padding: '0.5rem 0.75rem',
6+
display: 'flex',
7+
alignItems: 'center',
8+
justifyContent: 'center',
9+
gap: '0.25rem',
10+
rounded: 'full',
11+
width: 'fit-content',
12+
fontSize: '0.875rem',
13+
fontWeight: 400,
14+
cursor: 'pointer',
15+
},
16+
variants: {
17+
color: {
18+
main: {
19+
backgroundColor: 'main-26',
20+
border: '1px solid',
21+
borderColor: 'main-54',
22+
color: '100',
23+
},
24+
gray: {
25+
backgroundColor: 'systemGray5',
26+
color: '80',
27+
},
28+
},
29+
},
30+
});
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import type { PropsWithChildren } from 'react';
2+
3+
import * as s from './style.css';
4+
import Arrow from '@/assets/icons/Arrow';
5+
6+
interface Props extends PropsWithChildren {
7+
active: boolean;
8+
onClick?: () => void;
9+
}
10+
11+
const SelectButton = ({ children, active, onClick }: Props) => {
12+
// TODO: ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐ”๋€Œ๊ฒŒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€
13+
return (
14+
<button className={s.Container({ color: active ? 'main' : 'gray' })} onClick={onClick}>
15+
{children}
16+
<div className={s.Icon({ direction: active ? 'up' : 'down' })}>
17+
<Arrow />
18+
</div>
19+
</button>
20+
);
21+
};
22+
export default SelectButton;
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { cva } from '@styled-system/css';
2+
3+
export const Container = cva({
4+
base: {
5+
borderRadius: 'full',
6+
padding: '0.375rem 0.375rem 0.375rem 0.625rem',
7+
display: 'flex',
8+
alignItems: 'center',
9+
justifyContent: 'center',
10+
gap: '0.25rem',
11+
fontSize: '0.75rem',
12+
fontWeight: 500,
13+
cursor: 'pointer',
14+
color: '100',
15+
},
16+
variants: {
17+
color: {
18+
main: {
19+
border: '1px solid',
20+
borderColor: 'main-54',
21+
bgColor: 'main-26',
22+
},
23+
gray: {
24+
bgColor: 'systemGray5',
25+
},
26+
},
27+
},
28+
});
29+
30+
export const Icon = cva({
31+
base: {
32+
color: '54',
33+
},
34+
variants: {
35+
direction: {
36+
up: {
37+
transform: 'rotate(180deg)',
38+
},
39+
down: {
40+
transform: 'rotate(0deg)',
41+
},
42+
},
43+
},
44+
});

โ€Žsrc/pages/HomePage/index.tsxโ€Ž

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
1-
import { useFlow } from '@/libs/routes/stack';
1+
import { useState } from 'react';
22
import type { ActivityComponentType } from '@stackflow/react';
3+
import { useFlow } from '@/libs/routes/stack';
34

45
// CSS ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
56
import * as s from './style.css';
67

78
import AppScreenWithSafeArea from '@/common/components/AppScreenWithSafeArea';
9+
import Chip from '@/common/components/Chip';
10+
import SelectButton from '@/common/components/SelectButton';
811
import TestAPIButton from '@/common/components/TestAPIButton';
912
import useGetIsLogin from '@/common/hooks/apis/useGetIsLogin';
1013

1114
const HomePage: ActivityComponentType = () => {
1215
const { push } = useFlow();
1316
const { data: isLogin } = useGetIsLogin();
17+
const [active, setActive] = useState(false);
18+
1419
return (
1520
<AppScreenWithSafeArea>
1621
<div className={s.Wrapper}>
@@ -26,6 +31,10 @@ const HomePage: ActivityComponentType = () => {
2631
)}
2732
<button onClick={() => push('PostPage', {})}>์ด๋™</button>
2833
</div>
34+
<Chip color="main">์ถ•๊ตฌ</Chip>
35+
<SelectButton active={active} onClick={() => setActive(!active)}>
36+
์ข…๋ชฉ
37+
</SelectButton>
2938
</AppScreenWithSafeArea>
3039
);
3140
};

0 commit comments

Comments
ย (0)