From e99fdc2c491b36ce9fedd52dc350176d8749c8a5 Mon Sep 17 00:00:00 2001 From: diwoni <70441308+Diwoni@users.noreply.github.com> Date: Fri, 8 Nov 2024 16:42:49 +0900 Subject: [PATCH 001/203] =?UTF-8?q?Style(guard-mypage):=20=EB=84=A4?= =?UTF-8?q?=EC=9D=B4=EB=B0=8D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../guard/mypage/components/profile-box/GuardProfileBox.tsx | 2 +- .../components/features/mypage/point-log-box/PointLogBox.tsx | 2 +- src/shared/hooks/point/pointStatusMapping.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/guard/mypage/components/profile-box/GuardProfileBox.tsx b/src/pages/guard/mypage/components/profile-box/GuardProfileBox.tsx index 6ec0072e..b2514c08 100644 --- a/src/pages/guard/mypage/components/profile-box/GuardProfileBox.tsx +++ b/src/pages/guard/mypage/components/profile-box/GuardProfileBox.tsx @@ -30,7 +30,7 @@ const GuardProfileBox = () => { - 시니어 등록하기 + 내 시니어 관리 diff --git a/src/shared/components/features/mypage/point-log-box/PointLogBox.tsx b/src/shared/components/features/mypage/point-log-box/PointLogBox.tsx index e135fe2a..d61c2f86 100644 --- a/src/shared/components/features/mypage/point-log-box/PointLogBox.tsx +++ b/src/shared/components/features/mypage/point-log-box/PointLogBox.tsx @@ -177,7 +177,7 @@ const PaginationButton = styled.button` `; const DetailText = styled(Box)` - width: 45%; + width: 50%; display: flex; align-items: center; font-size: 16px; diff --git a/src/shared/hooks/point/pointStatusMapping.ts b/src/shared/hooks/point/pointStatusMapping.ts index 9fb80dad..73729b15 100644 --- a/src/shared/hooks/point/pointStatusMapping.ts +++ b/src/shared/hooks/point/pointStatusMapping.ts @@ -15,7 +15,7 @@ export type PointStatus = // 상태 맵핑 export const pointStatusMapping: Record = { SPEND_COMPLETE: '소비 확정', - SPEND_CANCEL: '소비 취소', + SPEND_CANCEL: '포인트 환급', WITHDRAW_REQUEST: '출금 신청', WITHDRAW_WAITING: '출금 대기', WITHDRAW_COMPLETE: '출금 완료', From 3990e4632bca28d0286fbe2632551e63bfce545c Mon Sep 17 00:00:00 2001 From: diwoni <70441308+Diwoni@users.noreply.github.com> Date: Fri, 8 Nov 2024 16:50:58 +0900 Subject: [PATCH 002/203] =?UTF-8?q?Refactor(guard-mypage):=20=ED=8F=AC?= =?UTF-8?q?=EC=9D=B8=ED=8A=B8=20=EC=B6=A9=EC=A0=84(=EC=B6=9C=EA=B8=88)=20v?= =?UTF-8?q?alidation=20=ED=9B=84=20=20alert=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/features/mypage/point-box/PointBox.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/shared/components/features/mypage/point-box/PointBox.tsx b/src/shared/components/features/mypage/point-box/PointBox.tsx index 7c9e667e..27fe7670 100644 --- a/src/shared/components/features/mypage/point-box/PointBox.tsx +++ b/src/shared/components/features/mypage/point-box/PointBox.tsx @@ -25,6 +25,9 @@ const PointBox = ({ isSinitto }: Props) => { chargePointMutation.mutate(parsedAmount); setAmount(''); setActionType(''); + } else { + alert('올바른 포인트를 입력해주세요.'); + setAmount(''); } }; @@ -35,7 +38,11 @@ const PointBox = ({ isSinitto }: Props) => { setAmount(''); setActionType(''); } else { - alert('보유 포인트보다 더 많은 금액을 출금할 수 없습니다.'); + if (parsedAmount <= 0) { + alert('올바른 포인트를 입력해주세요.'); + } else { + alert('보유 포인트보다 더 많은 금액을 출금할 수 없습니다.'); + } setAmount(''); } }; From 5939769b0d8c76a5caab0b8d61b1a7a457d3ff74 Mon Sep 17 00:00:00 2001 From: Dobbymin Date: Fri, 8 Nov 2024 23:21:32 +0900 Subject: [PATCH 003/203] =?UTF-8?q?Fix(sinitto-service-history):=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=ED=99=9C=EC=9A=A9=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=20=EC=A4=91=EB=8B=A8=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service-history/SinittoServiceHistory.tsx | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/pages/sinitto/service-history/SinittoServiceHistory.tsx b/src/pages/sinitto/service-history/SinittoServiceHistory.tsx index b2a77adb..e56aace0 100644 --- a/src/pages/sinitto/service-history/SinittoServiceHistory.tsx +++ b/src/pages/sinitto/service-history/SinittoServiceHistory.tsx @@ -1,5 +1,7 @@ import { useEffect, useState } from 'react'; +import axios from 'axios'; + import { useGetAcceptedCallBackList, useGetApplyHelloCallList } from './api'; import { CallBackServiceList, @@ -11,25 +13,25 @@ import { Spinner } from '@chakra-ui/react'; import styled from '@emotion/styled'; export const SinittoServiceHistoryPage = () => { - const [isDataFetched, setIsDataFetched] = useState(false); + const [isAcceptedError, setIsAcceptedError] = useState(false); + const { data: acceptedCallBackList, isLoading: isAcceptedLoading, - refetch: refetchAccepted, + error: acceptedError, } = useGetAcceptedCallBackList(); + const { data: applyHelloCallList, isLoading: isApplyHelloLoading } = useGetApplyHelloCallList(); useEffect(() => { if ( - !isDataFetched && - (!Array.isArray(acceptedCallBackList) || - acceptedCallBackList.length === 0) + axios.isAxiosError(acceptedError) && + acceptedError.response?.status === 404 ) { - refetchAccepted(); - setIsDataFetched(true); + setIsAcceptedError(true); } - }, [acceptedCallBackList, isDataFetched, refetchAccepted]); + }, [acceptedError]); return ( @@ -43,8 +45,11 @@ export const SinittoServiceHistoryPage = () => { - ) : Array.isArray(acceptedCallBackList) && - acceptedCallBackList.length > 0 ? ( + ) : isAcceptedError ? ( + + 요청한 시니또에 할당된 콜백이 없습니다 + + ) : acceptedCallBackList ? ( Date: Fri, 8 Nov 2024 23:21:47 +0900 Subject: [PATCH 004/203] =?UTF-8?q?chore(favicon):=20=ED=8C=8C=EB=B9=84?= =?UTF-8?q?=EC=BD=98=20=ED=8C=8C=EC=9D=BC=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/favicon.png | Bin 0 -> 43753 bytes public/vite.svg | 1 - 2 files changed, 1 deletion(-) create mode 100644 public/favicon.png delete mode 100644 public/vite.svg diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..5dfba7987734edf8b6aa25f7ce16d37dff5f7fa3 GIT binary patch literal 43753 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ℜRFklP2dwU(P?dK{T-*9u!0UTz1QH%!%2a#aa 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 Y&Qy9Qzu9O6HjM-nU#ZE}$(V)x58svbrT_o{ literal 0 HcmV?d00001 diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb1..00000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From 39c957ef95311eea30c51f6f3dd2892a1916cf6d Mon Sep 17 00:00:00 2001 From: Dobbymin Date: Fri, 8 Nov 2024 23:22:01 +0900 Subject: [PATCH 005/203] =?UTF-8?q?Feat:=20=ED=8C=8C=EB=B9=84=EC=BD=98=20?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=20=EC=A7=80=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index b3b6455a..f0557721 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ - + Sinitto From e297ffb6a1f97580e8638b353088bef28397e465 Mon Sep 17 00:00:00 2001 From: Dobbymin Date: Sat, 9 Nov 2024 00:42:00 +0900 Subject: [PATCH 006/203] =?UTF-8?q?!Hotfix:=20=ED=8C=8C=EB=B9=84=EC=BD=98?= =?UTF-8?q?=20=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index f0557721..9c748899 100644 --- a/index.html +++ b/index.html @@ -2,9 +2,9 @@ - + - Sinitto + 나만의 작은 시니또
From e69302c082fc2da77527f9a912dbf83e42f69a75 Mon Sep 17 00:00:00 2001 From: diwoni <70441308+Diwoni@users.noreply.github.com> Date: Sat, 9 Nov 2024 04:28:26 +0900 Subject: [PATCH 007/203] =?UTF-8?q?Refactor(sinitto-mypage):=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4,=20=EA=B3=84=EC=A2=8C=20=EB=93=B1=EB=A1=9D=20?= =?UTF-8?q?=EB=B0=8F=20=EC=88=98=EC=A0=95=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=20?= =?UTF-8?q?=EC=B6=9C=EA=B8=88=20validation=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account-info-box/AccountInfoBox.tsx | 29 +++++++----- .../profile-box/SinittoProfileBox.tsx | 45 +++++++++++++------ .../features/mypage/point-box/PointBox.tsx | 15 ++++--- .../account-number/validateAccountNumber.ts | 18 ++++++++ src/shared/utils/index.ts | 1 + src/shared/utils/name/index.ts | 1 + src/shared/utils/name/validateName.ts | 7 +++ src/shared/utils/phone-number/index.ts | 1 + .../utils/phone-number/validatePhoneNumber.ts | 7 +++ 9 files changed, 92 insertions(+), 32 deletions(-) create mode 100644 src/shared/utils/account-number/validateAccountNumber.ts create mode 100644 src/shared/utils/name/index.ts create mode 100644 src/shared/utils/name/validateName.ts create mode 100644 src/shared/utils/phone-number/validatePhoneNumber.ts diff --git a/src/pages/sinitto/mypage/components/account-info-box/AccountInfoBox.tsx b/src/pages/sinitto/mypage/components/account-info-box/AccountInfoBox.tsx index 115be20d..ddc61480 100644 --- a/src/pages/sinitto/mypage/components/account-info-box/AccountInfoBox.tsx +++ b/src/pages/sinitto/mypage/components/account-info-box/AccountInfoBox.tsx @@ -6,6 +6,7 @@ import { useRegisterSinittoBankInformation, } from '@/pages'; import { BasicButton } from '@/shared'; +import { validateAccountNumber } from '@/shared/utils/account-number/validateAccountNumber'; import { Text, Button, Input, Flex } from '@chakra-ui/react'; import styled from '@emotion/styled'; @@ -28,15 +29,21 @@ const AccountInfoBox = () => { }, [isEditingAccount, isRegistering, sinittoBankInfo]); const handleSaveClick = () => { - modifyBankInfoMutation.mutate( - { accountNumber, bankName }, - { - onSuccess: () => { - setIsEditingAccount(false); - refetch(); - }, - } - ); + if (validateAccountNumber(accountNumber, bankName)) { + modifyBankInfoMutation.mutate( + { accountNumber, bankName }, + { + onSuccess: () => { + setIsEditingAccount(false); + refetch(); + }, + } + ); + } else { + setAccountNumber(''); + setBankName(''); + return; + } }; const registerBank = () => { @@ -134,10 +141,10 @@ const AccountInfoBox = () => { fontWeight={600} color='var(--color-gray)' > - 계좌 인증 여부 + 계좌 등록 여부 - {sinittoBankInfo?.accountNumber ? '인증 완료' : '인증 미완료'} + {sinittoBankInfo?.accountNumber ? '등록 완료' : '등록 미완료'} diff --git a/src/pages/sinitto/mypage/components/profile-box/SinittoProfileBox.tsx b/src/pages/sinitto/mypage/components/profile-box/SinittoProfileBox.tsx index b9ad5afb..c15eba43 100644 --- a/src/pages/sinitto/mypage/components/profile-box/SinittoProfileBox.tsx +++ b/src/pages/sinitto/mypage/components/profile-box/SinittoProfileBox.tsx @@ -1,7 +1,14 @@ import { useEffect, useState } from 'react'; import { useModifySinittoInformation } from '@/pages'; -import { formatPhoneNumber, Logout, useSinittoInfo } from '@/shared'; +import { + formatPhoneNumber, + Logout, + parsePhoneNumber, + useSinittoInfo, + validatePhoneNumber, + validateName, +} from '@/shared'; import { Box, Text, Button, Input, Flex } from '@chakra-ui/react'; import styled from '@emotion/styled'; @@ -13,9 +20,7 @@ type Props = { const SinittoProfileBox = ({ isEditing, setIsEditing }: Props) => { const [name, setName] = useState(''); const [phoneNumber, setPhoneNumber] = useState(''); - const { data: seniorInfo, refetch } = useSinittoInfo(); - const modifySinittoInfoMutation = useModifySinittoInformation(); useEffect(() => { @@ -26,16 +31,26 @@ const SinittoProfileBox = ({ isEditing, setIsEditing }: Props) => { }, [isEditing, seniorInfo]); const handleSaveClick = () => { - const modifiedSinittoInfo = { - name: name, - phoneNumber: phoneNumber, - }; - modifySinittoInfoMutation.mutate(modifiedSinittoInfo, { - onSuccess: () => { - setIsEditing(false); - refetch(); - }, - }); + console.log(name, phoneNumber); + if (!validateName(name) || !validatePhoneNumber(phoneNumber)) { + alert( + '유효하지 않은 형식입니다.\n예) 이름 : 홍길동\n전화번호 : 010-1234-5678' + ); + setName(''); + setPhoneNumber(''); + return; + } else { + const modifiedSinittoInfo = { + name: name, + phoneNumber: parsePhoneNumber(phoneNumber), + }; + modifySinittoInfoMutation.mutate(modifiedSinittoInfo, { + onSuccess: () => { + setIsEditing(false); + refetch(); + }, + }); + } }; return ( @@ -67,6 +82,7 @@ const SinittoProfileBox = ({ isEditing, setIsEditing }: Props) => { fontSize='16px' fontWeight='bold' value={name} + placeholder='홍길동' onChange={(e) => setName(e.target.value)} width='5rem' height='100%' @@ -98,7 +114,8 @@ const SinittoProfileBox = ({ isEditing, setIsEditing }: Props) => { setPhoneNumber(e.target.value)} width='9rem' height='100%' diff --git a/src/shared/components/features/mypage/point-box/PointBox.tsx b/src/shared/components/features/mypage/point-box/PointBox.tsx index 27fe7670..9b2cca73 100644 --- a/src/shared/components/features/mypage/point-box/PointBox.tsx +++ b/src/shared/components/features/mypage/point-box/PointBox.tsx @@ -33,17 +33,18 @@ const PointBox = ({ isSinitto }: Props) => { const handleWithdrawButtonClick = () => { const parsedAmount = Number(amount); - if (parsedAmount > 0 && parsedAmount <= Number(pointData?.price)) { - withdrawPointMutation.mutate(parsedAmount); + if (parsedAmount < 5000) { + alert('포인트 출금은 5,000포인트 이상부터 가능합니다.'); setAmount(''); - setActionType(''); } else { - if (parsedAmount <= 0) { - alert('올바른 포인트를 입력해주세요.'); + if (parsedAmount <= Number(pointData?.price)) { + withdrawPointMutation.mutate(parsedAmount); + setAmount(''); + setActionType(''); } else { - alert('보유 포인트보다 더 많은 금액을 출금할 수 없습니다.'); + alert('보유 포인트보다 더 많이 출금할 수 없습니다.'); + setAmount(''); } - setAmount(''); } }; diff --git a/src/shared/utils/account-number/validateAccountNumber.ts b/src/shared/utils/account-number/validateAccountNumber.ts new file mode 100644 index 00000000..2be0f546 --- /dev/null +++ b/src/shared/utils/account-number/validateAccountNumber.ts @@ -0,0 +1,18 @@ +export const validateAccountNumber = ( + accountNumber: string, + bankName: string +) => { + if (!accountNumber.trim() || !bankName.trim()) { + alert('은행 정보와 계좌번호를 기입해주세요.'); + return false; + } + if (!/^[0-9-]+$/.test(accountNumber)) { + alert('계좌번호는 숫자나 "-"로만 작성되어야합니다.'); + return false; + } + if (!/^[a-zA-Z가-힣]+$/.test(bankName)) { + alert('은행 명을 올바르게 기입해주세요.(영어,한글)'); + return false; + } + return true; +}; diff --git a/src/shared/utils/index.ts b/src/shared/utils/index.ts index faed5c79..2f2f46b7 100644 --- a/src/shared/utils/index.ts +++ b/src/shared/utils/index.ts @@ -2,3 +2,4 @@ export { handleCallbackError } from './handle-callback-error'; export * from './storage'; export * from './phone-number'; +export * from './name'; diff --git a/src/shared/utils/name/index.ts b/src/shared/utils/name/index.ts new file mode 100644 index 00000000..4d004c9d --- /dev/null +++ b/src/shared/utils/name/index.ts @@ -0,0 +1 @@ +export { validateName } from './validateName'; diff --git a/src/shared/utils/name/validateName.ts b/src/shared/utils/name/validateName.ts new file mode 100644 index 00000000..16579489 --- /dev/null +++ b/src/shared/utils/name/validateName.ts @@ -0,0 +1,7 @@ +export const validateName = (name: string) => { + const nameRegex = /^[가-힣a-zA-Z]{1,10}$/; + if (!name.trim() || !nameRegex.test(name)) { + return false; + } + return true; +}; diff --git a/src/shared/utils/phone-number/index.ts b/src/shared/utils/phone-number/index.ts index 48b86920..a904c449 100644 --- a/src/shared/utils/phone-number/index.ts +++ b/src/shared/utils/phone-number/index.ts @@ -1 +1,2 @@ export { formatPhoneNumber, parsePhoneNumber } from './formatPhoneNumber'; +export { validatePhoneNumber } from './validatePhoneNumber'; diff --git a/src/shared/utils/phone-number/validatePhoneNumber.ts b/src/shared/utils/phone-number/validatePhoneNumber.ts new file mode 100644 index 00000000..4e3ccb27 --- /dev/null +++ b/src/shared/utils/phone-number/validatePhoneNumber.ts @@ -0,0 +1,7 @@ +export const validatePhoneNumber = (phoneNumber: string) => { + const phoneRegex = /^010-\d{4}-\d{4}$/; + if (!phoneNumber.trim() || !phoneRegex.test(phoneNumber)) { + return false; + } + return true; +}; From f0d4c4e67fd11b17b003fab085ac669c1afbeae3 Mon Sep 17 00:00:00 2001 From: diwoni <70441308+Diwoni@users.noreply.github.com> Date: Sat, 9 Nov 2024 04:33:11 +0900 Subject: [PATCH 008/203] =?UTF-8?q?Style(sinitto-mypage):=20=EA=B3=84?= =?UTF-8?q?=EC=A2=8C=20=EC=A0=95=EB=B3=B4=20Box=20=EB=86=92=EC=9D=B4=20?= =?UTF-8?q?=EC=9D=BC=EA=B4=80=EC=84=B1=20=EC=9C=A0=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mypage/components/account-info-box/AccountInfoBox.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/sinitto/mypage/components/account-info-box/AccountInfoBox.tsx b/src/pages/sinitto/mypage/components/account-info-box/AccountInfoBox.tsx index ddc61480..0f54221a 100644 --- a/src/pages/sinitto/mypage/components/account-info-box/AccountInfoBox.tsx +++ b/src/pages/sinitto/mypage/components/account-info-box/AccountInfoBox.tsx @@ -178,7 +178,7 @@ const AccountInfoBox = () => { setIsRegistering(true)} > 계좌번호 등록하기 @@ -214,7 +214,7 @@ const AccountInfoBox = () => { setIsEditingAccount(true)} > 계좌번호 수정하기 From df356d68799780952daec5bac71213a51a429b79 Mon Sep 17 00:00:00 2001 From: diwoni <70441308+Diwoni@users.noreply.github.com> Date: Sat, 9 Nov 2024 04:52:16 +0900 Subject: [PATCH 009/203] =?UTF-8?q?Style(guard-mypage):=20=ED=8F=AC?= =?UTF-8?q?=EC=9D=B8=ED=8A=B8=20=EC=B6=A9=EC=A0=84=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EB=AC=B8=EA=B5=AC=20=EB=B0=8F=20alert=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shared/assets/index.ts | 1 + src/shared/assets/mail-icon.svg | 4 ++ .../features/mypage/point-box/PointBox.tsx | 46 +++++++++++++------ src/shared/hooks/point/useChargePoint.ts | 4 +- 4 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 src/shared/assets/mail-icon.svg diff --git a/src/shared/assets/index.ts b/src/shared/assets/index.ts index 64779f3f..c04636e6 100644 --- a/src/shared/assets/index.ts +++ b/src/shared/assets/index.ts @@ -1,3 +1,4 @@ export { default as deleteIcon } from './delete-icon.svg'; export { default as editIcon } from './edit-icon.svg'; export { default as arrowIcon } from './arrow-icon.svg'; +export { default as mailIcon } from './mail-icon.svg'; diff --git a/src/shared/assets/mail-icon.svg b/src/shared/assets/mail-icon.svg new file mode 100644 index 00000000..b6c1ce01 --- /dev/null +++ b/src/shared/assets/mail-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/shared/components/features/mypage/point-box/PointBox.tsx b/src/shared/components/features/mypage/point-box/PointBox.tsx index 9b2cca73..6683bd0a 100644 --- a/src/shared/components/features/mypage/point-box/PointBox.tsx +++ b/src/shared/components/features/mypage/point-box/PointBox.tsx @@ -1,11 +1,20 @@ import { useState } from 'react'; +import { mailIcon } from '@/shared/assets'; import { useChargePoint, useGetPointInfo, useWithdrawPoint, } from '@/shared/hooks'; -import { Box, Spinner, Button, Input } from '@chakra-ui/react'; +import { + Box, + Flex, + Spinner, + Text, + Button, + Input, + Image, +} from '@chakra-ui/react'; import styled from '@emotion/styled'; type Props = { @@ -96,7 +105,7 @@ const PointBox = ({ isSinitto }: Props) => { type='number' min='1' /> - +