diff --git a/public/default-user.png b/public/default-user.png
new file mode 100644
index 0000000..3fcd6fe
Binary files /dev/null and b/public/default-user.png differ
diff --git a/src/components/common/searchBar/SearchBar.tsx b/src/components/common/searchBar/SearchBar.tsx
index fec9324..2980526 100644
--- a/src/components/common/searchBar/SearchBar.tsx
+++ b/src/components/common/searchBar/SearchBar.tsx
@@ -60,7 +60,7 @@ const SearchBar = () => {
{toastMessages.map((toast) => (
{
linkUrl={`/community/${characterInfo.code}`}
>
{
? (
diff --git a/src/components/community/PostHeader.tsx b/src/components/community/PostHeader.tsx
new file mode 100644
index 0000000..439a0b7
--- /dev/null
+++ b/src/components/community/PostHeader.tsx
@@ -0,0 +1,64 @@
+import { useEffect, useState } from 'react';
+import { css } from '@emotion/react';
+import color from '@/styles/color';
+import { useRouter } from 'next/router';
+import { findCharacterById } from '@/utils/api/character';
+import { CharacterInfo as CharacterInfoType } from '@/types/characterInfo';
+import CharacterInfo from '@/components/chat/characterHeader/CharacterInfo';
+import Loading from '../common/dialog/Loading';
+
+const PostHeader = () => {
+ const router = useRouter();
+ const { character_id: characterId } = router.query;
+ const [characterInfo, setCharacterInfo] = useState();
+ useEffect(() => {
+ if (characterId && typeof characterId === 'string') {
+ findCharacterById(characterId)
+ .then((data) => setCharacterInfo(data))
+ .catch((error) => {
+ console.error('Error fetching post:', error);
+ });
+ }
+ }, [characterId]);
+ return (
+
+ {/* TODO: 캐릭터의 정보, 이미지가 필요합니다. */}
+
+ {
+ characterInfo
+ ? (
+
+ )
+ :
+ }
+
+
+ );
+};
+
+export default PostHeader;
+
+const headerCSS = css`
+ position: sticky;
+ top: 0;
+ z-index: 100; // 채팅보다 위에 존재해야하기 때문에 필요함
+ width: 100%;
+ max-width: 400px;
+ padding: 1rem 1rem;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ background-color: ${color.white};
+`;
+
+const characterInfoCSS = css`
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+`;
diff --git a/src/components/community/postDetail/PostStatus.tsx b/src/components/community/postDetail/PostStatus.tsx
new file mode 100644
index 0000000..7ed829f
--- /dev/null
+++ b/src/components/community/postDetail/PostStatus.tsx
@@ -0,0 +1,45 @@
+import { css } from '@emotion/react';
+import HeartIcon from '@/components/icons/HeartIcon';
+import CommentIcon from '@/components/icons/CommentIcon';
+import ReportIcon from '@/components/icons/ReportIcon';
+import color from '@/styles/color';
+
+const PostStatus = () => (
+
+ -
+
+
1
+
+ -
+
+
3
+
+ -
+
+
신고
+
+
+);
+
+export default PostStatus;
+
+const ulCSS = css`
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: 0.25rem;
+ padding-top: 1rem;
+`;
+
+const liCSS = css`
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: 0.25rem;
+`;
+
+const statusCSS = css`
+ font-size: 0.75rem;
+ font-weight: bold;
+ color: ${color.black};
+`;
diff --git a/src/components/icons/BackwordIcon.tsx b/src/components/icons/BackwordIcon.tsx
index dc16242..5f0630e 100644
--- a/src/components/icons/BackwordIcon.tsx
+++ b/src/components/icons/BackwordIcon.tsx
@@ -1,8 +1,5 @@
import { FC } from 'react';
-
-interface IconProps {
- color: string
-}
+import { IconProps } from '@/types/icon';
const BackwordIcon: FC = ({ color }) => (