Skip to content

Commit

Permalink
refactor: 토스트 radix-ui적용
Browse files Browse the repository at this point in the history
  • Loading branch information
리니_이경린 committed Feb 21, 2025
1 parent 5463e51 commit 6c4bc64
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 11 deletions.
27 changes: 27 additions & 0 deletions src/components/ui/Toast/Toast.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,30 @@
opacity: 1;
transform: translateY(0);
}

.ToastRoot[data-state="open"] {
animation: slideUp 150ms cubic-bezier(0.16, 1, 0.3, 1);
}
.ToastRoot[data-state="closed"] {
animation: hide 100ms ease-in;
}

@keyframes hide {
from {
opacity: 1;
}
to {
opacity: 0;
}
}

@keyframes slideUp {
from {
transform: translateY(100%);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
30 changes: 21 additions & 9 deletions src/components/ui/Toast/Toast.tsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,32 @@
import { forwardRef } from "react";

import * as Toast from "@radix-ui/react-toast";
import classNames from "classnames";

import Text from "@/components/ui/Text/Text";
import styles from "@/components/ui/Toast/Toast.module.scss";

export interface ToastProps extends React.HTMLAttributes<HTMLDivElement> {
text: string;
isToast: boolean;
}

const Toast = forwardRef<HTMLDivElement, ToastProps>(({ text, className, ...props }, ref) => {
return (
<div ref={ref} className={classNames(styles.Toast, className)} {...props}>
<Text variant="bodyM">{text}</Text>
</div>
);
});
const ToastComponent = forwardRef<HTMLDivElement, ToastProps>(
({ text, isToast, className, ...props }, ref) => {
return (
<Toast.Provider swipeDirection="right">
<Toast.Root
ref={ref}

Check failure on line 18 in src/components/ui/Toast/Toast.tsx

View workflow job for this annotation

GitHub Actions / ci

Type 'ForwardedRef<HTMLDivElement>' is not assignable to type 'LegacyRef<HTMLLIElement> | undefined'.
className={styles.ToastRoot}
open={isToast}
>
<Toast.Title className={classNames(styles.Toast, className)} {...props}>
<Text variant="bodyM">{text}</Text>
</Toast.Title>
</Toast.Root>
<Toast.Viewport className={styles.ToastViewport} />
</Toast.Provider>
);
},
);

export default Toast;
export default ToastComponent;
3 changes: 1 addition & 2 deletions src/pages/ReviewResultPage/ReviewResultPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,8 @@ export default function ReviewResultPage() {
/>
</div>
</div>

<div className={styles.Bottom}>
{isToast && <Toast text="리뷰가 복사되었어요." />}
{<Toast text="리뷰가 복사되었어요." isToast={isToast}/>}
<div className={styles.ButtonBox}>
<Button text="다시생성" variant="secondary" onClick={handleRetryCreateReview} />
<Button text="홈으로 가기" onClick={handleOpen} />
Expand Down

0 comments on commit 6c4bc64

Please sign in to comment.