(0);
+
+ return (
+
+
+
+
+
+
+
+ 투표 제목을 정해주세요
+
+
+
+
+
+ setInputCount(e.target.value.length)}
+ maxLength={15}
+ borderColor="neutral.800"
+ focusBorderColor="primary.300"
+ variant="flushed"
+ placeholder=" 숙소 정하자, 카페 정하자"
+ fontSize="subTitle"
+ mt="5%"
+ />
+
+ {inputCount}/15자
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default CreatVoteTitleModal;
diff --git a/src/components/Vote/VoteCandidateItem/VoteCandidateItem.module.scss b/src/components/Vote/VoteCandidateItem/VoteCandidateItem.module.scss
new file mode 100644
index 00000000..e8bdbddb
--- /dev/null
+++ b/src/components/Vote/VoteCandidateItem/VoteCandidateItem.module.scss
@@ -0,0 +1,80 @@
+@use "@/sass" as *;
+
+.container {
+ width: 100%; //335?
+ height: 14.4rem;
+ padding: 15px 20px;
+
+ border-radius: 16px;
+ border: 2px solid $neutral200;
+ box-shadow: $shadow100;
+
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+
+.main {
+ width: 100%;
+
+ display: flex;
+ justify-content: space-between;
+
+ &__contextBox {
+ display: flex;
+ flex-direction: column;
+ gap: 5px;
+
+ &__name {
+ @include typography(titleMedium);
+ color: $neutral900;
+ }
+ &__category {
+ @include typography(captionSmall);
+ color: $neutral400;
+ }
+ &__addDay {
+ @include typography(captionSmall);
+ color: $neutral800;
+ }
+ }
+ &__voteBox {
+ @include typography(bodySmall);
+ color: $neutral800;
+
+ width: 5.8rem;
+ height: 8rem;
+
+ padding: 10px;
+
+ border-radius: 10px;
+ border: 2px solid $neutral200;
+
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+
+ gap: 4px;
+
+ &__star {
+ font-size: 2.4rem;
+ }
+ }
+}
+
+.comment {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+
+ &__text {
+ height: 2.2rem;
+ @include typography(bodySmall);
+ color: $neutral900;
+ background-color: $neutral100;
+
+ padding: 0 17px;
+ border-radius: 7px;
+ }
+}
diff --git a/src/components/Vote/VoteCandidateItem/VoteCandidateItem.tsx b/src/components/Vote/VoteCandidateItem/VoteCandidateItem.tsx
new file mode 100644
index 00000000..47cc2a24
--- /dev/null
+++ b/src/components/Vote/VoteCandidateItem/VoteCandidateItem.tsx
@@ -0,0 +1,26 @@
+import { Avatar } from "@chakra-ui/react";
+
+import styles from "./VoteCandidateItem.module.scss";
+
+const VoteCandidateItem = () => {
+ return (
+
+
+
+
대전 성심당 {">"}
+
카페
+
+ 일정에 추가
+
+
+
+
+
+ );
+};
+
+export default VoteCandidateItem;
diff --git a/src/components/Vote/VoteDetailsBottomButton/VoteDetailsBottomButton.module.scss b/src/components/Vote/VoteDetailsBottomButton/VoteDetailsBottomButton.module.scss
new file mode 100644
index 00000000..f6afe520
--- /dev/null
+++ b/src/components/Vote/VoteDetailsBottomButton/VoteDetailsBottomButton.module.scss
@@ -0,0 +1,6 @@
+@use "@/sass" as *;
+
+// .bottomButton {
+// @include vote-common-button !important;
+// @include typography(button) !important;
+// }
diff --git a/src/components/Vote/VoteDetailsBottomButton/VoteDetailsBottomButton.tsx b/src/components/Vote/VoteDetailsBottomButton/VoteDetailsBottomButton.tsx
new file mode 100644
index 00000000..e3aba6bf
--- /dev/null
+++ b/src/components/Vote/VoteDetailsBottomButton/VoteDetailsBottomButton.tsx
@@ -0,0 +1,13 @@
+import { Button } from "@chakra-ui/react";
+
+//import styles from "./VoteDetailsBottomButton.module.scss";
+
+const VoteDetailsBottomButton = () => {
+ return (
+
+
+
+ );
+};
+
+export default VoteDetailsBottomButton;
diff --git a/src/components/Vote/VoteDetailsField/VoteDetailsField.module.scss b/src/components/Vote/VoteDetailsField/VoteDetailsField.module.scss
new file mode 100644
index 00000000..fa7c3a1f
--- /dev/null
+++ b/src/components/Vote/VoteDetailsField/VoteDetailsField.module.scss
@@ -0,0 +1,32 @@
+@use "@/sass" as *;
+
+.container {
+ width: 100%;
+ padding: 20px;
+
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+
+ &__stateBar {
+ margin-bottom: 15px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ &__state {
+ @include typography(captionSmall);
+ color: $primary200;
+ //color:$neutral400;
+ }
+ &__addCandidate {
+ @include typography(button);
+ color: $neutral900;
+ }
+ }
+ &__candidateList {
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+ }
+}
diff --git a/src/components/Vote/VoteDetailsField/VoteDetailsField.tsx b/src/components/Vote/VoteDetailsField/VoteDetailsField.tsx
new file mode 100644
index 00000000..d4076471
--- /dev/null
+++ b/src/components/Vote/VoteDetailsField/VoteDetailsField.tsx
@@ -0,0 +1,35 @@
+import { Icon } from "@chakra-ui/react";
+import { GoDotFill } from "react-icons/go";
+
+import styles from "./VoteDetailsField.module.scss";
+
+import VoteCandidateItem from "../VoteCandidateItem/VoteCandidateItem";
+
+// import VoteDetailsFieldZero from "../VoteDetailsFieldZero/VoteDetailsFieldZero";
+
+const VoteDetailsField = () => {
+ // if(CandidateList.length===0) {
+ // //지도 색 neutral300
+ // return
+ // }
+
+ return (
+
+
+
+
+ 진행 중
+
+
+ + 후보 추가(1/15)
+
+
+
+
+
+
+
+
+ );
+};
+export default VoteDetailsField;
diff --git a/src/components/Vote/VoteDetailsFieldZero/VoteDetailsFieldZero.module.scss b/src/components/Vote/VoteDetailsFieldZero/VoteDetailsFieldZero.module.scss
new file mode 100644
index 00000000..3cc2caba
--- /dev/null
+++ b/src/components/Vote/VoteDetailsFieldZero/VoteDetailsFieldZero.module.scss
@@ -0,0 +1,20 @@
+@use "@/sass" as *;
+
+.container {
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+
+ &__zeroTextBox {
+ text-align: center;
+ margin-top: 25vh;
+ &__title {
+ @include typography(titleSmall);
+ color: $neutral400;
+ }
+ &__text {
+ @include typography(captionSmall);
+ color: $neutral300;
+ }
+ }
+}
diff --git a/src/components/Vote/VoteDetailsFieldZero/VoteDetailsFieldZero.tsx b/src/components/Vote/VoteDetailsFieldZero/VoteDetailsFieldZero.tsx
new file mode 100644
index 00000000..9f1d2d40
--- /dev/null
+++ b/src/components/Vote/VoteDetailsFieldZero/VoteDetailsFieldZero.tsx
@@ -0,0 +1,18 @@
+import styles from "./VoteDetailsFieldZero.module.scss";
+
+const VoteDetailsFieldZero = () => {
+ return (
+
+
+
+ 투표 후보가 없습니다.
+
+
+ 하단 버튼을 눌러 후보를 추가해보세요!
+
+
+
+ );
+};
+
+export default VoteDetailsFieldZero;
diff --git a/src/components/Vote/VoteDetailsHeader/VoteDetailsHeader.module.scss b/src/components/Vote/VoteDetailsHeader/VoteDetailsHeader.module.scss
new file mode 100644
index 00000000..58776061
--- /dev/null
+++ b/src/components/Vote/VoteDetailsHeader/VoteDetailsHeader.module.scss
@@ -0,0 +1,36 @@
+@use "@/sass" as *;
+
+.container {
+ height: 4rem;
+ width: 45rem;
+ min-width: 36rem;
+ position: fixed;
+ top: 0;
+ left: 50%;
+ transform: translateX(-50%);
+
+ padding: 0 16px;
+
+ background-color: $neutral0;
+
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ font-size: 2.4rem;
+
+ z-index: 100;
+}
+
+.title {
+ @include typography(tabLabel);
+ height: 2.2rem;
+ margin-left: 40px;
+}
+
+.iconBox {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ gap: 16px;
+}
diff --git a/src/components/Vote/VoteDetailsHeader/VoteDetailsHeader.tsx b/src/components/Vote/VoteDetailsHeader/VoteDetailsHeader.tsx
new file mode 100644
index 00000000..0eecd11b
--- /dev/null
+++ b/src/components/Vote/VoteDetailsHeader/VoteDetailsHeader.tsx
@@ -0,0 +1,28 @@
+import { BsThreeDots } from "react-icons/bs";
+import { FaRegMap } from "react-icons/fa";
+import { MdOutlineArrowBackIosNew } from "react-icons/md";
+
+import styles from "./VoteDetailsHeader.module.scss";
+
+const VoteDetailsHeader = () => {
+ const voteTitle = "카페 어디로 갈래?";
+
+ //상태에 따른 아이콘 disabled
+ // 또는 없애기
+
+ return (
+
+
+
+
+
{voteTitle}
+
+
+
+
+
+
+ );
+};
+
+export default VoteDetailsHeader;
diff --git a/src/pages/VoteDetail/VoteDetail.module.scss b/src/pages/VoteDetail/VoteDetail.module.scss
new file mode 100644
index 00000000..e1ddeb1b
--- /dev/null
+++ b/src/pages/VoteDetail/VoteDetail.module.scss
@@ -0,0 +1,11 @@
+@use "@/sass" as *;
+
+.container {
+ height: 100vh;
+ width: 100%;
+ margin-top: 4rem;
+
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
diff --git a/src/pages/VoteDetail/VoteDetail.tsx b/src/pages/VoteDetail/VoteDetail.tsx
new file mode 100644
index 00000000..78c5bbf6
--- /dev/null
+++ b/src/pages/VoteDetail/VoteDetail.tsx
@@ -0,0 +1,21 @@
+import styles from "./VoteDetail.module.scss";
+
+// import CreatVoteTitleModal from "@/components/Vote/CreatVoteTitleModal/CreatVoteTitleModal";
+import VoteDetailsBottomButton from "@/components/Vote/VoteDetailsBottomButton/VoteDetailsBottomButton";
+import VoteDetailsField from "@/components/Vote/VoteDetailsField/VoteDetailsField";
+import VoteDetailsHeader from "@/components/Vote/VoteDetailsHeader/VoteDetailsHeader";
+
+const VoteDetail = () => {
+ return (
+
+
+
+
+ {/* 나중에 여행스페이스 메인에 옮겨야함 */}
+ {/* */}
+
+
+ );
+};
+
+export default VoteDetail;
diff --git a/src/routes/MainRouter/MainRouter.tsx b/src/routes/MainRouter/MainRouter.tsx
index 39b39781..43cc9187 100644
--- a/src/routes/MainRouter/MainRouter.tsx
+++ b/src/routes/MainRouter/MainRouter.tsx
@@ -3,6 +3,7 @@ import { Route, Routes } from "react-router-dom";
import Detail from "@/pages/Detail/Detail";
import Home from "@/pages/Home/Home";
import Dashboard from "@/routes/Dashboard/Dashboard";
+import VoteDetail from "../../pages/VoteDetail/VoteDetail";
function MainRouter() {
return (
@@ -13,6 +14,7 @@ function MainRouter() {
} />
} />
+ } />
} />
);
diff --git a/src/sass/abstracts/_variables.scss b/src/sass/abstracts/_variables.scss
index c474b2c7..d656cacf 100644
--- a/src/sass/abstracts/_variables.scss
+++ b/src/sass/abstracts/_variables.scss
@@ -104,7 +104,7 @@ $typography-line-height-map: (
// 22px
"captionLarge": 2.2rem,
// 22px
- "captionMidium": 2rem,
+ "captionMedium": 2rem,
// 20px
"captionSmall": 2rem,
// 20px
diff --git a/src/sass/chakraCustomTheme.tsx b/src/sass/chakraCustomTheme.tsx
index 14c408a1..7fa49a11 100644
--- a/src/sass/chakraCustomTheme.tsx
+++ b/src/sass/chakraCustomTheme.tsx
@@ -1,6 +1,54 @@
import { extendTheme } from "@chakra-ui/react";
export const customTheme = extendTheme({
+ components: {
+ Button: {
+ baseStyle: {
+ _disabled: {
+ backgroundColor: "neutral.200",
+ color: "neutral.400",
+ PointerEvent: "none",
+ },
+ },
+ //ex) Button 컴포넌트 내부에 variant="CTAButton"
+ variants: {
+ blueButton: {
+ backgroundColor: "primary.300",
+ borderRadius: "16px",
+
+ color: "neutral.0",
+ fontSize: "button",
+ fontWeight: "button",
+ lineHeight: "button",
+
+ _hover: {
+ backgroundColor: "primary.400",
+ },
+ },
+ CTAButton: {
+ position: "fixed",
+ bottom: "2.4rem",
+ left: "50%",
+ transform: "translateX(-50%)",
+ width: "32.7rem",
+ height: "4.6rem",
+
+ backgroundColor: "primary.300",
+ borderRadius: "16px",
+
+ color: "neutral.0",
+ fontSize: "button",
+ fontWeight: "button",
+ lineHeight: "button",
+
+ _hover: {
+ backgroundColor: "primary.400",
+ },
+ },
+ },
+ },
+ },
+
fonts: {
heading: `'suit', sans-serif`,
body: `'suit', sans-serif`,