diff --git a/src/app/stackflow/Stack.tsx b/src/app/stackflow/Stack.tsx index b2dec08..7f08334 100644 --- a/src/app/stackflow/Stack.tsx +++ b/src/app/stackflow/Stack.tsx @@ -22,6 +22,8 @@ import { VoteResultContentScreen } from '@/screen/vote-result-content/ui'; import { VoteResultScreen } from '@/screen/vote-result/ui'; import { VoteScreen } from '@/screen/vote/ui'; import { fetchLoginStatus } from '@/shared/utils'; +import { UserScreen } from '@/screen/user/ui'; +import { UserVoteStatusScreen } from '@/screen/user-vote-status/ui'; export const { Stack, useFlow } = stackflow({ transitionDuration: 350, @@ -45,6 +47,8 @@ export const { Stack, useFlow } = stackflow({ VoteResultScreen, VoteResultContentScreen, HomeScreen, + UserScreen, + UserVoteStatusScreen, }, plugins: [ basicRendererPlugin(), diff --git a/src/assets/icon/icon-profile.png b/src/assets/icon/icon-profile.png new file mode 100644 index 0000000..2ceffb5 Binary files /dev/null and b/src/assets/icon/icon-profile.png differ diff --git a/src/assets/icon/index.ts b/src/assets/icon/index.ts index d25f58e..902ebca 100644 --- a/src/assets/icon/index.ts +++ b/src/assets/icon/index.ts @@ -20,6 +20,7 @@ import UserSquareIcon from './icon-user-square.svg'; import VoteCompleteIcon from './icon-vote-complete.png'; import VoteIcon from './icon-vote.svg'; import WriteIcon from './icon-write.svg'; +import ProfileIcon from './icon-profile.png'; export { Alert, @@ -44,4 +45,5 @@ export { VoteCompleteIcon, VoteIcon, WriteIcon, + ProfileIcon, }; diff --git a/src/screen/home/ui/HomeScreen.tsx b/src/screen/home/ui/HomeScreen.tsx index 76c0c48..f8a00b1 100644 --- a/src/screen/home/ui/HomeScreen.tsx +++ b/src/screen/home/ui/HomeScreen.tsx @@ -8,7 +8,7 @@ import { PATH } from '@/shared/constants'; import { logout } from '@/shared/utils'; export default function HomeScreen() { - const { replace } = useFlow(); + const { replace, push } = useFlow(); return ( {}, + () => push(PATH.USER, {}), )} > diff --git a/src/screen/user-vote-status/ui/UserVoteStatusScreen.tsx b/src/screen/user-vote-status/ui/UserVoteStatusScreen.tsx new file mode 100644 index 0000000..f439030 --- /dev/null +++ b/src/screen/user-vote-status/ui/UserVoteStatusScreen.tsx @@ -0,0 +1,12 @@ +import { AppScreen } from '@stackflow/plugin-basic-ui'; + +import { TitleAppBar } from '@/shared/ui'; +import { AdminVoteResultContainer } from '@/widgets/admin-vote-result/ui'; + +export default function NoticeCreateScreen() { + return ( + + + + ); +} diff --git a/src/screen/user-vote-status/ui/index.ts b/src/screen/user-vote-status/ui/index.ts new file mode 100644 index 0000000..ac5e1f2 --- /dev/null +++ b/src/screen/user-vote-status/ui/index.ts @@ -0,0 +1 @@ +export { default as UserVoteStatusScreen } from './UserVoteStatusScreen'; diff --git a/src/screen/user/ui/UserScreen.tsx b/src/screen/user/ui/UserScreen.tsx new file mode 100644 index 0000000..f41773e --- /dev/null +++ b/src/screen/user/ui/UserScreen.tsx @@ -0,0 +1,72 @@ +import { AppScreen } from '@stackflow/plugin-basic-ui'; +import { IoChevronForward } from 'react-icons/io5'; + +import { useFlow } from '@/app/stackflow'; +import { ProfileIcon } from '@/assets/icon'; + +import { Button, TitleAppBar } from '@/shared/ui'; +import { fetchSessionData, logout } from '@/shared/utils'; +import { PATH } from '@/shared/constants'; +import type { User } from '@/shared/types'; + +export default function UserScreen() { + const { name, collegeMajorName } = fetchSessionData('userInfo') as User; + const { push } = useFlow(); + + return ( + +
+
+ +

{name}

+

202311509

+

{collegeMajorName}

+
+
+ +
+ +
+ +
+ + {}} /> + { + logout(); + }} + /> +
+ + ); +} + +const InfoItem = ({ item, label }: { item: string; label: string }) => ( +
+

{item}

+

{label}

+
+); + +const UserScreenButton = ({ + label, + onClick, +}: { + label: string; + onClick: () => void; +}) => ( + +); diff --git a/src/screen/user/ui/index.ts b/src/screen/user/ui/index.ts new file mode 100644 index 0000000..598423a --- /dev/null +++ b/src/screen/user/ui/index.ts @@ -0,0 +1 @@ +export { default as UserScreen } from './UserScreen'; diff --git a/src/shared/constants/path.ts b/src/shared/constants/path.ts index 0c1d8c5..49d80cb 100644 --- a/src/shared/constants/path.ts +++ b/src/shared/constants/path.ts @@ -18,6 +18,8 @@ export const PATH = { VOTE_PROMISE: 'VotePromiseScreen', VOTE_RESULT: 'VoteResultScreen', VOTE_RESULT_CONTENT: 'VoteResultContentScreen', + USER: 'UserScreen', + USER_VOTE_STATUS: 'UserVoteStatusScreen', } as const; export const RAW_PATH = {