From 7967e16198ca22e1d1626ea13b01031c12f02f24 Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Thu, 1 May 2025 22:08:46 +0900 Subject: [PATCH 01/12] =?UTF-8?q?refactor(js):=20validators.js=EC=9D=98=20?= =?UTF-8?q?return=20=EA=B5=AC=EC=A1=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- login.html | 2 + scripts/auth/form_signup.js | 6 ++- scripts/auth/modules/formEventHandler.js | 60 +++++++++++------------- scripts/auth/modules/validators.js | 58 +++++++++++++++++------ scripts/auth/test.js | 3 ++ signup.html | 3 ++ 6 files changed, 84 insertions(+), 48 deletions(-) create mode 100644 scripts/auth/test.js diff --git a/login.html b/login.html index 068138c0..20366968 100644 --- a/login.html +++ b/login.html @@ -40,6 +40,7 @@ class="form-input" name="email" autocomplete="email" + type="email" aria-label="이메일 입력 칸" placeholder="이메일을 입력해주세요" /> @@ -53,6 +54,7 @@ { + //prettier-ignore + const passwordVerifyText = form.querySelector('#passwordVerify .form-input').value; + return validators.password(passwordText, passwordVerifyText); + }, passwordVerify: (passwordVerifyText) => { const passwordText = form.querySelector('#password .form-input').value; return validators.passwordVerify(passwordVerifyText, passwordText); diff --git a/scripts/auth/modules/formEventHandler.js b/scripts/auth/modules/formEventHandler.js index 42cb6482..5359072e 100644 --- a/scripts/auth/modules/formEventHandler.js +++ b/scripts/auth/modules/formEventHandler.js @@ -8,10 +8,9 @@ export const formEventHandler = ({ const onInputFocusOut = (stateKey) => { const validResult = getValidResult(stateKey); - setState(stateKey, validResult); - updateUIByState(stateKey, validResult); + setState(validResult); + updateUIByState(validResult); updateButtonState(); - updatePasswordVerify(stateKey); }; const getValidResult = (stateKey) => { @@ -20,24 +19,32 @@ export const formEventHandler = ({ return validtorFunction(inputText); }; - const setState = (stateKey, validResult) => { - inputState.set(stateKey, validResult.isValid); + const setState = (validResult) => { + for (const stateKey in validResult) { + if (inputState.get(stateKey) !== undefined) { + inputState.set(stateKey, validResult[stateKey].isValid); + } + } }; - const updateUIByState = (stateKey, validResult) => { - //prettier-ignore - const inputContainerElement = form.querySelector(`#${stateKey} .form-input-container`); - //prettier-ignore - const spanStateElement = form.querySelector(`#${stateKey} .form-status-info`); - spanStateElement.textContent = validResult.message; - if (validResult.isValid) { - inputContainerElement.classList.add('valid'); - inputContainerElement.classList.remove('inValid'); - spanStateElement.classList.add('hidden'); - } else { - inputContainerElement.classList.add('inValid'); - inputContainerElement.classList.remove('valid'); - spanStateElement.classList.remove('hidden'); + const updateUIByState = (validResult) => { + for (const stateKey in validResult) { + if (inputState.get(stateKey) !== undefined) { + //prettier-ignore + const inputContainerElement = form.querySelector(`#${stateKey} .form-input-container`); + //prettier-ignore + const spanStateElement = form.querySelector(`#${stateKey} .form-status-info`); + spanStateElement.textContent = validResult[stateKey].message; + if (validResult[stateKey].isValid) { + inputContainerElement.classList.add('valid'); + inputContainerElement.classList.remove('inValid'); + spanStateElement.classList.add('hidden'); + } else { + inputContainerElement.classList.add('inValid'); + inputContainerElement.classList.remove('valid'); + spanStateElement.classList.remove('hidden'); + } + } } }; @@ -46,15 +53,6 @@ export const formEventHandler = ({ buttonElement.disabled = ![...inputState.values()].every((isValid) => isValid); }; - const updatePasswordVerify = (stateKey) => { - if ( - stateKey === 'password' && - inputState.get('passwordVerify') !== undefined && - inputState.get('passwordVerify') !== null - ) - onInputFocusOut('passwordVerify'); - }; - const onButtonClick = (e) => { e.preventDefault(); location.href = onButtonRedirectUrl; @@ -74,10 +72,8 @@ export const formEventHandler = ({ for (const stateKey in fieldMap) { const inputElement = form.querySelector(`#${stateKey} .form-input`); inputElement.addEventListener('focusout', () => onInputFocusOut(stateKey)); - - const passwordIconElement = form.querySelector( - `#${stateKey} .form-icon-password` - ); + //prettier-ignore + const passwordIconElement = form.querySelector(`#${stateKey} .form-icon-password`); if (passwordIconElement) { passwordIconElement.addEventListener('click', (e) => onPasswordIconToggle(stateKey, e) diff --git a/scripts/auth/modules/validators.js b/scripts/auth/modules/validators.js index c5cbbb00..e28481e7 100644 --- a/scripts/auth/modules/validators.js +++ b/scripts/auth/modules/validators.js @@ -1,27 +1,55 @@ export const validators = { email: (emailText) => { - //prettier-ignore - const emailRegex = new RegExp(/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i); - if (!emailText) return { isValid: false, message: '이메일을 입력해주세요' }; - if (emailRegex.test(emailText)) return { isValid: true, message: '' }; - else return { isValid: false, message: '잘못된 이메일 형식입니다' }; + if (!emailText) + return { email: { isValid: false, message: '이메일을 입력해주세요' } }; + const emailRegex = + /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i; + if (!emailRegex.test(emailText)) + return { email: { isValid: false, message: '잘못된 이메일 형식입니다' } }; + else return { email: { isValid: true, message: '' } }; }, nickname: (nicknameText) => { - if (nicknameText) return { isValid: true, message: '' }; - else return { isValid: false, message: '닉네임을 입력해주세요' }; + if (!nicknameText) + return { nickname: { isValid: false, message: '닉네임을 입력해주세요' } }; + else return { nickname: { isValid: true, message: '' } }; }, - password: (passwordText) => { + password: (passwordText, passwordVerifyText = passwordText) => { + if (!passwordText) + //prettier-ignore + return { password: { isValid: false, message: '비밀번호를 입력해주세요' }}; if (passwordText.length < 8) - return { isValid: false, message: '비밀번호를 8자 이상 입력해주세요' }; - else if (passwordText.length >= 8) return { isValid: true, message: '' }; + //prettier-ignore + return { password: { isValid: false, message: '비밀번호를 8자 이상 입력해주세요' }}; + else if (passwordText.length >= 8) { + if (passwordVerifyText === '') { + return { password: { isValid: true, message: '' } }; + } + if (passwordText !== passwordVerifyText) { + return { + password: { isValid: true, message: '' }, + //prettier-ignore + passwordVerify: { isValid: false, message: '비밀번호가 일치하지 않습니다' }, + }; + } else if (passwordText === passwordVerifyText) { + return { + password: { isValid: true, message: '' }, + passwordVerify: { isValid: true, message: '' }, + }; + } + } }, passwordVerify: (passwordVerifyText, passwordText) => { - if (passwordVerifyText.length < 8) - return { isValid: false, message: '비밀번호를 8자 이상 입력해주세요' }; + if (!passwordVerifyText) + //prettier-ignore + return { passwordVerify: { isValid: false, message: '비밀번호를 입력해주세요' }}; + else if (passwordVerifyText.length < 8) + //prettier-ignore + return { passwordVerify: { isValid: false, message: '비밀번호 8자 이상 입력해주세요' }}; else if (passwordVerifyText.length >= 8) { - if (passwordVerifyText === passwordText) - return { isValid: true, message: '' }; - else return { isValid: false, message: '비밀번호가 일치하지 않습니다' }; + if (passwordVerifyText !== passwordText) + //prettier-ignore + return { passwordVerify: { isValid: false, message: '비밀번호가 일치하지 않습니다' }}; + else return { passwordVerify: { isValid: true, message: '' } }; } }, }; diff --git a/scripts/auth/test.js b/scripts/auth/test.js new file mode 100644 index 00000000..32ce9084 --- /dev/null +++ b/scripts/auth/test.js @@ -0,0 +1,3 @@ +const a = new Map([['a', 1]]); + +console.log(a.get('b')); diff --git a/signup.html b/signup.html index 6cfc00ec..70347f9d 100644 --- a/signup.html +++ b/signup.html @@ -39,6 +39,7 @@ class="form-input" name="email" autocomplete="email" + type="email" aria-label="이메일 입력 칸" placeholder="이메일을 입력해주세요" /> @@ -63,6 +64,7 @@ Date: Thu, 8 May 2025 23:11:27 +0900 Subject: [PATCH 02/12] =?UTF-8?q?feat:=20mission5=20=EC=B4=88=EC=95=88=20?= =?UTF-8?q?=EC=9E=91=EC=97=85=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 24 + README.md | 12 + eslint.config.js | 33 + images/Img_home_01.png | Bin 13657 -> 0 bytes images/Img_home_02.png | Bin 27709 -> 0 bytes images/Img_home_03.png | Bin 10603 -> 0 bytes images/Img_home_bottom.png | Bin 66759 -> 0 bytes images/Img_home_top.png | Bin 56925 -> 0 bytes index.html | 231 +- items.html | 21 - login.html | 111 - package-lock.json | 2926 +++++++++++++++++ package.json | 30 + .../images}/Img_home_01/Img_home_01@0.5x.png | Bin .../images}/Img_home_01/Img_home_01@1.5x.png | Bin .../images}/Img_home_01/Img_home_01@1x.png | Bin .../images}/Img_home_01/Img_home_01@2x.png | Bin .../images}/Img_home_02/Img_home_02@0.5x.png | Bin .../images}/Img_home_02/Img_home_02@1.5x.png | Bin .../images}/Img_home_02/Img_home_02@1x.png | Bin .../images}/Img_home_02/Img_home_02@2x.png | Bin .../images}/Img_home_03/Img_home_03@0.5x.png | Bin .../images}/Img_home_03/Img_home_03@1.5x.png | Bin .../images}/Img_home_03/Img_home_03@1x.png | Bin .../images}/Img_home_03/Img_home_03@2x.png | Bin .../Img_home_bottom/Img_home_bottom@0.5x.png | Bin .../Img_home_bottom/Img_home_bottom@1.5x.png | Bin .../Img_home_bottom/Img_home_bottom@1x.png | Bin .../Img_home_bottom/Img_home_bottom@2x.png | Bin .../Img_home_top/Img_home_top@0.5x.png | Bin .../Img_home_top/Img_home_top@1.5x.png | Bin .../images}/Img_home_top/Img_home_top@1x.png | Bin .../images}/Img_home_top/Img_home_top@2x.png | Bin .../images/Img_logo.png | Bin {images => public/images}/Img_openGraph.png | Bin public/images/ic_arrow_down.png | Bin 0 -> 718 bytes {images => public/images}/ic_facebook.png | Bin {images => public/images}/ic_instagram.png | Bin public/images/ic_nextPageClick_active.png | Bin 0 -> 285 bytes public/images/ic_nextPageClick_inactive.png | Bin 0 -> 283 bytes public/images/ic_prevPageClick_active.png | Bin 0 -> 301 bytes public/images/ic_prevPageClick_inactive.png | Bin 0 -> 282 bytes public/images/ic_search.png | Bin 0 -> 500 bytes public/images/ic_sort.png | Bin 0 -> 544 bytes {images => public/images}/ic_twitter.png | Bin {images => public/images}/ic_youtube.png | Bin {images => public/images}/icon_google.png | Bin {images => public/images}/icon_kakao.png | Bin .../images}/icon_password_invisible.png | Bin .../images}/icon_password_visible.png | Bin public/images/icon_profile.png | Bin 0 -> 1353 bytes public/images/img_favorite_inactive.png | Bin 0 -> 874 bytes scripts/auth/form_login.js | 20 - scripts/auth/form_signup.js | 30 - scripts/auth/modules/formEventHandler.js | 84 - scripts/auth/test.js | 3 - scripts/package.json | 3 - signup.html | 139 - src/App.jsx | 24 + src/apis/api.js | 17 + {styles => src}/common.css | 61 +- .../fonts}/rokafsansmedium-normal.woff | Bin src/hooks/useFormFields.jsx | 87 + src/main.jsx | 4 + src/pages/Auth/Field.jsx | 58 + src/pages/Auth/FormAuth.css | 165 + src/pages/Auth/Login.jsx | 119 + src/pages/Auth/Signup.jsx | 152 + .../pages/Auth}/modules/validators.js | 5 +- src/pages/Auth/test.js | 6 + src/pages/Faq/Faq.jsx | 5 + src/pages/Home/Banner.css | 77 + src/pages/Home/BannerBottom.css | 28 + src/pages/Home/Card.css | 117 + src/pages/Home/Cards.css | 38 + src/pages/Home/Footer.css | 64 + src/pages/Home/Header.css | 59 + src/pages/Home/Home.css | 0 src/pages/Home/Home.jsx | 186 ++ src/pages/Home/Main.css | 13 + src/pages/Items/Header.css | 75 + src/pages/Items/Items.css | 291 ++ src/pages/Items/Items.jsx | 253 ++ src/pages/Items/debounce.js | 10 + src/pages/Items/mockItems.json | 140 + src/pages/Privacy/Privacy.jsx | 5 + src/reset.css | 129 + styles/auth-form-style.css | 176 - styles/index-style.css | 392 --- styles/reset.css | 23 - vite.config.js | 7 + 91 files changed, 5181 insertions(+), 1272 deletions(-) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 eslint.config.js delete mode 100644 images/Img_home_01.png delete mode 100644 images/Img_home_02.png delete mode 100644 images/Img_home_03.png delete mode 100644 images/Img_home_bottom.png delete mode 100644 images/Img_home_top.png delete mode 100644 items.html delete mode 100644 login.html create mode 100644 package-lock.json create mode 100644 package.json rename {images => public/images}/Img_home_01/Img_home_01@0.5x.png (100%) rename {images => public/images}/Img_home_01/Img_home_01@1.5x.png (100%) rename {images => public/images}/Img_home_01/Img_home_01@1x.png (100%) rename {images => public/images}/Img_home_01/Img_home_01@2x.png (100%) rename {images => public/images}/Img_home_02/Img_home_02@0.5x.png (100%) rename {images => public/images}/Img_home_02/Img_home_02@1.5x.png (100%) rename {images => public/images}/Img_home_02/Img_home_02@1x.png (100%) rename {images => public/images}/Img_home_02/Img_home_02@2x.png (100%) rename {images => public/images}/Img_home_03/Img_home_03@0.5x.png (100%) rename {images => public/images}/Img_home_03/Img_home_03@1.5x.png (100%) rename {images => public/images}/Img_home_03/Img_home_03@1x.png (100%) rename {images => public/images}/Img_home_03/Img_home_03@2x.png (100%) rename {images => public/images}/Img_home_bottom/Img_home_bottom@0.5x.png (100%) rename {images => public/images}/Img_home_bottom/Img_home_bottom@1.5x.png (100%) rename {images => public/images}/Img_home_bottom/Img_home_bottom@1x.png (100%) rename {images => public/images}/Img_home_bottom/Img_home_bottom@2x.png (100%) rename {images => public/images}/Img_home_top/Img_home_top@0.5x.png (100%) rename {images => public/images}/Img_home_top/Img_home_top@1.5x.png (100%) rename {images => public/images}/Img_home_top/Img_home_top@1x.png (100%) rename {images => public/images}/Img_home_top/Img_home_top@2x.png (100%) rename "images/\355\214\220\353\213\244 \354\226\274\352\265\264.png" => public/images/Img_logo.png (100%) rename {images => public/images}/Img_openGraph.png (100%) create mode 100644 public/images/ic_arrow_down.png rename {images => public/images}/ic_facebook.png (100%) rename {images => public/images}/ic_instagram.png (100%) create mode 100644 public/images/ic_nextPageClick_active.png create mode 100644 public/images/ic_nextPageClick_inactive.png create mode 100644 public/images/ic_prevPageClick_active.png create mode 100644 public/images/ic_prevPageClick_inactive.png create mode 100644 public/images/ic_search.png create mode 100644 public/images/ic_sort.png rename {images => public/images}/ic_twitter.png (100%) rename {images => public/images}/ic_youtube.png (100%) rename {images => public/images}/icon_google.png (100%) rename {images => public/images}/icon_kakao.png (100%) rename {images => public/images}/icon_password_invisible.png (100%) rename {images => public/images}/icon_password_visible.png (100%) create mode 100644 public/images/icon_profile.png create mode 100644 public/images/img_favorite_inactive.png delete mode 100644 scripts/auth/form_login.js delete mode 100644 scripts/auth/form_signup.js delete mode 100644 scripts/auth/modules/formEventHandler.js delete mode 100644 scripts/auth/test.js delete mode 100644 scripts/package.json delete mode 100644 signup.html create mode 100644 src/App.jsx create mode 100644 src/apis/api.js rename {styles => src}/common.css (54%) rename {fonts => src/fonts}/rokafsansmedium-normal.woff (100%) create mode 100644 src/hooks/useFormFields.jsx create mode 100644 src/main.jsx create mode 100644 src/pages/Auth/Field.jsx create mode 100644 src/pages/Auth/FormAuth.css create mode 100644 src/pages/Auth/Login.jsx create mode 100644 src/pages/Auth/Signup.jsx rename {scripts/auth => src/pages/Auth}/modules/validators.js (95%) create mode 100644 src/pages/Auth/test.js create mode 100644 src/pages/Faq/Faq.jsx create mode 100644 src/pages/Home/Banner.css create mode 100644 src/pages/Home/BannerBottom.css create mode 100644 src/pages/Home/Card.css create mode 100644 src/pages/Home/Cards.css create mode 100644 src/pages/Home/Footer.css create mode 100644 src/pages/Home/Header.css create mode 100644 src/pages/Home/Home.css create mode 100644 src/pages/Home/Home.jsx create mode 100644 src/pages/Home/Main.css create mode 100644 src/pages/Items/Header.css create mode 100644 src/pages/Items/Items.css create mode 100644 src/pages/Items/Items.jsx create mode 100644 src/pages/Items/debounce.js create mode 100644 src/pages/Items/mockItems.json create mode 100644 src/pages/Privacy/Privacy.jsx create mode 100644 src/reset.css delete mode 100644 styles/auth-form-style.css delete mode 100644 styles/index-style.css delete mode 100644 styles/reset.css create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md new file mode 100644 index 00000000..7059a962 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# React + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..ec2b712d --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,33 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...reactHooks.configs.recommended.rules, + 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/images/Img_home_01.png b/images/Img_home_01.png deleted file mode 100644 index f496ba4cad2ee7dcc21506c1ebc81d5164281c3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13657 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 diff --git a/images/Img_home_02.png b/images/Img_home_02.png deleted file mode 100644 index 1f3b1b838016e88009d40581064a517e15c18c6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27709 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
FM8s|N znp(|hio_a|21~+bkJiN~-n%_K1HgaRGk7Jk{)YW(ozYj7_fHIwJiY|MzB$kldn)if zX-XNZYF7P>CXb?eAcp-l9#xr%v2e4yzyXmZt~#Q^T8X7BXM@VaV184ty^0dg($%$} zs>jk9ZRZpm)1jWsrg+u8O69fuMbZt)VGZSub7CJqn_8jw{Lr_KG{CfK@`WUqEk@k$M5J4jTa zkL?mdo_4fuf6~$zSq;6i4B_2jL5S7GS<%VpyqQ@1ZW2}}i+Jy|Qamj+wqU672 zn{Bwe6L<0bONFIy3J7TR?~CnjVeTIu>V9AW)ywy}?xjJ1)7}~szJc%FSDt;h_x<;8 zkv1XCdT20L)UkVG(lfd)5eKq95&o&g^7t4SG1Z1wc14Sav?}X{ptrl;s|n{BLBY0y zyozs&I?BXQ@SVwZpTX&1bPf0R>M8l+(Zby`&jUx$w;jryoA3J9rdPe14}8r%S|qHt z7&q8}TMqNHb-b*%(dGXHx%<@$h$=HS>Ymoc4~dV|P?L_Jp1DeYXhKphXPDp|7;E~p9LCu-}8wDlQ|Vw=yqxV!a44Gh|D*#m(8754WWHhUe4 zjE;ikmF)J({~$0Br_&yZbFtBq>yo!);mPb&i$;s<3M*K|$EF&01SNqPNXy~pe{!Kss%RRDJhvQM9P=mi^ZRXsfw^0|6N%qzbu<+3E-9 zT>z?Cl9IjgkQ^oI1Kxd?7NCUxfQ3iU=Vxia*1S2pMn&P{5D0t0DWT-3zRyJQ&Cy)m z2f%9sBrfPDn$u|-vSE+Cer;`GFU^zJuqmbPF5G;ccBpQH^rRx8Sxz{cH2JbG&o=p03YfPxNa@SvaOk2e7@OCZ1Z zxxi5V@0L=(uQzrU#yPN*4gyWX@3$uc#=ctkKaMd$Al|3Io_GKDyz-<^zQ6B|#QdfA z_?Y}6DoC<+-nG`!+uiX42jM(sUa?MX##5xaiweS11PTJ4)Uv-Ha47)p1cBIJ0ge5U z%>y<9-N@ZzU4z*9gBj|k0i`hLm*kTy40f|e8|_Dclfr=TNgxnZ4KUXT(At7PBw)Y* zVYdsKC)3!E2GzZp0mQPEt=?a^2HQ#j`~bK_e}kkdV|;`8&=Vo8e^*kjv>o~T0AN}q z{|e4BPs=ga?h0pH3_$6FKsS*Kp?MEyLuvSa3;#QGbxUH>KYK9;MGZS1Bb>m9$N3VLpBMM%)9Pj}w-r9(;mGr0(^JM>`zYY0or@SRvlscAkPd$AvYivv|8IjRBBr zOGC=~ztR$LT5G(K1DZPKOfTa%Jhn4~(p@f(O!ZsQC+<)u(#kMtpe&E2qxm6WjG3OR mvcvii*UbSDQVkr7(}!mYsyNx?Wf6yuhsa7QNtB8i`2Qb3Qy_8x diff --git a/images/Img_home_03.png b/images/Img_home_03.png deleted file mode 100644 index eb0d6cd26735e4a465727b00c6831eb8842a5a52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10603 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%0A$I?G*PN(%!C~#aiB=%UQT! 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 Yw&}~~c2mJYr)ZDfLnEzHP5X%d1DQ- - - - - - - - - 판다 마켓 + Vite + React + + - -
-
-
-
-

일상의 모든 물건을 거래해보세요

- 구경하러 가기 - -
-
- 홈페이지를 소개하고 있는 그림 -
-
-
-
-
- - 가장 HOT한 중고거래 물품을 판다마켓에서 확인해보세요 -
-

Hot item

-

인기 상품을 확인해 보세요

-

- 가장 HOT한 중고거래 물품을
- 판다 마켓에서 확인해보세요 -

-
-
-
- 구매하고 싶은 물품은 검색해서 쉽게 찾아보세요 -
-

Search

-

구매를 원하는 상품을 검색하세요

-

- 구매하고 싶은 물품은 검색해서
- 쉽게 찾아보세요 -

-
-
-
- 어떤 물건이든 판매하고 싶은 상품을 쉽게 등록하세요 -
-

Register

-

판매를 원하는 상품을 등록하세요

-

- 어떤 물건이든 판매하고 싶은 상품을
- 쉽게 등록하세요 -

-
-
-
- -
- +
+ diff --git a/items.html b/items.html deleted file mode 100644 index 4e741baf..00000000 --- a/items.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - 판다 마켓 - 로그인 - - - diff --git a/login.html b/login.html deleted file mode 100644 index 20366968..00000000 --- a/login.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - 판다 마켓 - 로그인 - - - - 판다마켓 로고 - 판다마켓 - -
- - - - - - - 판다마켓이 처음이신가요? - 회원가입 - -
- - - diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..80568c27 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2926 @@ +{ + "name": "mission5", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "mission5", + "version": "0.0.0", + "dependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-responsive": "^10.0.1", + "react-router": "^7.5.3", + "react-router-dom": "^7.5.3" + }, + "devDependencies": { + "@eslint/js": "^9.22.0", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.22.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "vite": "^6.3.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz", + "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz", + "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz", + "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz", + "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz", + "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz", + "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz", + "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz", + "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz", + "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz", + "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz", + "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz", + "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz", + "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz", + "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz", + "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz", + "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz", + "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz", + "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz", + "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz", + "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz", + "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz", + "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz", + "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz", + "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz", + "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", + "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz", + "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz", + "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.13.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz", + "integrity": "sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.1.tgz", + "integrity": "sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.1.tgz", + "integrity": "sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.1.tgz", + "integrity": "sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.1.tgz", + "integrity": "sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.1.tgz", + "integrity": "sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.1.tgz", + "integrity": "sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.1.tgz", + "integrity": "sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.1.tgz", + "integrity": "sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.1.tgz", + "integrity": "sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.1.tgz", + "integrity": "sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.1.tgz", + "integrity": "sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.1.tgz", + "integrity": "sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.1.tgz", + "integrity": "sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.1.tgz", + "integrity": "sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.1.tgz", + "integrity": "sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.1.tgz", + "integrity": "sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.1.tgz", + "integrity": "sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.1.tgz", + "integrity": "sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.1.tgz", + "integrity": "sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.1.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.2.tgz", + "integrity": "sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.1.2", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.2.tgz", + "integrity": "sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz", + "integrity": "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.10", + "@babel/plugin-transform-react-jsx-self": "^7.25.9", + "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001715", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz", + "integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-mediaquery": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", + "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==", + "license": "BSD" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.144", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.144.tgz", + "integrity": "sha512-eJIaMRKeAzxfBSxtjYnoIAw/tdD6VIH6tHBZepZnAbE3Gyqqs5mGN87DvcldPUbVkIljTK8pY0CMcUljP64lfQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz", + "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.3", + "@esbuild/android-arm": "0.25.3", + "@esbuild/android-arm64": "0.25.3", + "@esbuild/android-x64": "0.25.3", + "@esbuild/darwin-arm64": "0.25.3", + "@esbuild/darwin-x64": "0.25.3", + "@esbuild/freebsd-arm64": "0.25.3", + "@esbuild/freebsd-x64": "0.25.3", + "@esbuild/linux-arm": "0.25.3", + "@esbuild/linux-arm64": "0.25.3", + "@esbuild/linux-ia32": "0.25.3", + "@esbuild/linux-loong64": "0.25.3", + "@esbuild/linux-mips64el": "0.25.3", + "@esbuild/linux-ppc64": "0.25.3", + "@esbuild/linux-riscv64": "0.25.3", + "@esbuild/linux-s390x": "0.25.3", + "@esbuild/linux-x64": "0.25.3", + "@esbuild/netbsd-arm64": "0.25.3", + "@esbuild/netbsd-x64": "0.25.3", + "@esbuild/openbsd-arm64": "0.25.3", + "@esbuild/openbsd-x64": "0.25.3", + "@esbuild/sunos-x64": "0.25.3", + "@esbuild/win32-arm64": "0.25.3", + "@esbuild/win32-ia32": "0.25.3", + "@esbuild/win32-x64": "0.25.3" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", + "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.13.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.25.1", + "@eslint/plugin-kit": "^0.2.8", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/matchmediaquery": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.4.2.tgz", + "integrity": "sha512-wrZpoT50ehYOudhDjt/YvUJc6eUzcdFPdmbizfgvswCKNHD1/OBOHYJpHie+HXpu6bSkEGieFMYk6VuutaiRfA==", + "license": "MIT", + "dependencies": { + "css-mediaquery": "^0.1.2" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-responsive": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-10.0.1.tgz", + "integrity": "sha512-OM5/cRvbtUWEX8le8RCT8scA8y2OPtb0Q/IViEyCEM5FBN8lRrkUOZnu87I88A6njxDldvxG+rLBxWiA7/UM9g==", + "license": "MIT", + "dependencies": { + "hyphenate-style-name": "^1.0.0", + "matchmediaquery": "^0.4.2", + "prop-types": "^15.6.1", + "shallow-equal": "^3.1.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/react-router": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.5.3.tgz", + "integrity": "sha512-3iUDM4/fZCQ89SXlDa+Ph3MevBrozBAI655OAfWQlTm9nBR0IKlrmNwFow5lPHttbwvITZfkeeeZFP6zt3F7pw==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.5.3.tgz", + "integrity": "sha512-cK0jSaTyW4jV9SRKAItMIQfWZ/D6WEZafgHuuCb9g+SjhLolY78qc+De4w/Cz9ybjvLzShAmaIMEXt8iF1Cm+A==", + "license": "MIT", + "dependencies": { + "react-router": "7.5.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.40.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.1.tgz", + "integrity": "sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.40.1", + "@rollup/rollup-android-arm64": "4.40.1", + "@rollup/rollup-darwin-arm64": "4.40.1", + "@rollup/rollup-darwin-x64": "4.40.1", + "@rollup/rollup-freebsd-arm64": "4.40.1", + "@rollup/rollup-freebsd-x64": "4.40.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.1", + "@rollup/rollup-linux-arm-musleabihf": "4.40.1", + "@rollup/rollup-linux-arm64-gnu": "4.40.1", + "@rollup/rollup-linux-arm64-musl": "4.40.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.1", + "@rollup/rollup-linux-riscv64-gnu": "4.40.1", + "@rollup/rollup-linux-riscv64-musl": "4.40.1", + "@rollup/rollup-linux-s390x-gnu": "4.40.1", + "@rollup/rollup-linux-x64-gnu": "4.40.1", + "@rollup/rollup-linux-x64-musl": "4.40.1", + "@rollup/rollup-win32-arm64-msvc": "4.40.1", + "@rollup/rollup-win32-ia32-msvc": "4.40.1", + "@rollup/rollup-win32-x64-msvc": "4.40.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, + "node_modules/shallow-equal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-3.1.0.tgz", + "integrity": "sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", + "license": "ISC" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.3.tgz", + "integrity": "sha512-5nXH+QsELbFKhsEfWLkHrvgRpTdGJzqOZ+utSdmPTvwHmvU6ITTm3xx+mRusihkcI8GeC7lCDyn3kDtiki9scw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..4796bcc1 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "mission5", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0", + "react-responsive": "^10.0.1", + "react-router": "^7.5.3", + "react-router-dom": "^7.5.3" + }, + "devDependencies": { + "@eslint/js": "^9.22.0", + "@types/react": "^19.0.10", + "@types/react-dom": "^19.0.4", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.22.0", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-react-refresh": "^0.4.19", + "globals": "^16.0.0", + "vite": "^6.3.1" + } +} diff --git a/images/Img_home_01/Img_home_01@0.5x.png b/public/images/Img_home_01/Img_home_01@0.5x.png similarity index 100% rename from images/Img_home_01/Img_home_01@0.5x.png rename to public/images/Img_home_01/Img_home_01@0.5x.png diff --git a/images/Img_home_01/Img_home_01@1.5x.png b/public/images/Img_home_01/Img_home_01@1.5x.png similarity index 100% rename from images/Img_home_01/Img_home_01@1.5x.png rename to public/images/Img_home_01/Img_home_01@1.5x.png diff --git a/images/Img_home_01/Img_home_01@1x.png b/public/images/Img_home_01/Img_home_01@1x.png similarity index 100% rename from images/Img_home_01/Img_home_01@1x.png rename to public/images/Img_home_01/Img_home_01@1x.png diff --git a/images/Img_home_01/Img_home_01@2x.png b/public/images/Img_home_01/Img_home_01@2x.png similarity index 100% rename from images/Img_home_01/Img_home_01@2x.png rename to public/images/Img_home_01/Img_home_01@2x.png diff --git a/images/Img_home_02/Img_home_02@0.5x.png b/public/images/Img_home_02/Img_home_02@0.5x.png similarity index 100% rename from images/Img_home_02/Img_home_02@0.5x.png rename to public/images/Img_home_02/Img_home_02@0.5x.png diff --git a/images/Img_home_02/Img_home_02@1.5x.png b/public/images/Img_home_02/Img_home_02@1.5x.png similarity index 100% rename from images/Img_home_02/Img_home_02@1.5x.png rename to public/images/Img_home_02/Img_home_02@1.5x.png diff --git a/images/Img_home_02/Img_home_02@1x.png b/public/images/Img_home_02/Img_home_02@1x.png similarity index 100% rename from images/Img_home_02/Img_home_02@1x.png rename to public/images/Img_home_02/Img_home_02@1x.png diff --git a/images/Img_home_02/Img_home_02@2x.png b/public/images/Img_home_02/Img_home_02@2x.png similarity index 100% rename from images/Img_home_02/Img_home_02@2x.png rename to public/images/Img_home_02/Img_home_02@2x.png diff --git a/images/Img_home_03/Img_home_03@0.5x.png b/public/images/Img_home_03/Img_home_03@0.5x.png similarity index 100% rename from images/Img_home_03/Img_home_03@0.5x.png rename to public/images/Img_home_03/Img_home_03@0.5x.png diff --git a/images/Img_home_03/Img_home_03@1.5x.png b/public/images/Img_home_03/Img_home_03@1.5x.png similarity index 100% rename from images/Img_home_03/Img_home_03@1.5x.png rename to public/images/Img_home_03/Img_home_03@1.5x.png diff --git a/images/Img_home_03/Img_home_03@1x.png b/public/images/Img_home_03/Img_home_03@1x.png similarity index 100% rename from images/Img_home_03/Img_home_03@1x.png rename to public/images/Img_home_03/Img_home_03@1x.png diff --git a/images/Img_home_03/Img_home_03@2x.png b/public/images/Img_home_03/Img_home_03@2x.png similarity index 100% rename from images/Img_home_03/Img_home_03@2x.png rename to public/images/Img_home_03/Img_home_03@2x.png diff --git a/images/Img_home_bottom/Img_home_bottom@0.5x.png b/public/images/Img_home_bottom/Img_home_bottom@0.5x.png similarity index 100% rename from images/Img_home_bottom/Img_home_bottom@0.5x.png rename to public/images/Img_home_bottom/Img_home_bottom@0.5x.png diff --git a/images/Img_home_bottom/Img_home_bottom@1.5x.png b/public/images/Img_home_bottom/Img_home_bottom@1.5x.png similarity index 100% rename from images/Img_home_bottom/Img_home_bottom@1.5x.png rename to public/images/Img_home_bottom/Img_home_bottom@1.5x.png diff --git a/images/Img_home_bottom/Img_home_bottom@1x.png b/public/images/Img_home_bottom/Img_home_bottom@1x.png similarity index 100% rename from images/Img_home_bottom/Img_home_bottom@1x.png rename to public/images/Img_home_bottom/Img_home_bottom@1x.png diff --git a/images/Img_home_bottom/Img_home_bottom@2x.png b/public/images/Img_home_bottom/Img_home_bottom@2x.png similarity index 100% rename from images/Img_home_bottom/Img_home_bottom@2x.png rename to public/images/Img_home_bottom/Img_home_bottom@2x.png diff --git a/images/Img_home_top/Img_home_top@0.5x.png b/public/images/Img_home_top/Img_home_top@0.5x.png similarity index 100% rename from images/Img_home_top/Img_home_top@0.5x.png rename to public/images/Img_home_top/Img_home_top@0.5x.png diff --git a/images/Img_home_top/Img_home_top@1.5x.png b/public/images/Img_home_top/Img_home_top@1.5x.png similarity index 100% rename from images/Img_home_top/Img_home_top@1.5x.png rename to public/images/Img_home_top/Img_home_top@1.5x.png diff --git a/images/Img_home_top/Img_home_top@1x.png b/public/images/Img_home_top/Img_home_top@1x.png similarity index 100% rename from images/Img_home_top/Img_home_top@1x.png rename to public/images/Img_home_top/Img_home_top@1x.png diff --git a/images/Img_home_top/Img_home_top@2x.png b/public/images/Img_home_top/Img_home_top@2x.png similarity index 100% rename from images/Img_home_top/Img_home_top@2x.png rename to public/images/Img_home_top/Img_home_top@2x.png diff --git "a/images/\355\214\220\353\213\244 \354\226\274\352\265\264.png" b/public/images/Img_logo.png similarity index 100% rename from "images/\355\214\220\353\213\244 \354\226\274\352\265\264.png" rename to public/images/Img_logo.png diff --git a/images/Img_openGraph.png b/public/images/Img_openGraph.png similarity index 100% rename from images/Img_openGraph.png rename to public/images/Img_openGraph.png diff --git a/public/images/ic_arrow_down.png b/public/images/ic_arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..a8613b0fc3cab8141e6a31e326e1a5f9cd0c0b89 GIT binary patch literal 718 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGooCO|{#S9EO-XP4l)OOlRpde#$ zkh>GZx^prwfgF}}M_)$E)e-c?47?_ehT^vIy7~kI9m=|m)a_r-IS0^p*l`K9Y zMohut0moBPvgb2M+G2m>;kg<{-6DB+LIc~>)$rA04+lUCNqPb-j*$2TFlOGA{84NY#FY(Bfaj&E$zk>#x3i0 zw>5LW{fzSx*4-9N~bt%Vu+b=z2u{p z!d-0*y_i`_iA$DyJ?Ify`K|2loz|cH8%w8ODNt;2w|@W2e~QDU+!dMkckC3n-u(53 zpswkK9X}5LOIDp^!*KbEKukgT_0O1G-o-?kaoVs(y9N3lu6B)~*j??BY5QGQZqBs8!&+{A%mlf1j@U#IEI1$T&kpv8Q|g)&0v4 ziAXlgOyPLk`K;{!LavY;hBTQ&n(sw|`X~FZe!<|g=Z55;Y>uVk_eF~NEY5kp7nv1M zb9n~Cnfq-MvZvW|_HrGNF+Z0V^wIY*lYx8Ngr7>OL0$1J{X*i;wDivCH#ub=+j*+> mLb2YR@3&{?V@7(z|I_8sHavFDpG#(dl7pwKpUXO@geCy<=rTS4 literal 0 HcmV?d00001 diff --git a/images/ic_facebook.png b/public/images/ic_facebook.png similarity index 100% rename from images/ic_facebook.png rename to public/images/ic_facebook.png diff --git a/images/ic_instagram.png b/public/images/ic_instagram.png similarity index 100% rename from images/ic_instagram.png rename to public/images/ic_instagram.png diff --git a/public/images/ic_nextPageClick_active.png b/public/images/ic_nextPageClick_active.png new file mode 100644 index 0000000000000000000000000000000000000000..998d93a59775c5d1397d370bf980e09d2560fc35 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{w7Zs$B+ufyAy4>4mk+4-hZ;*)cuAVx9*Ws z**-4?gQ{4H1(;uodQL9exLM$h$^+FSMyq$b`RtV5c20X*YQ=r_!wipkKAWYUYwl zADUgH_fFsD_oS(EGUw8%Z}zP;ObeI)Hg&Cg^M=MBhh6#H-=zQ9qAq`9CsXDrUW1kW euALvBb6-2}ziipkL$W~EGkCiCxvX``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{svDM$B+ufyZw844;cuwo}VVDDyb-Kz^tqi z(lNiOqe-*CY{6ouFfNzO)TT9)1Yda8#ApP~UA+3U)ckYrYwOr%ET8lFTIKv0$P@1Vhq_7apntVg;7D@4d3M8#QKJ_#ArQfW2>9N!WAc|N5FX zwbKpR*MzyPSIMrh>*c(<<#}yfv7M=?TU8~8`0+I@9X#9LSbtF9aA#a1B(ko{Iqu+} augvRz*%s`P6%z!yox#)9&t;ucLK6V|<7aCC literal 0 HcmV?d00001 diff --git a/public/images/ic_prevPageClick_active.png b/public/images/ic_prevPageClick_active.png new file mode 100644 index 0000000000000000000000000000000000000000..be9c1f151e1f8a3197dd10bd0ea3642a21b6cbf4 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{vl5n$B+ufrxOhMnj8dN)5Z9mk`fnRJi;tt zl25X*UP#Fi0O$e zaod%WGIQp&pZTX)+FpIE+`Vts+`NtkJ_C!jW%BahKYMPCjz~IJu+MS*1SDvIY8v!PC{xWt~$(699t8Zu``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{(4Ur$B+ufrxW+`9x@PUov+U`N$>`Pp`*hT z4+Z7GCCSWZq+FDoG*pddHV6txr||yE$x)G-!n|BH{_&x@`zPNwlx@%}nZ8^3kHYOt zSGMK8foi?1b~+8JI;&1!o%8x$$Ak}W8|$>%LpLaxym@JG?cQq@nM<7V->#Gi+*NFy zou?~yvuyo7&KrE6VvegFy2y3p+Kj6;RzbZi^M#b8&K&dXoS?sF;yRlm)m@rh(U0Xn Zuq^O!+rqbGQvuNF44$rjF6*2UngFOMWb*(3 literal 0 HcmV?d00001 diff --git a/public/images/ic_search.png b/public/images/ic_search.png new file mode 100644 index 0000000000000000000000000000000000000000..5f98a65a9a1ed18a442f56581c61cefc66853d9a GIT binary patch literal 500 zcmVD`QY<#DtZ20`LUt%0$GPCd7p?g%eOtU~d3N=vwHE|JY)* z(mJS#3;C1gP1@=E-n{&8h}QaRvAmDYy;l-5I>D~0Bq}AZ17iGQRuJRnt~I6a0=ll( zVvO30q)Z|)BpI0qWjs^C$vWP%0$LT2BtOT}pUuf`+8--*9Gt8`Bftzmw(=mK0IDs~ zoF-Tfj%t>b_2WATVc%xfKAwIdqPQ)n{FHKJ<5Yr?jb-V!Kdfj2qWcQ~RVZxa!SeS^yk_4EiN40|bc`b!DQUsWyOdK0qjUorf}gp`Pp25e!c9 zP8-0V#U(<>ibdxNmd*N6*;&T35*+StkF^1?U#NyhRkkswQQCs=zo7;Zv+|_&U?6?U zQRY=~-S^BwM4pTt5~@m7LW=Js6@7Jm;Co97an?B4>8u1;sOLV`CF7MODXFB4C~ z!axwmXYwq-4%{Pn;=+R?RG?JgqXSccB~SvCUE~&)3dm0R%x11VIpjL5PeR%@tt2A;Mb(Txa|D40@12Y>>7D_^4gCAj&t;lN;Lt z(_`R>vuDx$nO#^7s64jtNjAz0&#oW>E-7>XUk323EA|KwrikPrh_t~;3X!lHQ04Lx zu9Wz@(7=cRm&RVi25LNeCW41kYli5qJ~$h|4UK>{wtf(^2Qb5@P{ba=z4z36<16&CmnL~beo^8||nUUTKVHS!_La+55wa?WD%mGl@ zjHt!)$GA!2Dw4Z3D6VB4U(Q9M+i9q(3%gnO;@%McTEN|w`Z{NIsI}CLKVcT1gNh;xyUAIn2%kVHl9*!}D`)hGKvQEJMjHmewQvQj))gwwN%lu^F(D|A_FUDeg} z@U_(|7)xWq`Nb|I#|~(eQfi>f2{UNLnV@r%YT`l}!LpOda-(JBRKgNIeWTGokBy4| zu-sj1f(Kuy(z4yky?$F(r5nmm-(vgj;KU=LR;$Bb*kv2amnu<={qSg2uFOHCR0^)p zHx3Tp--#v3a(Z&IbfoFK-LSTgG|Em2sgtJK?6!4Rfufb(O~`$!8ox7PG@7gN_-vAqu-Wu8FlZjE@=}ekBy`CqW5X%MpYC=qqS?^ zStH4ch7h}|DU^8oz1O-0Ih23QdsQhL737P(Iz=|N@u=qzN$Cu&y7yQ7%F^$tX&>ALI;#|(1EuNk2nIzC z&q_X?oQk_Z<Wkp@OpFhEc#Svm zY(xuUaFp>%4oYn3+JFnu`*Z@@XNi%U%Ury2b5WqB>6j*)07xN@E1QmzyaDM5AaQ_Fq`JK-Nw3j=1lK5>M1m`emgC@tE1A;Jg5iyd`wtmOwzi<{BSf4#PT~-sNaj@!Lm=NWRJbEy z10%#)0e7N3P^ag62yAUys{=k3N7C`ANN^_HlauAARj>6Hrp#iLTt!|HxejddDWKh4 zj((ha)388gEv#?qSq_z5ISHlkU{R9P@S8{VBCMVTosn{9J`B8%9TGq4;#(AH7gq)FTig+e9Wa>v&X;Alg}k^ zL84Uo%>=6K!Skh31%EUfVU}#%n0)5pL#~i6SIDA#YICDClO;_^GkDKnDm&W A&j0`b literal 0 HcmV?d00001 diff --git a/scripts/auth/form_login.js b/scripts/auth/form_login.js deleted file mode 100644 index 5d201a2e..00000000 --- a/scripts/auth/form_login.js +++ /dev/null @@ -1,20 +0,0 @@ -import { validators } from './modules/validators.js'; -import { formEventHandler } from './modules/formEventHandler.js'; - -const form = document.querySelector('#form-login'); -const buttonElement = form.querySelector('.form-btn'); - -const fieldMap = { - email: validators.email, - password: validators.password, -}; - -const onButtonRedirectUrl = 'items.html'; -const formInfoObject = { - form, - buttonElement, - fieldMap, - onButtonRedirectUrl, -}; - -formEventHandler(formInfoObject); diff --git a/scripts/auth/form_signup.js b/scripts/auth/form_signup.js deleted file mode 100644 index 26653e96..00000000 --- a/scripts/auth/form_signup.js +++ /dev/null @@ -1,30 +0,0 @@ -import { validators } from './modules/validators.js'; -import { formEventHandler } from './modules/formEventHandler.js'; - -const form = document.querySelector('#form-signup'); -const buttonElement = form.querySelector('.form-btn'); - -const fieldMap = { - email: validators.email, - nickname: validators.nickname, - password: (passwordText) => { - //prettier-ignore - const passwordVerifyText = form.querySelector('#passwordVerify .form-input').value; - return validators.password(passwordText, passwordVerifyText); - }, - passwordVerify: (passwordVerifyText) => { - const passwordText = form.querySelector('#password .form-input').value; - return validators.passwordVerify(passwordVerifyText, passwordText); - }, -}; - -const onButtonRedirectUrl = 'login.html'; - -const formInfoObject = { - form, - buttonElement, - fieldMap, - onButtonRedirectUrl, -}; - -formEventHandler(formInfoObject); diff --git a/scripts/auth/modules/formEventHandler.js b/scripts/auth/modules/formEventHandler.js deleted file mode 100644 index 5359072e..00000000 --- a/scripts/auth/modules/formEventHandler.js +++ /dev/null @@ -1,84 +0,0 @@ -export const formEventHandler = ({ - form, - buttonElement, - fieldMap, - onButtonRedirectUrl, -}) => { - const inputState = new Map(Object.keys(fieldMap).map((key) => [key, null])); - - const onInputFocusOut = (stateKey) => { - const validResult = getValidResult(stateKey); - setState(validResult); - updateUIByState(validResult); - updateButtonState(); - }; - - const getValidResult = (stateKey) => { - const inputText = form.querySelector(`#${stateKey} .form-input`).value; - const validtorFunction = fieldMap[stateKey]; - return validtorFunction(inputText); - }; - - const setState = (validResult) => { - for (const stateKey in validResult) { - if (inputState.get(stateKey) !== undefined) { - inputState.set(stateKey, validResult[stateKey].isValid); - } - } - }; - - const updateUIByState = (validResult) => { - for (const stateKey in validResult) { - if (inputState.get(stateKey) !== undefined) { - //prettier-ignore - const inputContainerElement = form.querySelector(`#${stateKey} .form-input-container`); - //prettier-ignore - const spanStateElement = form.querySelector(`#${stateKey} .form-status-info`); - spanStateElement.textContent = validResult[stateKey].message; - if (validResult[stateKey].isValid) { - inputContainerElement.classList.add('valid'); - inputContainerElement.classList.remove('inValid'); - spanStateElement.classList.add('hidden'); - } else { - inputContainerElement.classList.add('inValid'); - inputContainerElement.classList.remove('valid'); - spanStateElement.classList.remove('hidden'); - } - } - } - }; - - const updateButtonState = () => { - //prettier-ignore - buttonElement.disabled = ![...inputState.values()].every((isValid) => isValid); - }; - - const onButtonClick = (e) => { - e.preventDefault(); - location.href = onButtonRedirectUrl; - }; - - const onPasswordIconToggle = (stateKey, e) => { - const inputElement = form.querySelector(`#${stateKey} .form-input`); - e.target.classList.toggle('hidden'); - if (e.target.classList.contains('hidden')) { - inputElement.type = 'password'; - } else { - inputElement.type = 'text'; - } - }; - - //이벤트 할당 - for (const stateKey in fieldMap) { - const inputElement = form.querySelector(`#${stateKey} .form-input`); - inputElement.addEventListener('focusout', () => onInputFocusOut(stateKey)); - //prettier-ignore - const passwordIconElement = form.querySelector(`#${stateKey} .form-icon-password`); - if (passwordIconElement) { - passwordIconElement.addEventListener('click', (e) => - onPasswordIconToggle(stateKey, e) - ); - } - } - buttonElement.addEventListener('click', onButtonClick); -}; diff --git a/scripts/auth/test.js b/scripts/auth/test.js deleted file mode 100644 index 32ce9084..00000000 --- a/scripts/auth/test.js +++ /dev/null @@ -1,3 +0,0 @@ -const a = new Map([['a', 1]]); - -console.log(a.get('b')); diff --git a/scripts/package.json b/scripts/package.json deleted file mode 100644 index 3dbc1ca5..00000000 --- a/scripts/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "type": "module" -} diff --git a/signup.html b/signup.html deleted file mode 100644 index 70347f9d..00000000 --- a/signup.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - 판다 마켓 - 회원가입 - - - - 판다마켓 로고 - 판다마켓 - -
- - - - - - - - 이미 회원이신가요? - 로그인 - -
- - - diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 00000000..ef3761cd --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,24 @@ +import { BrowserRouter, Routes, Route } from 'react-router-dom'; +import Home from './pages/Home/Home'; +import Login from './pages/Auth/Login'; +import Signup from './pages/Auth/Signup'; +import Items from './pages/Items/Items'; +import Privacy from './pages/Privacy/Privacy'; +import Faq from './pages/Faq/Faq'; + +function App() { + return ( + + + } /> + } /> + } /> + } /> + } /> + } /> + + + ); +} + +export default App; diff --git a/src/apis/api.js b/src/apis/api.js new file mode 100644 index 00000000..ce0662d4 --- /dev/null +++ b/src/apis/api.js @@ -0,0 +1,17 @@ +const BASE_URL = 'https://panda-market-api.vercel.app'; + +export const getItems = async ({ + page, + pageSize, + orderBy = 'recent', + keyword = '', +}) => { + const query = `page=${page}&pageSize=${pageSize}&orderBy=${orderBy}&keyword=${keyword}`; + + const response = await fetch(`${BASE_URL}/products?${query}`); + if (!response.ok) { + throw new Error('품목을 불러오지 못했습니다.'); + } + const body = response.json(); + return body; +}; diff --git a/styles/common.css b/src/common.css similarity index 54% rename from styles/common.css rename to src/common.css index 6469a9df..e417b2f2 100644 --- a/styles/common.css +++ b/src/common.css @@ -1,39 +1,10 @@ -body { - font-family: 'Pretendard-Regular'; - margin: 0px; -} -@font-face { - font-family: 'Pretendard-Regular'; - src: url('https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff') - format('woff'); -} -@font-face { - font-family: 'ROKAFSansMedium'; - src: url('../fonts/rokafsansmedium-normal.woff') format('woff'); -} - :root { - --font-size-xs: 12px; - --font-size-sm: 14px; - --font-size-base: 16px; - --font-size-lg: 18px; - --font-size-xl: 20px; - --font-size-2xl: 24px; - --font-size-3xl: 30px; - - --font-weight-bold: 700; - --font-weight-semi-bold: 600; - --font-weight-medium: 500; - --font-weight-regular: 400; - --font-weight-light: 300; - --color-blue950: #111827; --color-blue600: #1251aa; --color-blue500: #1967d6; --color-blue400: #3692ff; --color-blue200: #cfe5ff; --color-blue100: #e6f2ff; - --color-gray900: #111827; --color-gray800: #1f2937; --color-gray700: #374151; @@ -44,29 +15,37 @@ body { --color-gray200: #f3f4f6; --color-gray100: #f9fafb; --color-gray050: #fcfcfc; - --color-white: #ffffff; - --color-error: #f74747; +} - --border-radius-xs: 8px; - --border-radius-sm: 12px; - --border-radius-lg: 40px; +* { + box-sizing: border-box; } -.btn { - background-color: var(--color-blue400); +.button-style { text-decoration: none; - color: var(--color-white); - text-align: center; + display: inline-block; + background-color: var(--color-blue400); + font-weight: 600; + font-family: 'Pretendard'; border: none; - width: 100%; } -.btn:hover { +.button-style:hover { background-color: var(--color-blue500); } -.btn:disabled { +.button-style:disabled { background-color: var(--color-gray400); } + +@font-face { + font-family: 'Pretendard'; + src: url('https://fastly.jsdelivr.net/gh/Project-Noonnu/noonfonts_2107@1.1/Pretendard-Regular.woff') + format('woff'); +} +@font-face { + font-family: 'ROKAFSans'; + src: url('../src/fonts/rokafsansmedium-normal.woff') format('woff'); +} diff --git a/fonts/rokafsansmedium-normal.woff b/src/fonts/rokafsansmedium-normal.woff similarity index 100% rename from fonts/rokafsansmedium-normal.woff rename to src/fonts/rokafsansmedium-normal.woff diff --git a/src/hooks/useFormFields.jsx b/src/hooks/useFormFields.jsx new file mode 100644 index 00000000..079405cb --- /dev/null +++ b/src/hooks/useFormFields.jsx @@ -0,0 +1,87 @@ +import { useEffect, useState } from 'react'; +import { useNavigate } from 'react-router'; + +export const useFormFields = ({ FIELDS, onSubmitRedirectURL }) => { + const createInitialStates = (initialFields, initialValue) => { + const returnFields = {}; + for (const field in initialFields) { + returnFields[field] = initialValue; + } + return returnFields; + }; + + //prettier-ignore + const [values, setValues] = useState(createInitialStates(FIELDS, '')); + //prettier-ignore + const [valids, setValids] = useState(createInitialStates(FIELDS, null)); + //prettier-ignore + const [hints, setHints] = useState(createInitialStates(FIELDS, '')); + //prettier-ignore + const [isVisibles, setIsVisibles] = useState(createInitialStates(FIELDS, false)); + const [isSubmitEnabled, setIsSubmitEnabled] = useState(false); + + const onSubmitNavigate = useNavigate(); + + useEffect(() => { + setIsSubmitEnabled(Object.values(valids).every((v) => v === true)); + }, [valids]); + + const handleInputChange = (e) => { + const { name, value } = e.target; + updateFieldValues(name, value); + const validResults = getValidResults(name, value); + updateValidResults(validResults); + }; + + const updateFieldValues = (name, value) => { + setValues((prev) => ({ + ...prev, + [name]: value, + })); + }; + + const getValidResults = (name, value) => { + const validFunction = FIELDS[name]; + return validFunction(value); + }; + + const updateValidResults = (validResults) => { + const nextInputValids = {}; + const nextHints = {}; + for (const validKey in validResults) { + nextInputValids[validKey] = validResults[validKey].isValid; + nextHints[validKey] = validResults[validKey].message; + } + setValids((prev) => ({ + ...prev, + ...nextInputValids, + })); + setHints((prev) => ({ + ...prev, + ...nextHints, + })); + }; + + const handlePasswordIconClick = (name) => { + setIsVisibles((prev) => ({ + ...prev, + [name]: !isVisibles[name], + })); + }; + + const handleSubmit = (e) => { + e.preventDefault(); + onSubmitNavigate(onSubmitRedirectURL); + }; + + return { + values, + valids, + hints, + isVisibles, + isSubmitEnabled, + handleInputChange, + handlePasswordIconClick, + handleSubmit, + }; +}; diff --git a/src/main.jsx b/src/main.jsx new file mode 100644 index 00000000..393a6f4f --- /dev/null +++ b/src/main.jsx @@ -0,0 +1,4 @@ +import { createRoot } from 'react-dom/client'; +import App from './App'; + +createRoot(document.getElementById('root')).render(); diff --git a/src/pages/Auth/Field.jsx b/src/pages/Auth/Field.jsx new file mode 100644 index 00000000..51a24ce0 --- /dev/null +++ b/src/pages/Auth/Field.jsx @@ -0,0 +1,58 @@ +const Field = ({ + id, + labelText, + placeholder, + ariaLabel, + type = 'text', + autoComplete = 'on', + value, + valid, + hint, + isVisible, + handleInputChange, + handlePasswordIconClick, +}) => { + const inputContainerClassName = () => { + if (valid === null) return ''; + if (valid === false) return 'invalid'; + else return 'valid'; + }; + + const passwordIconClassName = () => { + return isVisible ? '' : 'hidden'; + }; + + const inputType = () => { + return isVisible ? 'text' : type; + }; + + return ( + + ); +}; + +export default Field; diff --git a/src/pages/Auth/FormAuth.css b/src/pages/Auth/FormAuth.css new file mode 100644 index 00000000..1be4e3e6 --- /dev/null +++ b/src/pages/Auth/FormAuth.css @@ -0,0 +1,165 @@ +.page-form { + max-width: 672px; + margin: 0 auto; + padding: 80px 16px; + font-family: 'Pretendard'; + display: flex; + flex-direction: column; +} + +.form-logo-container { + text-decoration: none; + display: flex; + flex-direction: row; + gap: var(--form-logo-container-gap); + align-items: center; + justify-content: center; + height: var(--form-logo-container-height); + margin-bottom: var(--form-logo-container-margin-bottom); +} + +.form-logo-image { + aspect-ratio: 51.76 / 51.94; + width: var(--form-logo-image-width); +} + +.form-logo-text { + font-family: ''; + font-family: 'ROKAFSans'; + font-weight: 700; + font-size: var(--form-logo-text-font-size); + line-height: 100%; + color: var(--color-blue400); +} + +.form-label { + display: flex; + flex-direction: column; + font-weight: 700; + font-size: var(--form-label-font-size); + line-height: 24px; + margin-bottom: var(--form-label-margin-bottom); +} + +.form-input-container { + display: flex; + flex-direction: row; + align-items: center; + padding: 15px 24px; + background-color: var(--color-gray200); + border-radius: 12px; + margin-top: var(--form-input-container-margin-top); + margin-bottom: 8px; +} + +.form-input-container.valid { + border: 1px solid var(--color-blue400); +} +.form-input-container.invalid { + border: 1px solid var(--color-error); +} + +.form-input { + flex-grow: 1; + font-weight: 400; + font-size: 16px; + line-height: 26px; + background-color: var(--color-gray200); + border: none; + outline: none; + color: var(--color-gray800); +} + +.form-input::placeholder { + color: var(--color-gray400); +} + +.form-password-icon { + aspect-ratio: 20.39 / 14; + width: 20.39px; + content: url('./images/icon_password_visible.png'); +} +.form-password-icon.hidden { + aspect-ratio: 20.47 / 18.07; + width: 20.47px; + content: url('./images/icon_password_invisible.png'); +} + +.form-input-hint { + color: var(--color-error); + margin-left: 16px; + font-weight: 600; + font-size: 14px; + line-height: 24px; +} + +.form-input-hint.hidden { + display: none; +} + +#form-submit { + font-weight: 600; + font-size: 20px; + font-size: 20px; + line-height: 32px; + width: 100%; + padding: 12px; + border-radius: 40px; + color: var(--color-gray200); +} + +.form-social-container { + padding: 16px 23px; + border-radius: 8px; + display: flex; + flex-direction: row; + background-color: #e6f2ff; + align-items: center; + gap: 16px; + margin: 24px 0; +} + +.form-social-text { + font-weight: 500; + font-size: 16px; + line-height: 26px; + flex-grow: 1; +} + +.form-hint { + text-align: center; + font-weight: 500; + font-size: 14px; + line-height: 24px; + color: var(--color-gray800); +} + +.form-hint-link { + color: var(--color-blue400); + line-height: 100%; +} + +:root { + --form-logo-text-font-size: 33.17px; + --form-logo-container-margin-bottom: 24px; + --form-logo-image-width: 51.76px; + --form-logo-container-height: 66px; + --form-label-margin-bottom: 16px; + --form-label-font-size: 14px; + --form-logo-container-gap: 11.12px; + --form-input-container-margin-top: 8px; +} + +/* Tablet, PC */ +@media (min-width: 768px) { + :root { + --form-logo-text-font-size: 66.34px; + --form-logo-container-margin-bottom: 40px; + --form-logo-image-width: 103.53px; + --form-logo-container-height: 132px; + --form-label-margin-bottom: 24px; + --form-label-font-size: 18px; + --form-logo-container-gap: 22.24px; + --form-input-container-margin-top: 16px; + } +} diff --git a/src/pages/Auth/Login.jsx b/src/pages/Auth/Login.jsx new file mode 100644 index 00000000..a273c138 --- /dev/null +++ b/src/pages/Auth/Login.jsx @@ -0,0 +1,119 @@ +import { Link } from 'react-router-dom'; +import './FormAuth.css'; +import { validators } from './modules/validators'; +import { useFormFields } from '../../hooks/useFormFields'; +import Field from './Field'; + +const Login = () => { + const FIELDS = { + email: validators.email, + password: validators.password, + }; + + const onSubmitRedirectURL = '/items'; + + const formDataObject = { + FIELDS, + onSubmitRedirectURL, + }; + + const { + values, + valids, + hints, + isVisibles, + isSubmitEnabled, + handleInputChange, + handlePasswordIconClick, + handleSubmit, + } = useFormFields(formDataObject); + + return ( + <> +
+ + +

판다마켓

+ +
+ + + + +
+ 간편 로그인하기 + + {'구글 + + + {'카카오 + +
+ + 판다마켓이 처음이신가요?{' '} + + 회원가입 + + +
+ + ); +}; + +export default Login; diff --git a/src/pages/Auth/Signup.jsx b/src/pages/Auth/Signup.jsx new file mode 100644 index 00000000..8f3d5393 --- /dev/null +++ b/src/pages/Auth/Signup.jsx @@ -0,0 +1,152 @@ +import { Link } from 'react-router-dom'; +import './FormAuth.css'; +import { validators } from './modules/validators'; +import { useFormFields } from '../../hooks/useFormFields'; +import Field from './Field'; + +const Signup = () => { + const FIELDS = { + email: validators.email, + nickname: validators.nickname, + password: (passwordText) => { + const passwordVerifyText = values.passwordVerify; + return validators.password(passwordText, passwordVerifyText); + }, + passwordVerify: (passwordVerifyText) => { + const passwordText = values.password; + return validators.passwordVerify(passwordVerifyText, passwordText); + }, + }; + const onSubmitRedirectURL = '/login'; + + const formDataObject = { + FIELDS, + onSubmitRedirectURL, + }; + + const { + values, + valids, + hints, + isVisibles, + isSubmitEnabled, + handleInputChange, + handlePasswordIconClick, + handleSubmit, + } = useFormFields(formDataObject); + + return ( + <> +
+ + +

판다마켓

+ +
+ + + + + + +
+ 간편 로그인하기 + + {'구글 + + + {'카카오 + +
+ + 이미 회원이신가요?{' '} + + 로그인 + + +
+ + ); +}; + +export default Signup; diff --git a/scripts/auth/modules/validators.js b/src/pages/Auth/modules/validators.js similarity index 95% rename from scripts/auth/modules/validators.js rename to src/pages/Auth/modules/validators.js index e28481e7..efd03a8a 100644 --- a/scripts/auth/modules/validators.js +++ b/src/pages/Auth/modules/validators.js @@ -13,7 +13,7 @@ export const validators = { return { nickname: { isValid: false, message: '닉네임을 입력해주세요' } }; else return { nickname: { isValid: true, message: '' } }; }, - password: (passwordText, passwordVerifyText = passwordText) => { + password: (passwordText, passwordVerifyText = '') => { if (!passwordText) //prettier-ignore return { password: { isValid: false, message: '비밀번호를 입력해주세요' }}; @@ -21,9 +21,8 @@ export const validators = { //prettier-ignore return { password: { isValid: false, message: '비밀번호를 8자 이상 입력해주세요' }}; else if (passwordText.length >= 8) { - if (passwordVerifyText === '') { + if (passwordVerifyText === '') return { password: { isValid: true, message: '' } }; - } if (passwordText !== passwordVerifyText) { return { password: { isValid: true, message: '' }, diff --git a/src/pages/Auth/test.js b/src/pages/Auth/test.js new file mode 100644 index 00000000..68a53ebb --- /dev/null +++ b/src/pages/Auth/test.js @@ -0,0 +1,6 @@ +const a = { + a: 1, + b: 2, +}; + +console.log(Object.values(a)); diff --git a/src/pages/Faq/Faq.jsx b/src/pages/Faq/Faq.jsx new file mode 100644 index 00000000..16ed36d8 --- /dev/null +++ b/src/pages/Faq/Faq.jsx @@ -0,0 +1,5 @@ +const Faq = () => { + return <>; +}; + +export default Faq; diff --git a/src/pages/Home/Banner.css b/src/pages/Home/Banner.css new file mode 100644 index 00000000..acd095a5 --- /dev/null +++ b/src/pages/Home/Banner.css @@ -0,0 +1,77 @@ +.banner { + background-color: #cfe5ff; +} + +.banner-container { + display: flex; + flex-direction: var(--banner-container-flex-direction); + align-items: center; + gap: var(--banner-container-gap); + padding-top: var(--banner-container-padding-top); + justify-content: center; +} + +.banner-image { + aspect-ratio: 746 / 340; + max-width: 746px; + min-width: 447px; + width: 100%; +} + +.banner-context { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + gap: 18px; + padding-bottom: 60px; +} + +.banner-title { + color: var(--color-gray700); + font-family: 'Pretendard'; + width: var(--banner-title-width); + font-weight: 700; + font-size: var(--banner-title-font-size); + text-align: var(--banner-title-text-align); + line-height: 140%; + word-break: keep-all; +} + +.banner-button { + max-width: 357px; + width: 100%; + color: var(--color-gray050); + line-height: 26px; + padding: 11px 0; + border-radius: 40px; +} + +:root { + --banner-container-gap: 72px; + --banner-container-flex-direction: column; + --banner-container-padding-top: 48px; + --banner-title-width: 240px; + --banner-title-text-align: center; +} + +/* Tablet */ +@media screen and (min-width: 768px) and (max-width: 1199px) { + :root { + --banner-container-gap: 151px; + --banner-container-flex-direction: column; + --banner-container-padding-top: 84px; + --banner-title-width: 530px; + --banner-title-text-align: center; + } +} +/* PC */ +@media (min-width: 1200px) { + :root { + --banner-container-gap: 7px; + --banner-container-flex-direction: row; + --banner-container-padding-top: 200px; + --banner-title-width: 357px; + --banner-title-text-align: left; + } +} diff --git a/src/pages/Home/BannerBottom.css b/src/pages/Home/BannerBottom.css new file mode 100644 index 00000000..b09362b2 --- /dev/null +++ b/src/pages/Home/BannerBottom.css @@ -0,0 +1,28 @@ +#banner-bottom .banner-image { + aspect-ratio: 746 / 397; + min-width: 373px; +} + +#banner-bottom .banner-container { + gap: var(--banner-bottom-container-gap); + padding-top: var(--banner-bottom-container-padding-top); +} + +:root { + --banner-bottom-container-gap: 71px; + --banner-bottom-container-padding-top: 121px; +} + +/* Tablet */ +@media screen and (min-width: 768px) and (max-width: 1199px) { + :root { + --banner-bottom-container-gap: 157px; + --banner-bottom-container-padding-top: 201px; + } +} +/* PC */ +@media (min-width: 1200px) { + :root { + --banner-bottom-container-gap: 7px; + } +} diff --git a/src/pages/Home/Card.css b/src/pages/Home/Card.css new file mode 100644 index 00000000..2d5b348b --- /dev/null +++ b/src/pages/Home/Card.css @@ -0,0 +1,117 @@ +.card-container { + background-color: var(--color-gray050); + display: flex; + flex-direction: var(--card-container-flex-direction); + justify-content: center; + margin: 0 auto; + gap: var(--card-container-gap); + align-items: var(--card-container-align-items); + width: var(--card-container-width); +} + +.card-container.reverse { + flex-direction: var(--card-container-flex-direction-reverse); + text-align: right; +} + +.card-context { + padding: 0 24px 0 0; +} + +.card-container.reverse .card-context { + padding: 0 0 0 24px; +} + +.card-image { + width: var(--card-image-width); +} + +.card-context-tag { + color: var(--color-blue400); + font-weight: 700; + font-size: var(--card-tag-font-size); + line-height: 26px; + margin-bottom: 8px; +} + +.card-context-title { + color: var(--color-gray700); + font-weight: 700; + font-size: var(--card-title-font-size); + line-height: 32px; + margin-bottom: 16px; + word-break: keep-all; + width: auto; +} + +.card-context-subtitle { + color: var(--color-gray700); + font-weight: 500; + font-size: var(--card-subtitle-font-size); + line-height: 26px; + white-space: nowrap; +} + +:root { + --card-container-flex-direction: column; + --card-container-flex-direction-reverse: column; + --card-image-width: 344px; + --card-container-align-items: stretch; + --card-container-width: auto; + --card-container-gap: 23.24px; +} + +/* Tablet */ +@media screen and (min-width: 768px) and (max-width: 1199px) { + :root { + --card-container-flex-direction: column; + --card-container-flex-direction-reverse: column; + --card-image-width: 696px; + --card-container-align-items: stretch; + --card-container-width: auto; + --card-container-gap: 22.45px; + } + + .card-context-tag { + line-height: 26px; + margin-bottom: 16px; + } + + .card-context-title { + line-height: 42px; + margin-bottom: 24px; + width: auto; + } + + .card-context-subtitle { + line-height: 26px; + } +} +/* PC */ +@media (min-width: 1200px) { + :root { + --card-container-flex-direction: row; + --card-container-flex-direction-reverse: row-reverse; + --card-image-width: 588px; + --card-tag-margin-bottom: 12px; + --card-context-title-margin-bottom: 24px; + --card-container-align-items: center; + --card-container-width: 988px; + --card-container-gap: 64px; + } + + .card-context-tag { + line-height: 26px; + margin-bottom: 12px; + } + + .card-context-title { + line-height: 140%; + margin-bottom: 24px; + width: 293px; + } + + .card-context-subtitle { + line-height: 32px; + } +} diff --git a/src/pages/Home/Cards.css b/src/pages/Home/Cards.css new file mode 100644 index 00000000..276a40bd --- /dev/null +++ b/src/pages/Home/Cards.css @@ -0,0 +1,38 @@ +.page-cards { + background-color: var(--page-cards-background-color); + display: flex; + flex-direction: column; + gap: var(--page-cards-gap); + padding-top: var(--page-cards-padding-top); + padding-bottom: var(--page-cards-padding-bottom); + margin-bottom: var(--page-cards-margin-bottom); +} + +:root { + --page-cards-background-color: var(--color-gray050); + --page-cards-padding-top: 52px; + --page-cards-padding-bottom: 83px; + --page-cards-margin-bottom: 0px; + --page-cards-gap: 40px; +} + +/* Tablet */ +@media screen and (min-width: 768px) and (max-width: 1199px) { + :root { + --page-cards-background-color: var(--color-gray050); + --page-cards-padding-top: 24px; + --page-cards-padding-bottom: 56px; + --page-cards-margin-bottom: 0px; + --page-cards-gap: 52px; + } +} +/* PC */ +@media (min-width: 1200px) { + :root { + --page-cards-background-color: var(--color-white); + --page-cards-padding-top: 138px; + --page-cards-padding-bottom: 138px; + --page-cards-margin-bottom: 138px; + --page-cards-gap: 276px; + } +} diff --git a/src/pages/Home/Footer.css b/src/pages/Home/Footer.css new file mode 100644 index 00000000..0229fae0 --- /dev/null +++ b/src/pages/Home/Footer.css @@ -0,0 +1,64 @@ +.page-footer { + background-color: #111322; + height: 160px; + font-family: 'Pretendard'; +} + +.footer-container { + display: flex; + flex-direction: row; + flex-wrap: wrap-reverse; + justify-content: space-between; + align-items: center; + margin: 0 auto; + padding: 32px var(--footer-container-padding-x); + max-width: 1520px; + row-gap: 60px; +} + +.footer-corporation { + flex-basis: var(--footer-corporation-flex-basis); + color: var(--color-gray050); +} + +.footer-link { + display: flex; + flex-direction: row; + gap: 30px; +} + +.footer-link a { + text-decoration: none; + color: var(--color-gray050); +} + +.footer-social { + display: flex; + flex-direction: row; + gap: 14px; +} + +.footer-social-image { + aspect-ratio: 1/1; +} + +:root { + --footer-corporation-flex-basis: 100%; + --footer-container-padding-x: 32px; +} + +/* Tablet */ +@media screen and (min-width: 768px) and (max-width: 1199px) { + :root { + --footer-corporation-flex-basis: auto; + --footer-container-padding-x: 104px; + } +} + +/* PC */ +@media (min-width: 1200px) { + :root { + --footer-corporation-flex-basis: auto; + --footer-container-padding-x: 200px; + } +} diff --git a/src/pages/Home/Header.css b/src/pages/Home/Header.css new file mode 100644 index 00000000..e8321ea9 --- /dev/null +++ b/src/pages/Home/Header.css @@ -0,0 +1,59 @@ +.nav-container { + max-width: 1520px; + height: 70px; + display: flex; + flex-direction: row; + align-items: center; + padding: 0 var(--nav-padding-x); + border-bottom: 1px solid #dfdfdf; + justify-content: space-between; + margin: 0 auto; +} + +.nav-logo-container { + text-decoration: none; + display: flex; + flex-direction: row; + gap: 8.59px; + align-items: center; +} + +.nav-logo-img { + aspect-ratio: 40 / 40.14; + display: var(--display-logo-img); +} + +.nav-logo-text { + font-weight: 700; + font-size: 25.63px; + line-height: 100%; + color: var(--color-blue400); + font-family: 'ROKAFSans'; +} + +.nav-button { + border-radius: 8px; + padding: 12px 43px; + line-height: 26px; + color: var(--color-gray100); +} + +:root { + --nav-padding-x: 16px; + --display-logo-img: none; +} + +/* Tablet */ +@media screen and (min-width: 768px) and (max-width: 1199px) { + :root { + --nav-padding-x: 24px; + --display-logo-img: inline; + } +} +/* PC */ +@media (min-width: 1200px) { + :root { + --nav-padding-x: 200px; + --display-logo-img: inline; + } +} diff --git a/src/pages/Home/Home.css b/src/pages/Home/Home.css new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Home/Home.jsx b/src/pages/Home/Home.jsx new file mode 100644 index 00000000..7db49208 --- /dev/null +++ b/src/pages/Home/Home.jsx @@ -0,0 +1,186 @@ +import { Link } from 'react-router-dom'; +import './Header.css'; +import './Banner.css'; +import './Main.css'; +import './Cards.css'; +import './Card.css'; +import './BannerBottom.css'; +import './Footer.css'; + +const Home = () => { + return ( + <> +
+ +
+
+
+
+
+

일상의 모든 물건을 거래해 보세요

+ + 구경하러 가기 + +
+ 판다마켓 중고거래 +
+
+
+
+ +
+

Hot item

+

+ {'인기 상품을 확인해 보세요'} +

+

+ 가장 HOT한 중고거래 물품을 +
+ 판다 마켓에서 확인해 보세요 +

+
+
+
+ +
+

Search

+

+ 구매를 원하는 상품을 검색하세요 +

+

+ 구매하고 싶은 물품을 검색해서 +
+ 쉽게 찾아보세요 +

+
+
+
+ +
+

Register

+

+ 판매를 원하는 상품을 등록하세요 +

+

+ 어떤 물건이든 판매하고 싶은 상품을 +
+ 쉽게 등록하세요 +

+
+
+
+ +
+ + + ); +}; + +export default Home; diff --git a/src/pages/Home/Main.css b/src/pages/Home/Main.css new file mode 100644 index 00000000..d4b6af72 --- /dev/null +++ b/src/pages/Home/Main.css @@ -0,0 +1,13 @@ +.page-main { + background-color: var(--color-gray050); + font-family: 'Pretendard'; +} +/* 폰트 반응형 스타일 적용 */ +@supports (font-size: clamp(1rem, 2vw, 3rem)) { + :root { + --banner-title-font-size: clamp(32px, 5vw, 40px); + --card-tag-font-size: clamp(16px, 2.3438vw, 18px); + --card-title-font-size: clamp(24px, 3.3vw, 40px); + --card-subtitle-font-size: clamp(16px, 2vw, 24px); + } +} diff --git a/src/pages/Items/Header.css b/src/pages/Items/Header.css new file mode 100644 index 00000000..ca9138ba --- /dev/null +++ b/src/pages/Items/Header.css @@ -0,0 +1,75 @@ +.nav-container { + max-width: 1520px; + height: 70px; + display: flex; + flex-direction: row; + align-items: center; + padding: 0 var(--nav-padding-x); + border-bottom: 1px solid #dfdfdf; + margin: 0 auto; + gap: 32px; +} + +.nav-logo-container { + text-decoration: none; + display: flex; + flex-direction: row; + gap: 8.59px; + align-items: center; +} + +.nav-logo-img { + aspect-ratio: 40 / 40.14; + display: var(--display-logo-img); +} + +.nav-logo-text { + font-weight: 700; + font-size: 25.63px; + line-height: 100%; + color: var(--color-blue400); + font-family: 'ROKAFSans'; +} + +.nav-link-container { + display: flex; + flex-direction: row; + flex-grow: 1; +} + +.nav-link { + display: inline-block; + padding: 21px 15px; + text-decoration: none; + color: var(--color-gray600); + font-weight: 600; + font-size: 18px; + line-height: 26px; +} + +.nav-button { + border-radius: 8px; + padding: 12px 43px; + line-height: 26px; + color: var(--color-gray100); +} + +:root { + --nav-padding-x: 16px; + --display-logo-img: none; +} + +/* Tablet */ +@media screen and (min-width: 768px) and (max-width: 1199px) { + :root { + --nav-padding-x: 24px; + --display-logo-img: inline; + } +} +/* PC */ +@media (min-width: 1200px) { + :root { + --nav-padding-x: 200px; + --display-logo-img: inline; + } +} diff --git a/src/pages/Items/Items.css b/src/pages/Items/Items.css new file mode 100644 index 00000000..e0902bff --- /dev/null +++ b/src/pages/Items/Items.css @@ -0,0 +1,291 @@ +.items-page-main { + background-color: var(--color-gray050); + display: flex; + flex-direction: column; + padding-top: var(--items-main-page-padding-top); + gap: 40px; +} + +.cards-section { + display: flex; + flex-direction: column; + max-width: 1250px; + width: 100%; + margin: 0 auto; + padding: 0 24px; +} + +#cards-best { + gap: 16px; +} + +#cards-all { + gap: 24px; +} + +.section-header-container { + display: flex; + flex-direction: row; + justify-content: space-between; + gap: 12px; + align-items: center; + /* height: 42px; */ + flex-wrap: wrap; +} + +.section-title { + font-weight: 700; + font-size: 20px; + line-height: 32px; + color: var(--color-gray900); + flex-grow: 1; + order: var(--search-title-order); + min-width: 200px; +} + +.search-input-container { + display: flex; + flex-direction: row; + align-items: center; + background-color: var(--color-gray200); + width: var(--search-input-container-width); + padding: 0 9px; + height: 42px; + border-radius: 12px; + order: var(--search-input-order); + flex-grow: var(--search-input-flex-grow); +} + +.search-input-icon { + aspect-ratio: 1/1; +} + +.search-input { + border: none; + background-color: var(--color-gray200); + flex-grow: 1; + font-weight: 400; + font-size: 16px; + line-height: 26px; +} + +.search-input::placeholder { + color: var(--color-gray400); +} + +.search-submit { + border-radius: 8px; + font-weight: 600; + font-size: 16px; + line-height: 26px; + padding: 0 23px; + color: var(--color-gray100); + height: 42px; + order: var(--search-submit-order); +} + +.search-select { + width: var(--search-select-width); + padding: 0 20px; + border-radius: 12px; + border: 1px solid var(--color-gray300); + appearance: none; /* 기본 브라우저 UI 제거 */ + -webkit-appearance: none; + -moz-appearance: none; + background-image: var(--search-select-image); + background-repeat: no-repeat; + background-position: var(--search-select-image-position); + background-size: 24px; + color: var(--color-gray800); + font-weight: 400; + font-size: 16px; + line-height: 26px; + height: 42px; + order: var(--search-select-order); +} + +.items-container { + display: grid; + row-gap: 40px; +} + +.item-container { + display: flex; + flex-direction: column; + gap: 16px; + flex-grow: 1; + width: 100%; +} + +#cards-best .items-container { + column-gap: 0; + grid-template-columns: repeat(1, 1fr); + grid-template-rows: repeat(1, 1fr); +} +#cards-all .items-container { + column-gap: 8px; + grid-template-columns: repeat(2, 1fr); + grid-template-rows: repeat(2, 1fr); +} + +.item-context { + display: flex; + flex-direction: column; + gap: 6px; +} + +.item-image { + aspect-ratio: 1/1; + width: 100%; + border-radius: 16px; +} + +.item-title { + font-weight: 500; + font-size: 14px; + line-height: 24px; +} +.item-price { + font-weight: 700; + font-size: 16px; + line-height: 26px; +} + +.item-favorite-container { + display: flex; + flex-direction: row; + gap: 3.35px; +} + +.item-favorite-image { + aspect-ratio: 13.4 / 11.65; +} + +.item-favorite-count { + font-weight: 500; + font-size: 12px; + line-height: 18px; +} + +.items-pagination { + display: flex; + flex-direction: row; + padding-top: var(--items-pagination-padding-top); + padding-bottom: var(--items-pagination-padding-bottom); + padding: 43px 0 58px; + justify-content: center; + align-items: center; + background-color: var(--color-gray050); + gap: 4px; +} + +.pagination-button { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + border: 1px solid var(--color-gray300); + font-weight: 600; + font-size: 16px; + line-height: 26px; + border-radius: 40px; + color: var(--color-gray500); + background-color: var(--color-white); + cursor: pointer; +} + +.pagination-button.prev-page:disabled .pagination-button-image { + content: url('./images/ic_prevPageClick_inactive.png'); +} + +.pagination-button.next-page:disabled .pagination-button-image { + content: url('./images/ic_nextPageClick_inactive.png'); +} + +.pagination-button:disabled { + cursor: auto; +} + +.pagination-button.selected { + border: none; + background-color: #2f80ed; + color: var(--color-gray100); +} + +:root { + --items-main-page-padding-top: 17px; + --items-pagination-padding-top: 40px; + --items-pagination-padding-bottom: 35px; + --search-input-container-width: 288px; + --best-items-container-column-gap: 0; + --all-items-container-column-gap: 8px; + --search-title-order: 1; + --search-input-order: 3; + --search-submit-order: 2; + --search-select-order: 4; + --search-input-flex-grow: 1; + --search-select-width: 42px; + --search-select-image: url('./images/ic_sort.png'); + --search-select-image-position: center center; +} + +/* Tablet */ +@media screen and (min-width: 768px) and (max-width: 1199px) { + :root { + --items-main-page-padding-top: 24px; + --items-pagination-padding-top: 40px; + --items-pagination-padding-bottom: 72px; + --search-input-container-width: 242px; + --best-items-container-column-gap: 10px; + --all-items-container-column-gap: 16px; + --search-title-order: 1; + --search-input-order: 2; + --search-submit-order: 3; + --search-select-order: 4; + --search-input-flex-grow: 0; + --search-select-width: 130px; + --search-select-image: url('./images/ic_arrow_down.png'); + --search-select-image-position: right 20px center; + } + #cards-best .items-container { + column-gap: 10px; + grid-template-columns: repeat(2, 1fr); + grid-template-rows: repeat(1, 1fr); + } + #cards-all .items-container { + column-gap: 16px; + grid-template-columns: repeat(3, 1fr); + grid-template-rows: repeat(2, 1fr); + } +} +/* PC */ +@media (min-width: 1200px) { + :root { + --items-main-page-padding-top: 24px; + --items-pagination-padding-top: 43px; + --items-pagination-padding-bottom: 58px; + --search-input-container-width: 325px; + --best-items-container-column-gap: 24px; + --all-items-container-column-gap: 24px; + --search-title-order: 1; + --search-input-order: 2; + --search-submit-order: 3; + --search-select-order: 4; + --search-input-flex-grow: 0; + --search-select-width: 130px; + --search-select-image: url('./images/ic_arrow_down.png'); + --search-select-image-position: right 20px center; + } + #cards-best .items-container { + column-gap: 24px; + grid-template-columns: repeat(4, 1fr); + grid-template-rows: repeat(1, 1fr); + } + #cards-all .items-container { + column-gap: 24px; + grid-template-columns: repeat(5, 1fr); + grid-template-rows: repeat(2, 1fr); + } +} diff --git a/src/pages/Items/Items.jsx b/src/pages/Items/Items.jsx new file mode 100644 index 00000000..cb2145da --- /dev/null +++ b/src/pages/Items/Items.jsx @@ -0,0 +1,253 @@ +import { Link } from 'react-router-dom'; +import './Header.css'; +import './Items.css'; +import { getItems } from '../../apis/api'; +import { useEffect, useState } from 'react'; +import debounce from './debounce'; + +const ItemComponent = ({ id, imageUrl, name, price, favoriteCount }) => { + return ( +
+ +
+

{name}

+

{price}

+
+ +

{favoriteCount}

+
+
+
+ ); +}; + +const Items = () => { + const [bestItems, setBestItems] = useState([]); + const [allItems, setAllItems] = useState([]); + const [pageIndexList, setPageIndexList] = useState([]); + const [pagesCount, setPagesCount] = useState(0); + const [selectedPageIndex, setSelectedPageIndex] = useState(1); + const [order, setOrder] = useState('recent'); + const [windowWidth, setWindowWidth] = useState(window.innerWidth); + const [pageSizes, setPageSizes] = useState({ bestItems: 1, allItems: 4 }); + + useEffect(() => { + if (windowWidth >= 1200) { + setPageSizes({ bestItems: 4, allItems: 10 }); + } else if (windowWidth >= 768 && windowWidth < 1200) { + setPageSizes({ bestItems: 2, allItems: 6 }); + } else if (windowWidth < 768) { + setPageSizes({ bestItems: 1, allItems: 4 }); + } + }, [windowWidth]); + + useEffect(() => { + const handleResize = () => setWindowWidth(window.innerWidth); + const debounceResize = debounce(handleResize, 200); + window.addEventListener('resize', debounceResize); + return () => { + window.removeEventListener('resize', debounceResize); + }; + }, []); + + const loadBestItems = async (options) => { + const results = await getItems(options); + if (!results) return; + const { list } = results; + setBestItems(list); + }; + + const loadAllItems = async (options) => { + const results = await getItems(options); + if (!results) return; + const { totalCount, list } = results; + setAllItems(list); + setPagesCount(Math.ceil(totalCount / pageSizes.allItems)); + }; + + const handleSearchOrderChange = (e) => { + setOrder(e.target.value); + }; + + const handlePaginationButtonClick = (e) => { + setSelectedPageIndex(Number(e.target.value)); + }; + + const handlePaginationNext = () => { + setSelectedPageIndex((prev) => prev + 1); + }; + + const handlePaginationPrev = () => { + setSelectedPageIndex((prev) => prev - 1); + }; + + useEffect(() => { + loadBestItems({ + page: 1, + pageSize: 4, + orderBy: 'favorite', + }); + }, [pageSizes]); + + useEffect(() => { + loadAllItems({ + page: selectedPageIndex, + pageSize: 10, + orderBy: order, + }); + const pageGroupStartIndex = Math.floor((selectedPageIndex - 1) / 5) * 5 + 1; + const pageGroupSize = + pagesCount - pageGroupStartIndex + 1 < 5 + ? pagesCount - pageGroupStartIndex + 1 + : 5; + setPageIndexList( + new Array(pageGroupSize).fill(pageGroupStartIndex).map((v, i) => v + i) + ); + }, [selectedPageIndex, order, pagesCount, pageSizes]); + + const prevItemExist = selectedPageIndex > 1; + const nextItemExist = selectedPageIndex < pagesCount; + + //const bestItems = mockItems.slice(0, 4); + return ( + <> +
+ +
+
+
+
+

베스트 상품

+
+
+ {bestItems.map((item) => { + return ( + + ); + })} +
+
+ +
+
+

전체 상품

+ +
+ + +
+ + + +
+ +
+ {allItems.map((item) => { + return ( + + ); + })} +
+
+
+ + + ); +}; + +export default Items; diff --git a/src/pages/Items/debounce.js b/src/pages/Items/debounce.js new file mode 100644 index 00000000..c9dc362e --- /dev/null +++ b/src/pages/Items/debounce.js @@ -0,0 +1,10 @@ +export default function debounce(callback, limit = 100) { + let timeout; // ← 이 변수는 debounce 함수의 '스코프(클로저)'에 저장됨 + + return function (...args) { + clearTimeout(timeout); // ← 클로저에 저장된 timeout 값을 사용 + timeout = setTimeout(() => { + callback.apply(this, args); + }, limit); + }; +} diff --git a/src/pages/Items/mockItems.json b/src/pages/Items/mockItems.json new file mode 100644 index 00000000..e7084528 --- /dev/null +++ b/src/pages/Items/mockItems.json @@ -0,0 +1,140 @@ +[ + { + "id": 226, + "name": "푸바오 찾아 떠나는 청두 여행!!", + "description": "제 딸 푸바오가 있는 쓰촨성 청두로 날아가 보세요!!!", + "price": 99999999, + "tags": ["푸바오", "러바오", "아이바오", "루이바오", "후이바오"], + "images": [ + "https://image.hanatour.com/usr/cms/resize/800_0/2024/08/11/10000/687449d1-4e4f-4952-b6d1-5342465880f5.jpg" + ], + "ownerId": 177, + "favoriteCount": 45, + "createdAt": "2024-09-23T11:25:06.306Z", + "updatedAt": "2025-05-08T00:35:32.211Z" + }, + { + "id": 629, + "name": "돌아와..너가 죽으면 안돼", + "description": "젠슨형 우리좀 꺼내줘", + "price": 113, + "tags": ["S&P 투자사"], + "images": [ + "https://cdn.choicenews.co.kr/news/photo/202409/135215_98277_538.jpg" + ], + "ownerId": 895, + "favoriteCount": 18, + "createdAt": "2025-03-10T07:14:54.608Z", + "updatedAt": "2025-05-08T01:19:00.997Z" + }, + { + "id": 199, + "name": "아이폰 16 pro", + "description": "따끈한 아이폰!", + "price": 1290000, + "tags": [], + "images": [ + "https://sprint-fe-project.s3.ap-northeast-2.amazonaws.com/Sprint_Mission/user/98/1726837429259/iphone.jpg" + ], + "ownerId": 98, + "favoriteCount": 15, + "createdAt": "2024-09-20T13:03:49.397Z", + "updatedAt": "2025-04-27T08:34:36.366Z" + }, + { + "id": 197, + "name": "갤럭시 버즈3", + "description": "버즈3 입니다~", + "price": 500000, + "tags": ["이어폰"], + "images": [ + "https://sprint-fe-project.s3.ap-northeast-2.amazonaws.com/Sprint_Mission/user/107/1726730417522/buds.jpg" + ], + "ownerId": 107, + "favoriteCount": 13, + "createdAt": "2024-09-19T07:20:17.749Z", + "updatedAt": "2025-05-01T12:57:26.904Z" + }, + { + "id": 644, + "name": "판다마켓...", + "description": "teststes", + "price": 1111111111, + "tags": ["판다", "졸림"], + "images": [ + "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcT4fb9-Mrcz1_0IhrLpCFzG7zisGz8OvqzNog&s" + ], + "ownerId": 916, + "favoriteCount": 7, + "createdAt": "2025-03-14T02:53:34.608Z", + "updatedAt": "2025-04-25T17:30:18.213Z" + }, + { + "id": 355, + "name": "단풍잎", + "description": "단풍잎 하나 사세요", + "price": 1000, + "tags": ["단풍", "단풍잎"], + "images": [ + "https://sprint-fe-project.s3.ap-northeast-2.amazonaws.com/Sprint_Mission/user/36/1728454687724/leaf-6760484_640.jpg" + ], + "ownerId": 36, + "favoriteCount": 7, + "createdAt": "2024-10-09T06:18:33.271Z", + "updatedAt": "2025-02-27T01:46:49.928Z" + }, + { + "id": 646, + "name": "판다", + "description": "판다판다", + "price": 2222222, + "tags": [], + "images": [ + "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQOHuLhMBf7IOIwUUZAjjKzV5AZbw3qIJZ_sA&s" + ], + "ownerId": 916, + "favoriteCount": 6, + "createdAt": "2025-03-14T02:59:35.707Z", + "updatedAt": "2025-04-28T01:38:11.166Z" + }, + { + "id": 630, + "name": "상품", + "description": "상품 소개 수정1", + "price": 7701, + "tags": ["#게시글", "#게시판", "#상품"], + "images": ["https://placehold.co/300"], + "ownerId": 884, + "favoriteCount": 6, + "createdAt": "2025-03-10T07:16:02.104Z", + "updatedAt": "2025-03-16T09:17:57.410Z" + }, + { + "id": 114, + "name": "갤럭시 탭 S7", + "description": "삼성 갤럭시 탭 S7", + "price": 350000, + "tags": [], + "images": [ + "https://sprint-fe-project.s3.ap-northeast-2.amazonaws.com/Sprint_Mission/user/3/1721991844193/5146532.png" + ], + "ownerId": 1, + "favoriteCount": 6, + "createdAt": "2024-07-29T05:45:03.249Z", + "updatedAt": "2024-07-29T05:45:03.249Z" + }, + { + "id": 107, + "name": "퀸사이즈 침대", + "description": "퀸사이즈 침대 프레임", + "price": 500000, + "tags": ["가구"], + "images": [ + "https://sprint-fe-project.s3.ap-northeast-2.amazonaws.com/Sprint_Mission/user/3/1721991744735/2113.png" + ], + "ownerId": 1, + "favoriteCount": 6, + "createdAt": "2024-07-29T05:45:03.249Z", + "updatedAt": "2024-07-29T05:45:03.249Z" + } +] diff --git a/src/pages/Privacy/Privacy.jsx b/src/pages/Privacy/Privacy.jsx new file mode 100644 index 00000000..fb9f1708 --- /dev/null +++ b/src/pages/Privacy/Privacy.jsx @@ -0,0 +1,5 @@ +const Privacy = () => { + return <>; +}; + +export default Privacy; diff --git a/src/reset.css b/src/reset.css new file mode 100644 index 00000000..a3f76817 --- /dev/null +++ b/src/reset.css @@ -0,0 +1,129 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; +} +body { + line-height: 1; +} +ol, +ul { + list-style: none; +} +blockquote, +q { + quotes: none; +} +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/styles/auth-form-style.css b/styles/auth-form-style.css deleted file mode 100644 index d4de9a0c..00000000 --- a/styles/auth-form-style.css +++ /dev/null @@ -1,176 +0,0 @@ -body { - font-family: 'Pretendard-Regular'; - background-color: var(--color-gray050); -} - -.form-logo-container { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - gap: 22.24px; - text-decoration: none; - margin: 80px auto 40px; - height: 66px; -} - -.form-logo-img { - width: 51.76px; - height: auto; -} - -.form-logo-text { - font-family: ROKAFSansMedium; - font-size: 33.17px; - font-weight: var(--font-weight-bold); - color: var(--color-blue400); -} - -.form-container { - max-width: 432px; - width: 100%; - margin: 0 auto; - padding: 0 16px; - display: flex; - flex-direction: column; -} - -.form-label { - font-size: var(--font-size-sm); - font-weight: var(--font-weight-bold); - color: var(--color-gray800); - margin-bottom: 16px; -} - -.form-input-container { - background-color: var(--color-gray200); - height: 56px; - margin-top: 16px; - padding: 0 0px; - border-radius: var(--border-radius-sm); - display: flex; - flex-direction: row; - align-items: center; -} - -.form-input-container.inValid { - border: 1px solid var(--color-error); -} - -.form-input-container.valid { - border: 1px solid var(--color-blue400); -} - -.form-input { - height: 100%; - font-size: var(--font-size-base); - color: var(--color-gray800); - background-color: var(--color-gray200); - border: none; - border-radius: var(--border-radius-sm); - flex-grow: 1; - padding: 0 24px 0; - outline: none; -} - -.form-input::placeholder { - color: var(--color-gray400); -} - -.form-status-info { - display: inline-block; - margin: 8px 0 0 16px; - font-size: 14px; - font-weight: 600; - color: var(--color-error); -} - -.form-status-info.hidden { - display: none; -} - -.form-icon-password { - width: 20.47px; - height: 14px; - margin-right: 25.8px; - content: url('../images/icon_password_visible.png'); -} - -.form-icon-password.hidden { - height: 18.07px; - content: url('../images/icon_password_invisible.png'); -} - -.form-btn { - height: 56px; - font-family: 'Pretendard-Regular'; - border-radius: var(--border-radius-lg); - font-size: var(--font-size-xl); - margin-bottom: 24px; -} - -.form-social-login { - font-weight: 500; - height: 74px; - background-color: var(--color-blue100); - border-radius: var(--border-radius-xs); - display: flex; - flex-direction: row; - align-items: center; - padding: 16px 23px; - margin-bottom: 24px; - gap: 16px; -} - -.form-social-text { - margin: 0; - color: var(--color-gray800); - font-size: var(--font-size-base); - flex-grow: 1; -} - -.form-social-icon { - width: 42px; - height: 42px; -} - -.form-footer { - font-size: 14px; - font-weight: 500; - margin: 0 auto; -} - -.form-footer-link { - color: var(--color-blue400); -} - -/* Tablet, PC */ -@media (min-width: 768px) { - .form-logo-img { - width: 103.53px; - } - - .form-logo-text { - font-size: 66.34px; - } - - .form-container { - max-width: 672px; - } - - .form-logo-container { - margin: 190px auto 40px; - height: 132px; - } - - .form-label { - font-size: var(--font-size-lg); - margin-bottom: 24px; - } -} - -@media (min-width: 1200px) { - .form-logo-container { - margin: 231px auto 40px; - } -} diff --git a/styles/index-style.css b/styles/index-style.css deleted file mode 100644 index cc9ecf82..00000000 --- a/styles/index-style.css +++ /dev/null @@ -1,392 +0,0 @@ -body { - font-family: 'Pretendard-Regular'; -} - -.page-header { - background-color: var(--color-white); - height: 70px; - position: sticky; - top: 0px; - width: 100%; -} - -.nav-container { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - margin: 0 auto; - padding: 0 var(--nav-padding-x); - max-width: 1520px; - height: 100%; -} - -.nav-logo-link { - text-decoration: none; - display: flex; - flex-direction: row; - align-items: center; - gap: 8.59px; -} - -.nav-logo-image { - width: 40px; - display: var(--nav-log-display); -} - -.nav-logo-text { - font-family: 'ROKAFSansMedium'; - color: var(--color-blue400); - font-weight: var(--font-weight-bold); - font-size: 25.63px; -} - -.nav-btn { - max-width: 128px; - border-radius: var(--border-radius-xs); - padding: 11px 0; -} - -.page-hero { - background-color: var(--color-blue200); -} - -.hero-container { - display: flex; - justify-content: center; - align-items: center; - flex-direction: var(--main-container-flex-direction); - padding-top: var(--hero-container-padding-top); - gap: var(--hero-container-gap); -} - -#banner-bottom .hero-container { - padding-top: var(--hero-container-btm-padding-top); -} - -.hero-context { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - width: 240px; - gap: var(--hero-context-gap); - margin-bottom: 0; -} - -.hero-title { - font-size: var(--hero-title-font-size); - font-weight: var(--font-weight-bold); - color: var(--color-gray700); - margin: 0; - word-break: keep-all; - width: 300px; - text-align: center; - line-height: 140%; -} - -.hero-img-container { - width: 100%; - max-width: 746px; - overflow: hidden; - display: flex; - justify-content: center; -} - -#hero-img-top, -#hero-img-bottom { - min-height: 200px; - width: 100%; - height: 100%; - object-fit: cover; -} -#hero-img-top { - aspect-ratio: 746 / 340; -} -#hero-img-bottom { - aspect-ratio: 746 / 397; -} - -.hero-btn { - padding: 12px 0; - border-radius: var(--border-radius-lg); - font-size: var(--font-size-xl); - font-weight: var(--font-weight-semi-bold); - max-width: 357px; -} - -.page-main { - background-color: var(--color-gray050); -} - -.cards { - display: flex; - flex-direction: column; - background-color: var(--cards-background-color); - padding-top: var(--cards-padding-top); - padding-bottom: var(--cards-padding-bottom); - margin-bottom: var(--cards-margin-bottom); - gap: var(--cards-gap); -} - -.card-container { - width: var(--card-container-width); - height: 100%; - background-color: var(--color-gray050); - border-radius: var(--border-radius-sm); - margin: 0 auto; - display: flex; - justify-content: center; - align-items: center; - gap: var(--card-container-gap); -} - -.card-container { - flex-direction: var(--main-container-flex-direction); -} - -.card-container.reverse { - flex-direction: var(--main-container-flex-direction-reverse); -} - -.card-img { - width: var(--card-img-width); - aspect-ratio: 588 / 444; - height: auto; -} - -.card-context { - padding: 0 24px 0 0; - width: 344px; -} - -.card-context.reverse { - text-align: right; - padding: 0 0 0 24px; -} - -.card-tag { - color: var(--color-blue400); - font-size: var(--card-tag-font-size); - font-weight: var(--font-weight-bold); - margin: 0 0 12px; -} - -.card-title { - color: var(--color-gray700); - font-size: var(--card-title-font-size); - font-weight: var(--font-weight-bold); - line-height: 140%; - margin: 0 0 24px; - word-break: keep-all; -} - -.card-description { - color: var(--color-gray700); - font-size: var(--card-description-font-size); - font-weight: var(--font-weight-medium); - line-height: 140%; - margin: 0; - white-space: nowrap; -} - -.page-spacing { - background-color: var(--color-gray050); - height: 138px; -} - -.page-footer { - background-color: var(--color-blue950); - height: 160px; - padding: 32px 0 0; -} - -.footer-container { - display: flex; - flex-direction: row-reverse; - flex-wrap: wrap-reverse; - justify-content: space-between; - padding: 0 var(--footer-padding-x); - max-width: 1520px; - margin: 0 auto; - gap: 60px 0; -} - -.footer-corp { - color: var(--color-gray400); - flex-basis: 100%; -} - -.footer-links { - display: flex; - flex-direction: row; - gap: 30px; -} - -.footer-links a { - text-decoration: none; - color: var(--color-gray300); - font-size: var(--font-size-base); -} - -.footer-icons { - display: flex; - flex-direction: row; - gap: 13px; -} - -.footer-icon { - width: 18px; -} - -/* 기본 변수 (Mobile 기준) */ -:root { - /* 로고 이미지 표시여부 변수 */ - --nav-log-display: none; - - /* 좌우 여백 변수 */ - --nav-padding-x: 16px; - --footer-padding-x: 32px; - - /* hero, card 배치방향 변수 */ - --main-container-flex-direction: column; - --main-container-flex-direction-reverse: column; - - /* 요소 간격조절 변수 */ - --cards-padding-top: 52px; - --cards-padding-bottom: 83px; - --cards-margin-bottom: 0px; - --cards-gap: 40px; - --card-container-gap: 24px; - --hero-container-padding-top: 48px; - --hero-container-btm-padding-top: 121px; - --hero-container-gap: 132px; - --hero-context-gap: 18px; - - /* 요소 크기조절 변수 */ - --card-container-width: 344px; - --card-img-width: 344px; - - /* cards 배경색 설정 */ - --cards-background-color: var(--color-gray050); -} - -/* Tablet */ -@media screen and (min-width: 768px) and (max-width: 1199px) { - :root { - /* 로고 이미지 표시여부 변수 */ - --nav-log-display: inline; - - /* 좌우 여백 변수 */ - --nav-padding-x: 24px; - --footer-padding-x: 104px; - - /* hero, card 배치방향 변수 */ - --main-container-flex-direction: column; - --main-container-flex-direction-reverse: column; - - /* 요소 간격조절 변수 */ - --cards-padding-top: 24px; - --cards-padding-bottom: 56px; - --cards-margin-bottom: 0px; - --cards-gap: 52px; - --card-container-gap: 24px; - --hero-container-padding-top: 84px; - --hero-container-btm-padding-top: 201px; - --hero-container-gap: 211px; - --hero-context-gap: 24px; - - /* 요소 크기조절 변수 */ - --card-container-width: 696px; - --card-img-width: 696px; - - /* cards 배경색 설정 */ - --cards-background-color: var(--color-gray050); - } - - .hero-title { - text-align: center; - width: auto; - } - - .card-context { - width: 696px; - } - - .hero-context { - width: auto; - align-items: center; - margin-bottom: 0px; - } - - .card-description { - line-height: 32px; - } -} - -/* PC */ -@media (min-width: 1200px) { - :root { - /* 로고 이미지 표시여부 변수 */ - --nav-log-display: inline; - - /* 좌우 여백 변수 */ - --nav-padding-x: 200px; - --footer-padding-x: 200px; - - /* hero, card 배치방향 변수 */ - --main-container-flex-direction: row; - --main-container-flex-direction-reverse: row-reverse; - - /* 요소 간격조절 변수 */ - --cards-padding-top: 138px; - --cards-padding-bottom: 138px; - --cards-margin-bottom: 138px; - --cards-gap: 276px; - --card-container-gap: 64px; - --hero-container-padding-top: 200px; - --hero-container-btm-padding-top: 200px; - --hero-container-gap: 7px; - --hero-context-gap: 32px; - - /* 요소 크기조절 변수 */ - --card-container-width: 988px; - --card-img-width: 579px; - - /* cards 배경색 설정 */ - --cards-background-color: var(--color-white); - } - - .hero-title { - text-align: left; - width: 300px; - } - - .card-context { - width: auto; - } - - .card-title { - width: 293px; - } - - .hero-context { - width: 357px; - align-items: start; - margin-bottom: 60px; - } - - .card-description { - line-height: 32px; - } -} - -/* 폰트 반응형 스타일 적용 */ -@supports (font-size: clamp(1rem, 2vw, 3rem)) { - :root { - --hero-title-font-size: clamp(32px, 5.3763vw, 40px); - --card-title-font-size: clamp(24px, 4.3011vw, 40px); - --card-tag-font-size: clamp(16px, 2.4194vw, 18px); - --card-description-font-size: clamp(16px, 2.4194vw, 24px); - } -} diff --git a/styles/reset.css b/styles/reset.css deleted file mode 100644 index 85e401f3..00000000 --- a/styles/reset.css +++ /dev/null @@ -1,23 +0,0 @@ -* { - box-sizing: border-box; -} - -body { - margin: 0; -} - -h1 { - margin: 0; -} - -h2 { - margin: 0; -} - -h3 { - margin: 0; -} - -p { - margin: 0; -} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 00000000..8b0f57b9 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 5729fe32fc79a8ad4a86f4f07f470194bb9a647a Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Fri, 9 May 2025 13:37:32 +0900 Subject: [PATCH 03/12] =?UTF-8?q?perf:=20=EB=A6=AC=EB=A0=8C=EB=8D=94?= =?UTF-8?q?=EB=A7=81=20=ED=9A=9F=EC=88=98=20=EC=B5=9C=EC=A0=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Items/Items.jsx | 122 ++++++++++++++++++++++---------------- src/pages/Items/test.js | 4 ++ 2 files changed, 75 insertions(+), 51 deletions(-) create mode 100644 src/pages/Items/test.js diff --git a/src/pages/Items/Items.jsx b/src/pages/Items/Items.jsx index cb2145da..31c25fd3 100644 --- a/src/pages/Items/Items.jsx +++ b/src/pages/Items/Items.jsx @@ -3,116 +3,136 @@ import './Header.css'; import './Items.css'; import { getItems } from '../../apis/api'; import { useEffect, useState } from 'react'; -import debounce from './debounce'; const ItemComponent = ({ id, imageUrl, name, price, favoriteCount }) => { return ( -
- -
-

{name}

-

{price}

-
+
+ +
+

{name}

+

{price}

+
-

{favoriteCount}

+

{favoriteCount}

); }; +const updateDeviceType = (width) => { + if (width >= 1200) return 'lg'; + else if (width >= 768) return 'md'; + else return 'sm'; +}; + +const getDataSizeBestItems = (type) => { + switch (type) { + case 'lg': + return 4; + case 'md': + return 2; + case 'sm': + return 1; + } +}; + +const getDataSizeAllItems = (type) => { + switch (type) { + case 'lg': + return 10; + case 'md': + return 6; + case 'sm': + return 4; + } +}; + const Items = () => { + const [windowWidth, setWindowWidth] = useState(window.innerWidth); const [bestItems, setBestItems] = useState([]); const [allItems, setAllItems] = useState([]); - const [pageIndexList, setPageIndexList] = useState([]); - const [pagesCount, setPagesCount] = useState(0); + const [pageIndexList, setPageIndexList] = useState([1]); + const [pagesCount, setPagesCount] = useState(1); const [selectedPageIndex, setSelectedPageIndex] = useState(1); const [order, setOrder] = useState('recent'); - const [windowWidth, setWindowWidth] = useState(window.innerWidth); - const [pageSizes, setPageSizes] = useState({ bestItems: 1, allItems: 4 }); - - useEffect(() => { - if (windowWidth >= 1200) { - setPageSizes({ bestItems: 4, allItems: 10 }); - } else if (windowWidth >= 768 && windowWidth < 1200) { - setPageSizes({ bestItems: 2, allItems: 6 }); - } else if (windowWidth < 768) { - setPageSizes({ bestItems: 1, allItems: 4 }); - } - }, [windowWidth]); - - useEffect(() => { - const handleResize = () => setWindowWidth(window.innerWidth); - const debounceResize = debounce(handleResize, 200); - window.addEventListener('resize', debounceResize); - return () => { - window.removeEventListener('resize', debounceResize); - }; - }, []); + const [deviceType, setDeviceType] = useState( + updateDeviceType(window.innerWidth) + ); const loadBestItems = async (options) => { const results = await getItems(options); if (!results) return; const { list } = results; - setBestItems(list); + setBestItems((prev) => (list.every((v, i) => v === prev[i]) ? prev : list)); }; const loadAllItems = async (options) => { const results = await getItems(options); if (!results) return; const { totalCount, list } = results; - setAllItems(list); - setPagesCount(Math.ceil(totalCount / pageSizes.allItems)); + setAllItems((prev) => (list.every((v, i) => v === prev[i]) ? prev : list)); + setPagesCount(Math.ceil(totalCount / getDataSizeAllItems(deviceType))); }; const handleSearchOrderChange = (e) => { setOrder(e.target.value); + setSelectedPageIndex(1); }; - const handlePaginationButtonClick = (e) => { - setSelectedPageIndex(Number(e.target.value)); - }; + //prettier-ignore + const handlePaginationButtonClick = (e) => setSelectedPageIndex(Number(e.target.value)); + const handlePaginationNext = () => setSelectedPageIndex((prev) => prev + 1); + const handlePaginationPrev = () => setSelectedPageIndex((prev) => prev - 1); - const handlePaginationNext = () => { - setSelectedPageIndex((prev) => prev + 1); - }; + useEffect(() => { + const handleResize = () => setWindowWidth(window.innerWidth); + window.addEventListener('resize', handleResize); + return () => { + window.removeEventListener('resize', handleResize); + }; + }, []); - const handlePaginationPrev = () => { - setSelectedPageIndex((prev) => prev - 1); - }; + useEffect(() => { + setDeviceType(updateDeviceType(windowWidth)); + }, [windowWidth]); useEffect(() => { loadBestItems({ page: 1, - pageSize: 4, + pageSize: getDataSizeBestItems(deviceType), orderBy: 'favorite', }); - }, [pageSizes]); + }, [deviceType]); useEffect(() => { loadAllItems({ page: selectedPageIndex, - pageSize: 10, + pageSize: getDataSizeAllItems(deviceType), orderBy: order, }); + }, [deviceType, selectedPageIndex, order]); + + useEffect(() => { const pageGroupStartIndex = Math.floor((selectedPageIndex - 1) / 5) * 5 + 1; const pageGroupSize = pagesCount - pageGroupStartIndex + 1 < 5 ? pagesCount - pageGroupStartIndex + 1 : 5; - setPageIndexList( - new Array(pageGroupSize).fill(pageGroupStartIndex).map((v, i) => v + i) + //prettier-ignore + const newPageList = new Array(pageGroupSize).fill(pageGroupStartIndex).map((v, i) => v + i); + setPageIndexList((prev) => + JSON.stringify(prev) === JSON.stringify(newPageList) ? prev : newPageList ); - }, [selectedPageIndex, order, pagesCount, pageSizes]); + }, [pagesCount, selectedPageIndex]); const prevItemExist = selectedPageIndex > 1; const nextItemExist = selectedPageIndex < pagesCount; - //const bestItems = mockItems.slice(0, 4); return ( <>
diff --git a/src/pages/Items/test.js b/src/pages/Items/test.js new file mode 100644 index 00000000..68607538 --- /dev/null +++ b/src/pages/Items/test.js @@ -0,0 +1,4 @@ +const a = [1, 2, 3, 4, 5]; +const b = [1, 2, 3, 4, 5]; + +console.log(a.every((v, i) => v === b[i]) ? 'a' : 'b'); From 4d8818df706826e1eb6ec9e7192e15c2dd9910d8 Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Sat, 10 May 2025 16:18:05 +0900 Subject: [PATCH 04/12] =?UTF-8?q?refactor:=20=EB=AF=B8=EC=85=985=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/api.js | 8 ++- src/pages/Items/Items.jsx | 110 +++++--------------------------------- src/pages/Items/test.js | 17 ++++-- 3 files changed, 34 insertions(+), 101 deletions(-) diff --git a/src/apis/api.js b/src/apis/api.js index ce0662d4..8edd66fb 100644 --- a/src/apis/api.js +++ b/src/apis/api.js @@ -1,11 +1,17 @@ const BASE_URL = 'https://panda-market-api.vercel.app'; export const getItems = async ({ - page, + offset, pageSize, orderBy = 'recent', keyword = '', }) => { + //pc: 10개, 태블릿: 6개, 모바일: 4개 + //offset이 11이면 : page는? pc: 2, 태블릿: 2, 모바일: 3 + //offset이 8이면 : page는? pc: 1, 태블릿: 2, 모바일: 2 + + const page = Math.ceil(offset / pageSize); + console.log(offset, pageSize, page); const query = `page=${page}&pageSize=${pageSize}&orderBy=${orderBy}&keyword=${keyword}`; const response = await fetch(`${BASE_URL}/products?${query}`); diff --git a/src/pages/Items/Items.jsx b/src/pages/Items/Items.jsx index 31c25fd3..b830c81e 100644 --- a/src/pages/Items/Items.jsx +++ b/src/pages/Items/Items.jsx @@ -3,6 +3,8 @@ import './Header.css'; import './Items.css'; import { getItems } from '../../apis/api'; import { useEffect, useState } from 'react'; +import favoriteItems from './mockItems.json'; +import currentItems from './mockItems.json'; const ItemComponent = ({ id, imageUrl, name, price, favoriteCount }) => { return ( @@ -24,70 +26,16 @@ const ItemComponent = ({ id, imageUrl, name, price, favoriteCount }) => { ); }; -const updateDeviceType = (width) => { +const getDeviceType = (width) => { if (width >= 1200) return 'lg'; else if (width >= 768) return 'md'; else return 'sm'; }; -const getDataSizeBestItems = (type) => { - switch (type) { - case 'lg': - return 4; - case 'md': - return 2; - case 'sm': - return 1; - } -}; - -const getDataSizeAllItems = (type) => { - switch (type) { - case 'lg': - return 10; - case 'md': - return 6; - case 'sm': - return 4; - } -}; - const Items = () => { const [windowWidth, setWindowWidth] = useState(window.innerWidth); - const [bestItems, setBestItems] = useState([]); - const [allItems, setAllItems] = useState([]); - const [pageIndexList, setPageIndexList] = useState([1]); - const [pagesCount, setPagesCount] = useState(1); - const [selectedPageIndex, setSelectedPageIndex] = useState(1); - const [order, setOrder] = useState('recent'); - const [deviceType, setDeviceType] = useState( - updateDeviceType(window.innerWidth) - ); - - const loadBestItems = async (options) => { - const results = await getItems(options); - if (!results) return; - const { list } = results; - setBestItems((prev) => (list.every((v, i) => v === prev[i]) ? prev : list)); - }; - - const loadAllItems = async (options) => { - const results = await getItems(options); - if (!results) return; - const { totalCount, list } = results; - setAllItems((prev) => (list.every((v, i) => v === prev[i]) ? prev : list)); - setPagesCount(Math.ceil(totalCount / getDataSizeAllItems(deviceType))); - }; - - const handleSearchOrderChange = (e) => { - setOrder(e.target.value); - setSelectedPageIndex(1); - }; - //prettier-ignore - const handlePaginationButtonClick = (e) => setSelectedPageIndex(Number(e.target.value)); - const handlePaginationNext = () => setSelectedPageIndex((prev) => prev + 1); - const handlePaginationPrev = () => setSelectedPageIndex((prev) => prev - 1); + const [deviceType, setDeviceType] = useState(getDeviceType(window.innerWidth)); useEffect(() => { const handleResize = () => setWindowWidth(window.innerWidth); @@ -98,41 +46,9 @@ const Items = () => { }, []); useEffect(() => { - setDeviceType(updateDeviceType(windowWidth)); + setDeviceType(getDeviceType(windowWidth)); }, [windowWidth]); - useEffect(() => { - loadBestItems({ - page: 1, - pageSize: getDataSizeBestItems(deviceType), - orderBy: 'favorite', - }); - }, [deviceType]); - - useEffect(() => { - loadAllItems({ - page: selectedPageIndex, - pageSize: getDataSizeAllItems(deviceType), - orderBy: order, - }); - }, [deviceType, selectedPageIndex, order]); - - useEffect(() => { - const pageGroupStartIndex = Math.floor((selectedPageIndex - 1) / 5) * 5 + 1; - const pageGroupSize = - pagesCount - pageGroupStartIndex + 1 < 5 - ? pagesCount - pageGroupStartIndex + 1 - : 5; - //prettier-ignore - const newPageList = new Array(pageGroupSize).fill(pageGroupStartIndex).map((v, i) => v + i); - setPageIndexList((prev) => - JSON.stringify(prev) === JSON.stringify(newPageList) ? prev : newPageList - ); - }, [pagesCount, selectedPageIndex]); - - const prevItemExist = selectedPageIndex > 1; - const nextItemExist = selectedPageIndex < pagesCount; - return ( <>
@@ -168,7 +84,7 @@ const Items = () => {

베스트 상품

- {bestItems.map((item) => { + {favoriteItems.map((item) => { return ( { 상품 등록하기
-
-
{currentItemList.map((item) => { return ( From 422e5d75c2f82fbe7615964895e032d0e762f290 Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Mon, 12 May 2025 21:48:36 +0900 Subject: [PATCH 09/12] =?UTF-8?q?fix:=20Board.jsx=20import=20=EC=98=A4?= =?UTF-8?q?=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Board/Board.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Board/Board.jsx b/src/pages/Board/Board.jsx index 48634278..cf384939 100644 --- a/src/pages/Board/Board.jsx +++ b/src/pages/Board/Board.jsx @@ -1,4 +1,4 @@ -import Header from '../components/header'; +import Header from '../components/Header'; const Board = () => { return ( From 10fae21490fdaae0af286fc37d7b0f81a88bb2f1 Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Mon, 12 May 2025 21:51:36 +0900 Subject: [PATCH 10/12] =?UTF-8?q?fix:=20Home,=20Items=20import=20=EC=98=A4?= =?UTF-8?q?=ED=83=80=20=EC=88=98=EC=A0=95(header=20=E2=86=92=20Header)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Home/Home.jsx | 2 +- src/pages/Items/Items.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Home/Home.jsx b/src/pages/Home/Home.jsx index 90519b85..d2f2585d 100644 --- a/src/pages/Home/Home.jsx +++ b/src/pages/Home/Home.jsx @@ -5,7 +5,7 @@ import './Cards.css'; import './Card.css'; import './BannerBottom.css'; import './Footer.css'; -import Header from '../components/header'; +import Header from '../components/Header'; const Home = () => { return ( diff --git a/src/pages/Items/Items.jsx b/src/pages/Items/Items.jsx index bd32d654..01b37e02 100644 --- a/src/pages/Items/Items.jsx +++ b/src/pages/Items/Items.jsx @@ -5,7 +5,7 @@ import { useEffect, useState } from 'react'; import { useDeviceType } from '../../hooks/useDeviceType'; import { formatPriceKRW } from '../../modules/formatPrice'; import { useNavigate } from 'react-router'; -import Header from '../components/header'; +import Header from '../components/Header'; const ItemComponent = ({ id, From d35035c8d608d6f458d8e996a4867a1e04b2c1c1 Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Mon, 12 May 2025 21:53:16 +0900 Subject: [PATCH 11/12] =?UTF-8?q?fix:=20Header.jsx=20import=20=EC=98=A4?= =?UTF-8?q?=ED=83=80=20=EC=88=98=EC=A0=95(header=20=E2=86=92=20Header)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/components/Header.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/components/Header.jsx b/src/pages/components/Header.jsx index b17cf3d0..50b035ef 100644 --- a/src/pages/components/Header.jsx +++ b/src/pages/components/Header.jsx @@ -1,5 +1,5 @@ import { Link } from 'react-router-dom'; -import './header.css'; +import './Header.css'; import { useIsLogin } from '../../contexts/LoginStateContext'; const Header = ({ currentSection }) => { From 7ca189b5e5e833a2102be6b206f2ff6fd99a881a Mon Sep 17 00:00:00 2001 From: Chiman2937 Date: Mon, 12 May 2025 21:56:11 +0900 Subject: [PATCH 12/12] =?UTF-8?q?fix:=20items=EC=9D=98=20=EA=B2=80?= =?UTF-8?q?=EC=83=89Input=EC=97=90=20focus=20=EB=90=90=EC=9D=84=EB=95=8C?= =?UTF-8?q?=20outline=EC=9D=B4=20=EB=B3=B4=EC=9D=B4=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EA=B2=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Items/Items.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/Items/Items.css b/src/pages/Items/Items.css index c04b700d..abb065b8 100644 --- a/src/pages/Items/Items.css +++ b/src/pages/Items/Items.css @@ -67,6 +67,7 @@ font-weight: 400; font-size: 16px; line-height: 26px; + outline: none; } .search-input::placeholder {