Skip to content

Commit bae6887

Browse files
author
리니_이경린
committed
refactor: 토스트 radix-ui적용
1 parent 5463e51 commit bae6887

File tree

3 files changed

+48
-11
lines changed

3 files changed

+48
-11
lines changed

src/components/ui/Toast/Toast.module.scss

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,30 @@
3636
opacity: 1;
3737
transform: translateY(0);
3838
}
39+
40+
.ToastRoot[data-state="open"] {
41+
animation: slideUp 150ms cubic-bezier(0.16, 1, 0.3, 1);
42+
}
43+
.ToastRoot[data-state="closed"] {
44+
animation: hide 100ms ease-in;
45+
}
46+
47+
@keyframes hide {
48+
from {
49+
opacity: 1;
50+
}
51+
to {
52+
opacity: 0;
53+
}
54+
}
55+
56+
@keyframes slideUp {
57+
from {
58+
transform: translateY(100%);
59+
opacity: 0;
60+
}
61+
to {
62+
transform: translateY(0);
63+
opacity: 1;
64+
}
65+
}

src/components/ui/Toast/Toast.tsx

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { forwardRef } from "react";
2-
2+
import * as Toast from "@radix-ui/react-toast";
33
import classNames from "classnames";
44

55
import Text from "@/components/ui/Text/Text";
@@ -9,12 +9,23 @@ export interface ToastProps extends React.HTMLAttributes<HTMLDivElement> {
99
text: string;
1010
}
1111

12-
const Toast = forwardRef<HTMLDivElement, ToastProps>(({ text, className, ...props }, ref) => {
13-
return (
14-
<div ref={ref} className={classNames(styles.Toast, className)} {...props}>
15-
<Text variant="bodyM">{text}</Text>
16-
</div>
17-
);
18-
});
12+
const ToastComponent = forwardRef<HTMLDivElement, ToastProps>(
13+
({ text, isToast, className, ...props }, ref) => {
14+
return (
15+
<Toast.Provider swipeDirection="right">
16+
<Toast.Root
17+
ref={ref}
18+
className={styles.ToastRoot}
19+
open={isToast}
20+
>
21+
<Toast.Title className={classNames(styles.Toast, className)} {...props}>
22+
<Text variant="bodyM">{text}</Text>
23+
</Toast.Title>
24+
</Toast.Root>
25+
<Toast.Viewport className={styles.ToastViewport} />
26+
</Toast.Provider>
27+
);
28+
},
29+
);
1930

20-
export default Toast;
31+
export default ToastComponent;

src/pages/ReviewResultPage/ReviewResultPage.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,8 @@ export default function ReviewResultPage() {
9595
/>
9696
</div>
9797
</div>
98-
9998
<div className={styles.Bottom}>
100-
{isToast && <Toast text="리뷰가 복사되었어요." />}
99+
{<Toast text="리뷰가 복사되었어요." isToast={isToast}/>}
101100
<div className={styles.ButtonBox}>
102101
<Button text="다시생성" variant="secondary" onClick={handleRetryCreateReview} />
103102
<Button text="홈으로 가기" onClick={handleOpen} />

0 commit comments

Comments
 (0)