+
{campus.map((campusName, index) => (
+ );
+}
diff --git a/src/widgets/vote-result-content/ui/index.ts b/src/widgets/vote-result-content/ui/index.ts
new file mode 100644
index 0000000..f88a780
--- /dev/null
+++ b/src/widgets/vote-result-content/ui/index.ts
@@ -0,0 +1 @@
+export { default as VoteResultContentContainer } from './VoteResultContentContainer';
diff --git a/src/widgets/vote-result/ui/VoteResultBottomSheet.tsx b/src/widgets/vote-result/ui/VoteResultBottomSheet.tsx
new file mode 100644
index 0000000..959896e
--- /dev/null
+++ b/src/widgets/vote-result/ui/VoteResultBottomSheet.tsx
@@ -0,0 +1,55 @@
+import type { Dispatch, SetStateAction } from 'react';
+
+import { useBottomSheet } from '@/shared/hook';
+import { BottomSheet } from '@/shared/ui';
+import { BOTTOM_SHEET } from '@/shared/constants';
+import { cn } from '@/shared/utils';
+
+interface LoginBottomSheetProps {
+ setSelectedYear: Dispatch
>;
+ selectedYear: number;
+}
+
+export default function LoginBottomSheet({
+ selectedYear,
+ setSelectedYear,
+}: LoginBottomSheetProps) {
+ const { closeBottomSheet, bottomSheetState } = useBottomSheet();
+ const { isOpen } = bottomSheetState(BOTTOM_SHEET.VOTE_RESULT);
+ const year = Array.from({ length: 10 }, (_, i) => 2024 - i);
+
+ const handleSelectYear = (selectedYear: number) => {
+ setSelectedYear(selectedYear);
+ closeBottomSheet(BOTTOM_SHEET.VOTE_RESULT);
+ };
+
+ return (
+ <>
+ {isOpen && (
+
+
+
+ 년도를 선택해주세요
+
+
+ {year.map(y => (
+
+ ))}
+
+
+ )}
+ >
+ );
+}
diff --git a/src/widgets/vote-result/ui/VoteResultContainer.tsx b/src/widgets/vote-result/ui/VoteResultContainer.tsx
new file mode 100644
index 0000000..4720879
--- /dev/null
+++ b/src/widgets/vote-result/ui/VoteResultContainer.tsx
@@ -0,0 +1,45 @@
+import { IoChevronDownSharp } from 'react-icons/io5';
+
+import { BOTTOM_SHEET } from '@/shared/constants';
+import { useBottomSheet } from '@/shared/hook';
+import { cn } from '@/shared/utils';
+
+import { VoteResultItem } from '@/widgets/vote-result/ui';
+
+interface VoteResultContainerProps {
+ selectedYear: number;
+}
+
+export default function VoteResultContainer({
+ selectedYear,
+}: VoteResultContainerProps) {
+ const { openBottomSheet, bottomSheetState } = useBottomSheet();
+ const { isOpen } = bottomSheetState(BOTTOM_SHEET.VOTE_RESULT);
+
+ return (
+
+
+
+
+
+
{selectedYear}
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/widgets/vote-result/ui/VoteResultItem.tsx b/src/widgets/vote-result/ui/VoteResultItem.tsx
new file mode 100644
index 0000000..75b7a25
--- /dev/null
+++ b/src/widgets/vote-result/ui/VoteResultItem.tsx
@@ -0,0 +1,24 @@
+import { useFlow } from '@/app/stackflow';
+import { PATH } from '@/shared/constants';
+
+export default function VoteResultItem() {
+ const { push } = useFlow();
+
+ return (
+
+ );
+}
diff --git a/src/widgets/vote-result/ui/index.ts b/src/widgets/vote-result/ui/index.ts
new file mode 100644
index 0000000..1919793
--- /dev/null
+++ b/src/widgets/vote-result/ui/index.ts
@@ -0,0 +1,3 @@
+export { default as VoteResultContainer } from './VoteResultContainer';
+export { default as VoteResultBottomSheet } from './VoteResultBottomSheet';
+export { default as VoteResultItem } from './VoteResultItem';