Skip to content

Commit

Permalink
Merge pull request #13 from Skhuthon/feature/12
Browse files Browse the repository at this point in the history
๋งˆ์ดํŽ˜์ด์ง€ ํ™”๋ฉด ๊ตฌํ˜„
  • Loading branch information
MyungJiwoo authored Jun 29, 2024
2 parents fd9f515 + f9c5260 commit 0ca95df
Show file tree
Hide file tree
Showing 9 changed files with 624 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ import UserPage from "./pages/UserPage";
import LoginPage from "./pages/LoginPage";
import ReviewWriting from "./pages/ReviewWriting";
import ReviewList from "./pages/ReviewList";
import MyPage from "./pages/MyPage";
import PostReview from "./pages/PostReview";
import ReadReview from "./pages/ReadReview";

const App: React.FC = () => {
useEffect(() => {
Expand All @@ -35,6 +38,9 @@ const App: React.FC = () => {
<Route path="/reviewList" element={<ReviewList />} />
<Route path="/reviewWriting" element={<ReviewWriting />} />
<Route path="/themeList" element={<ThemeList />} />
<Route path="/mypage" element={<MyPage />} />
<Route path="/postReview" element={<PostReview />} />
<Route path="/readReview" element={<ReadReview />} />
</Routes>
</Router>
);
Expand Down
27 changes: 27 additions & 0 deletions src/components/Review.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { Review } from "../styles/ReviewStyled";

const ReviewTheme = () => {
return (
<Review>
<div className="titleBox">
<p>์ œ๋ชฉ</p>
</div>
<div className="addressBox">
<p>๋งค์žฅ</p>
</div>
<div className="contentBox">
<p>๋ฆฌ๋ทฐ</p>
</div>
<div className="cardFooter">
<div className="hashtagBox">
<p>#ํƒˆ์ถœ ์„ฑ๊ณต</p>
<p>#4๋ช…</p>
<p>#ํžŒํŠธ 3๋ฒˆ</p>
<p>#๋‚จ์€ ์‹œ๊ฐ„ 10๋ถ„</p>
</div>
</div>
</Review>
);
};

export default ReviewTheme;
49 changes: 49 additions & 0 deletions src/pages/MyPage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import React, { useEffect, useState, KeyboardEvent, ChangeEvent } from "react";
import Review from "../components/Review";
import { Container, StartBtn } from "../styles/MyPageStyled";
import Pagination from "../components/BasicPagination";

const MyPage = () => {
const [take, setTake] = useState<number>(1); // ์ด ํŽ˜์ด์ง€ ์ˆ˜
const [page, setPage] = useState<number>(1); // ํ˜„์žฌ ํŽ˜์ด์ง€

const handleChangePage = (
event: React.ChangeEvent<unknown>,
value: number
) => {
setPage(value); // ํŽ˜์ด์ง€ ๋ณ€๊ฒฝ ์‹œ ํ˜„์žฌ ํŽ˜์ด์ง€ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
};

return (
<Container>
<div className="headerBox">
<div className="textBox">
<div className="subTitle">๋‹น์‹ ์„ ์œ„ํ•œ ๋ฐฉ,</div>
<div className="title">username๋‹˜์˜ ๋ฐฉํƒˆ์ถœ ์ผ์ง€</div>
</div>

<StartBtn isVisible={true}>
<div className="startBtn">
<p className="start">๋ฆฌ๋ทฐ ์ž‘์„ฑ</p>
</div>
</StartBtn>
</div>

<div className="reviewBox">
<Review />
<Review />
<Review />
<Review />
</div>

<div className="paginationBox">
<Pagination
count={take}
page={page}
onChange={handleChangePage}
/>
</div>
</Container>
);
};
export default MyPage;
93 changes: 93 additions & 0 deletions src/pages/PostReview.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
import React, { useEffect, useState, KeyboardEvent, ChangeEvent } from "react";
import { Container, StartBtn } from "../styles/PostReviewStyled";

const PostReview = () => {
const onInputHandler = (
e: ChangeEvent<HTMLTextAreaElement | HTMLInputElement>
) => {
// const value = e.target.value.trim(); // ์ž…๋ ฅ๊ฐ’ ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ
// if (e.target.name === "title") {
// setTitle(value);
// } else if (e.target.name === "content") {
// setContent(value);
// setInputCount(value.length);
// } else if (e.target.name === "tags") {
// const tagArray = value
// .split("#")
// .map((tag) => tag.trim())
// .filter((tag) => tag !== "");
// setTags(tagArray);
// }
};

return (
<Container>
<div className="postBox">
<div className="btnBox">
<StartBtn isVisible={true}>
<div className="startBtn">
<p className="start">์ €์žฅ</p>
</div>
</StartBtn>
</div>

<div className="posting">
<p className="postTitle">ํ…Œ๋งˆ ์ด๋ฆ„</p>
<input
name="themeName"
placeholder="๋ฐฉํƒˆ์ถœ ์ง€์ ๊ณผ ํ…Œ๋งˆ ์ด๋ฆ„"
onChange={onInputHandler}
className="postThemeTitle"
></input>
</div>
<div className="posting">
<p className="postTitle">์„ฑ๊ณต ์—ฌ๋ถ€</p>
<select>
<option value="success">์„ฑ๊ณต</option>
<option value="fail">์‹คํŒจ</option>
</select>
</div>
<div className="posting">
<p className="postTitle">์ธ์› ์ˆ˜</p>
<input
type="number"
name="themeName"
placeholder="ํ”Œ๋ ˆ์ด ์ธ์›"
onChange={onInputHandler}
className="postTagsBox"
></input>
</div>
<div className="posting">
<p className="postTitle">ํžŒํŠธ ์‚ฌ์šฉ</p>
<input
type="number"
name="themeName"
placeholder="ํžŒํŠธ ์‚ฌ์šฉ ๊ฐœ์ˆ˜"
onChange={onInputHandler}
className="postTagsBox"
></input>
</div>
<div className="posting">
<p className="postTitle">๋‚จ์€ ์‹œ๊ฐ„</p>
<input
name="themeName"
placeholder="๋‚จ์€ ์‹œ๊ฐ„ (ํƒˆ์ถœ ์„ฑ๊ณต์‹œ)"
onChange={onInputHandler}
className="postTagsBox"
></input>
</div>
<div className="posting">
<p className="postTitle">ํ•œ ์ค„ ๋ฆฌ๋ทฐ</p>
<textarea
name="content"
placeholder="๋‚ด์šฉ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”"
onChange={onInputHandler}
maxLength={2000}
className="postContent"
></textarea>
</div>
</div>
</Container>
);
};
export default PostReview;
68 changes: 68 additions & 0 deletions src/pages/ReadReview.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import React, { useEffect, useState, KeyboardEvent, ChangeEvent } from "react";
import { Container, StartBtn } from "../styles/ReadReviewStyled";

const PostReview = () => {
const onInputHandler = (
e: ChangeEvent<HTMLTextAreaElement | HTMLInputElement>
) => {
// const value = e.target.value.trim(); // ์ž…๋ ฅ๊ฐ’ ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ
// if (e.target.name === "title") {
// setTitle(value);
// } else if (e.target.name === "content") {
// setContent(value);
// setInputCount(value.length);
// } else if (e.target.name === "tags") {
// const tagArray = value
// .split("#")
// .map((tag) => tag.trim())
// .filter((tag) => tag !== "");
// setTags(tagArray);
// }
};

return (
<Container>
<div className="postBox">
<div className="btnBox">
<StartBtn isVisible={true}>
<div className="startBtn">
<p className="start">์ˆ˜์ •</p>
</div>
</StartBtn>

<StartBtn isVisible={true}>
<div className="startBtn">
<p className="start">์‚ญ์ œ</p>
</div>
</StartBtn>
</div>

<div className="posting">
<p className="postTitle">ํ…Œ๋งˆ ์ด๋ฆ„</p>
<p className="read">ํ…Œ๋งˆ ์ด๋ฆ„</p>
</div>
<div className="posting">
<p className="postTitle">์„ฑ๊ณต ์—ฌ๋ถ€</p>
<p className="read">์„ฑ๊ณต</p>
</div>
<div className="posting">
<p className="postTitle">์ธ์› ์ˆ˜</p>
<p className="read">0 ๋ช…</p>
</div>
<div className="posting">
<p className="postTitle">ํžŒํŠธ ์‚ฌ์šฉ</p>
<p className="read">4 ๊ฐœ</p>
</div>
<div className="posting">
<p className="postTitle">๋‚จ์€ ์‹œ๊ฐ„</p>
<p className="read">1 ๋ถ„</p>
</div>
<div className="posting">
<p className="postTitle">ํ•œ ์ค„ ๋ฆฌ๋ทฐ</p>
<p className="read">์žฌ๋ฏธ์žˆ์–ด์š”.</p>
</div>
</div>
</Container>
);
};
export default PostReview;
87 changes: 87 additions & 0 deletions src/styles/MyPageStyled.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
import styled from "styled-components";

export const Container = styled.div`
width: 80vw;
padding: 10vh 10vw;
display: flex;
flex-direction: column;
align-items: center;
color: white;
.headerBox {
width: inherit;
display: flex;
justify-content: space-between;
align-items: center;
}
.subTitle {
color: white;
font-size: 2rem;
}
.title {
margin-top: 1rem;
color: white;
font-size: 3rem;
font-weight: bold;
}
.reviewBox {
width: inherit;
margin-top: 7vh;
display: flex;
flex-wrap: wrap;
}
.paginationBox {
margin-top: 7vh;
}
`;

export const StartBtn = styled.div<{ isVisible: boolean }>`
// ํ™”๋ฉด ๋งจ ๋์— ๋„์ฐฉํ•ด์•ผ๋งŒ ๋ณด์ด๊ฒŒ
transition: opacity 0.7s ease-in-out;
opacity: ${(props) => (props.isVisible ? 1 : 0)};
transform: ${(props) =>
props.isVisible ? "translateY(0)" : "translateY(20px)"};
visibility: ${(props) => (props.isVisible ? "visible" : "hidden")};
.startBtn {
height: 2rem;
padding: 0.4rem 1.6rem;
display: flex;
justify-content: center;
align-items: center;
border-radius: 1rem;
border: 3px solid white;
color: white;
background-color: #080101;
cursor: pointer;
filter: drop-shadow(0px 0px 10px #ffffff62);
transition: 0.2s all ease-in-out;
}
.startBtn:hover {
filter: drop-shadow(0px 0px 10px #ffffff);
}
.start {
font-size: 1.2rem;
margin-right: 0.3rem;
}
.icon {
width: 1.5rem;
font-size: 2rem;
display: flex;
justify-content: flex-end;
align-items: center;
}
`;
Loading

0 comments on commit 0ca95df

Please sign in to comment.