Skip to content

Commit 186e9f8

Browse files
authored
Merge pull request #125 from YAPP-Github/bug/PRODUCT-230
bug: 1차 스프린트 이후 QA 반영 (#124)
2 parents 5ce578b + a86ed12 commit 186e9f8

File tree

18 files changed

+158
-102
lines changed

18 files changed

+158
-102
lines changed

src/app/(auth)/login/_styles/Login.css.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@ export const backgroundWrapper = style({
1212
position: "relative",
1313
width: "100%",
1414
height: "100%",
15-
backgroundImage: "url(\"/images/login-background.webp\")",
16-
backgroundSize: "cover",
17-
backgroundRepeat: "no-repeat",
18-
backgroundPosition: "center",
1915
display: "flex",
2016
flexDirection: "column",
2117
justifyContent: "space-between",
@@ -27,6 +23,7 @@ export const textButton = style({
2723
});
2824

2925
export const logoWrapper = style({
26+
position: "relative",
3027
width: "100%",
3128
height: "100%",
3229
display: "flex",

src/app/(auth)/login/page.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ export default function LoginPage() {
2222
return (
2323
<main className={styles.wrapper}>
2424
<div className={styles.backgroundWrapper}>
25+
<Image
26+
src='/images/login-background.png'
27+
alt='로그인 배경화면'
28+
fill
29+
priority
30+
/>
31+
2532
<GNB
2633
align='left'
2734
background='transparent'

src/app/(home)/_components/ServiceIntroBottomSheet/ServiceIntroBottomSheet.css.ts

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,10 @@ export const content = style({
66
height: "54.8rem",
77
});
88

9-
export const titleWrapper = style({
9+
export const iconWrapper = style({
1010
position: "relative",
1111
});
1212

13-
export const title = style({
14-
display: "flex",
15-
flexDirection: "column",
16-
justifyContent: "center",
17-
gap: "0.8rem",
18-
textAlign: "center",
19-
});
20-
2113
export const cancelIconWrapper = style({
2214
position: "absolute",
2315
top: 0,
@@ -29,6 +21,14 @@ export const cancelIcon = style({
2921
color: semantic.icon.gray,
3022
});
3123

24+
export const title = style({
25+
display: "flex",
26+
flexDirection: "column",
27+
justifyContent: "center",
28+
gap: "0.8rem",
29+
textAlign: "center",
30+
});
31+
3232
export const mainTitle = style({
3333
whiteSpace: "pre-line",
3434
});
@@ -38,4 +38,15 @@ export const body = style({
3838
flexDirection: "column",
3939
alignItems: "center",
4040
gap: "1.6rem",
41+
padding: 0,
42+
});
43+
44+
export const sliderContainer = style({
45+
width: "100%",
46+
});
47+
48+
export const imageWrapper = style({
49+
display: "flex",
50+
justifyContent: "center",
51+
alignItems: "center",
4152
});

src/app/(home)/_components/ServiceIntroBottomSheet/ServiceIntroBottomSheet.tsx

Lines changed: 59 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,37 +2,47 @@
22

33
import { AnimatePresence, motion } from "motion/react";
44
import Image from "next/image";
5-
import { useEffect, useState } from "react";
5+
import { useEffect, useRef, useState } from "react";
6+
import Slider from "react-slick";
67

78
import CancelIcon from "@/assets/cancel.svg";
89
import { BottomSheet } from "@/components/ui/BottomSheet";
910
import { Button } from "@/components/ui/Button";
1011
import { Indicator } from "@/components/ui/Indicator";
12+
import { Spacer } from "@/components/ui/Spacer";
1113
import { Text } from "@/components/ui/Text";
1214

1315
import { INTRO_STEP_CONTENTS, type IntroStepContent } from "../../_constants";
1416
import * as styles from "./ServiceIntroBottomSheet.css";
1517

1618
export const ServiceIntroBottomSheet = () => {
19+
const slickRef = useRef<Slider>(null);
1720
const [currentIndex, setCurrentIndex] = useState(0);
1821
const [isOpen, setIsOpen] = useState(false);
1922

2023
useEffect(() => {
2124
const hasWatchIntro = localStorage.getItem("watchIntro") === "true";
22-
2325
if (!hasWatchIntro) {
2426
setIsOpen(true);
2527
localStorage.setItem("watchIntro", "true");
2628
}
2729
}, []);
2830

31+
const sliderSettings = {
32+
arrows: false,
33+
beforeChange: (current: number, next: number) => {
34+
setCurrentIndex(next);
35+
},
36+
};
37+
2938
const handleDotClick = (index: number) => {
3039
setCurrentIndex(index);
40+
slickRef.current?.slickGoTo(index);
3141
};
3242

3343
const handleNext = () => {
3444
if (currentIndex < INTRO_STEP_CONTENTS.length - 1) {
35-
setCurrentIndex(currentIndex + 1);
45+
slickRef.current?.slickNext();
3646
} else {
3747
setIsOpen(false);
3848
}
@@ -47,7 +57,7 @@ export const ServiceIntroBottomSheet = () => {
4757
return (
4858
<BottomSheet.Root open={isOpen} onOpenChange={setIsOpen}>
4959
<BottomSheet.Content className={styles.content}>
50-
<BottomSheet.Title className={styles.titleWrapper}>
60+
<BottomSheet.Title className={styles.iconWrapper}>
5161
<div className={styles.cancelIconWrapper}>
5262
<button
5363
type='button'
@@ -61,43 +71,54 @@ export const ServiceIntroBottomSheet = () => {
6171
/>
6272
</button>
6373
</div>
64-
65-
<AnimatePresence mode='wait'>
66-
<motion.div
67-
className={styles.title}
68-
key={currentIndex}
69-
initial={{ opacity: 0, y: 10 }}
70-
animate={{ opacity: 1, y: 0 }}
71-
exit={{ opacity: 0, y: -10 }}
72-
transition={{ duration: 0.3 }}
73-
>
74-
<Text typo='title1Bd' className={styles.mainTitle}>
75-
{currentContent.title}
76-
</Text>
77-
<Text typo='body2Rg' color='neutral.50'>
78-
{currentContent.subtitle}
79-
</Text>
80-
</motion.div>
81-
</AnimatePresence>
8274
</BottomSheet.Title>
8375

8476
<BottomSheet.Body className={styles.body}>
85-
<AnimatePresence mode='wait'>
86-
<motion.div
87-
key={currentIndex}
88-
initial={{ opacity: 0, scale: 0.95 }}
89-
animate={{ opacity: 1, scale: 1 }}
90-
exit={{ opacity: 0, scale: 0.95 }}
91-
transition={{ duration: 0.3 }}
92-
>
93-
<Image
94-
width={335}
95-
height={252}
96-
src={currentContent.imageSrc}
97-
alt={currentContent.imageAlt}
98-
/>
99-
</motion.div>
100-
</AnimatePresence>
77+
<div className={styles.sliderContainer}>
78+
<Slider ref={slickRef} {...sliderSettings}>
79+
{INTRO_STEP_CONTENTS.map(content => (
80+
<>
81+
<AnimatePresence mode='wait'>
82+
<motion.div
83+
className={styles.title}
84+
initial={{ opacity: 0, y: 10 }}
85+
animate={{ opacity: 1, y: 0 }}
86+
exit={{ opacity: 0, y: -10 }}
87+
transition={{ duration: 0.3 }}
88+
>
89+
<Text typo='title1Bd' className={styles.mainTitle}>
90+
{content.title}
91+
</Text>
92+
<Text typo='body2Rg' color='neutral.50'>
93+
{content.subtitle}
94+
</Text>
95+
</motion.div>
96+
</AnimatePresence>
97+
98+
<Spacer size={28} />
99+
100+
<AnimatePresence mode='wait'>
101+
<motion.div
102+
initial={{ opacity: 0, scale: 0.95 }}
103+
animate={{ opacity: 1, scale: 1 }}
104+
exit={{ opacity: 0, scale: 0.95 }}
105+
transition={{ duration: 0.3 }}
106+
className={styles.imageWrapper}
107+
>
108+
<Image
109+
width={335}
110+
height={252}
111+
src={content.imageSrc}
112+
alt={content.imageAlt}
113+
priority
114+
/>
115+
</motion.div>
116+
</AnimatePresence>
117+
</>
118+
))}
119+
</Slider>
120+
</div>
121+
101122
<Indicator
102123
totalCount={INTRO_STEP_CONTENTS.length}
103124
currentIndex={currentIndex}

src/app/(home)/_components/Story/AddStoryAvatar/AddStoryAvatar.css.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export const addButton = style({
3535
left: "2.9rem",
3636
width: "2.1rem",
3737
height: "2.1rem",
38-
padding: "0.5rem",
38+
padding: "0.3rem",
3939
borderRadius: radius.circle,
4040
background: `${colors.neutral[30]}`,
4141
border: `2px solid ${colors.common[100]}`,

src/app/(home)/_components/Story/Story.css.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { radius } from "@/styles";
44

55
export const wrapper = style({
66
width: "100%",
7-
height: "9rem",
7+
height: "9.5rem",
88
overflowX: "auto",
99
"::-webkit-scrollbar": {
1010
display: "none",

src/app/(home)/_components/Story/StoryList/StoryList.css.ts

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,22 @@ import { style } from "@vanilla-extract/css";
22

33
import { radius } from "@/styles";
44

5-
export const wrapper = style({
6-
width: "100%",
7-
height: "9rem",
8-
overflowX: "auto",
9-
"::-webkit-scrollbar": {
10-
display: "none",
11-
},
5+
export const storyItem = style({
6+
flexShrink: 0,
7+
padding: "0.3rem",
8+
background:
9+
"linear-gradient(45deg, #ff6f0f, #ff9047, #ffb07f, rgba(0, 255, 128, 0.7), #49e57d)",
10+
borderRadius: radius.circle,
1211
});
1312

14-
export const storyImage = style({
13+
export const storyImageInner = style({
14+
padding: "3px",
15+
backgroundColor: "white",
1516
borderRadius: radius.circle,
16-
objectFit: "cover",
17-
cursor: "pointer",
1817
});
1918

20-
export const storyItem = style({
21-
flexShrink: 0,
19+
export const storyImage = style({
20+
display: "block",
21+
borderRadius: radius.circle,
22+
cursor: "pointer",
2223
});

src/app/(home)/_components/Story/StoryList/StoryList.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,16 @@ export const StoryList = () => {
2525
className={styles.storyItem}
2626
onClick={() => handleStoryClick(story.storyId)}
2727
>
28-
<Image
29-
src={story.imageUrl}
30-
width={80}
31-
height={80}
32-
alt={`스토리 이미지 ${story.storyId}`}
33-
className={styles.storyImage}
34-
/>
28+
<div className={styles.storyImageInner}>
29+
<Image
30+
src={story.imageUrl}
31+
width={80}
32+
height={80}
33+
alt={`스토리 이미지 ${story.storyId}`}
34+
className={styles.storyImage}
35+
objectFit='cover'
36+
/>
37+
</div>
3538
</div>
3639
))}
3740
</>

src/app/(search)/_components/SearchStoreBottomSheet/SearchStoreBottomSheet.css.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { style } from "@vanilla-extract/css";
22

3-
import { colors } from "@/styles";
3+
import { colors, semantic } from "@/styles";
44

55
export const contentWrapper = style({
66
height: "calc(100dvh - 52px)",
@@ -23,6 +23,15 @@ export const icon = style({
2323
color: colors.neutral[90],
2424
});
2525

26+
export const helperTextWrapper = style({
27+
display: "flex",
28+
gap: "0.4rem",
29+
});
30+
31+
export const infoIcon = style({
32+
color: semantic.icon.gray,
33+
});
34+
2635
export const searchResultItems = style({
2736
display: "flex",
2837
flexDirection: "column",

0 commit comments

Comments
 (0)