From d1aee6af8af01eb329f7cc301fa66090292adf03 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 23 May 2024 15:54:06 +0900
Subject: [PATCH 01/72] Update issue templates
---
.github/ISSUE_TEMPLATE/template-issue.md | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
create mode 100644 .github/ISSUE_TEMPLATE/template-issue.md
diff --git a/.github/ISSUE_TEMPLATE/template-issue.md b/.github/ISSUE_TEMPLATE/template-issue.md
new file mode 100644
index 0000000..66ef31d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/template-issue.md
@@ -0,0 +1,18 @@
+---
+name: template-issue
+about: 이슈 템플릿
+title: 'design: 투표페이지 뷰'
+labels: ''
+assignees: ''
+
+---
+
+## 목적
+
+설명
+
+## 작업 상세 내용
+
+- [ ] todo1
+- [ ] todo2
+- [ ] todo3
From fe77c419c5236edd91f59765c719fcaf59a81ed4 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 23 May 2024 15:56:07 +0900
Subject: [PATCH 02/72] Create pull_request_template.md
---
.github/pull_request_template.md | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 .github/pull_request_template.md
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..87c25e5
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,22 @@
+## Related Issues
+
+- close #issue_number
+
+## PR 유형
+
+어떤 변경 사항이 있나요?
+
+- [ ] 새로운 기능 추가
+- [ ] 오류 수정
+- [ ] CSS 등 스타일 변경
+- [ ] 코드에 영향을 주지 않는 변경사항(오타 수정, 탭 사이즈 변경, 변수명 변경)
+- [ ] 코드 리팩토링
+- [ ] 주석 추가 및 수정
+- [ ] 문서 수정
+- [ ] 테스트 추가, 테스트 리팩토링
+- [ ] 파일 혹은 폴더 삭제
+
+## 변경 사항 in Detail
+
+- [ ] 변경 사항
+ - 변경 사항 상세 설명
\ No newline at end of file
From d562ccc1fa8dbab5b2e62e224933f1e3860034dd Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 23 May 2024 16:04:02 +0900
Subject: [PATCH 03/72] =?UTF-8?q?init:=20Vite=EB=A1=9C=20React=20=EC=B4=88?=
=?UTF-8?q?=EA=B8=B0=EC=84=B8=ED=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/.eslintrc.cjs | 18 +
vote/.gitignore | 26 +
vote/README.md | 9 +
vote/index.html | 13 +
vote/package.json | 28 +
vote/public/vite.svg | 1 +
vote/src/App.css | 42 +
vote/src/App.tsx | 35 +
vote/src/assets/react.svg | 1 +
vote/src/index.css | 68 ++
vote/src/main.tsx | 10 +
vote/src/vite-env.d.ts | 1 +
vote/tsconfig.json | 25 +
vote/tsconfig.node.json | 11 +
vote/vite.config.ts | 7 +
vote/yarn.lock | 1652 +++++++++++++++++++++++++++++++++++++
16 files changed, 1947 insertions(+)
create mode 100644 vote/.eslintrc.cjs
create mode 100644 vote/.gitignore
create mode 100644 vote/README.md
create mode 100644 vote/index.html
create mode 100644 vote/package.json
create mode 100644 vote/public/vite.svg
create mode 100644 vote/src/App.css
create mode 100644 vote/src/App.tsx
create mode 100644 vote/src/assets/react.svg
create mode 100644 vote/src/index.css
create mode 100644 vote/src/main.tsx
create mode 100644 vote/src/vite-env.d.ts
create mode 100644 vote/tsconfig.json
create mode 100644 vote/tsconfig.node.json
create mode 100644 vote/vite.config.ts
create mode 100644 vote/yarn.lock
diff --git a/vote/.eslintrc.cjs b/vote/.eslintrc.cjs
new file mode 100644
index 0000000..d6c9537
--- /dev/null
+++ b/vote/.eslintrc.cjs
@@ -0,0 +1,18 @@
+module.exports = {
+ root: true,
+ env: { browser: true, es2020: true },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'plugin:react-hooks/recommended',
+ ],
+ ignorePatterns: ['dist', '.eslintrc.cjs'],
+ parser: '@typescript-eslint/parser',
+ plugins: ['react-refresh'],
+ rules: {
+ 'react-refresh/only-export-components': [
+ 'warn',
+ { allowConstantExport: true },
+ ],
+ },
+}
diff --git a/vote/.gitignore b/vote/.gitignore
new file mode 100644
index 0000000..50c8dda
--- /dev/null
+++ b/vote/.gitignore
@@ -0,0 +1,26 @@
+# 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?
+
+.env
diff --git a/vote/README.md b/vote/README.md
new file mode 100644
index 0000000..145a066
--- /dev/null
+++ b/vote/README.md
@@ -0,0 +1,9 @@
+# Vite로 React 실행하기
+
+cd vote // Directory 이동
+
+code . // 해당 디렉토리를 최상위로 VSCode 실행
+
+yarn // 의존성 모듈 설치
+
+yarn dev // React 앱 실행
\ No newline at end of file
diff --git a/vote/index.html b/vote/index.html
new file mode 100644
index 0000000..e4b78ea
--- /dev/null
+++ b/vote/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Vite + React + TS
+
+
+
+
+
+
diff --git a/vote/package.json b/vote/package.json
new file mode 100644
index 0000000..e38163e
--- /dev/null
+++ b/vote/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "vote",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.2.66",
+ "@types/react-dom": "^18.2.22",
+ "@typescript-eslint/eslint-plugin": "^7.2.0",
+ "@typescript-eslint/parser": "^7.2.0",
+ "@vitejs/plugin-react": "^4.2.1",
+ "eslint": "^8.57.0",
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "eslint-plugin-react-refresh": "^0.4.6",
+ "typescript": "^5.2.2",
+ "vite": "^5.2.0"
+ }
+}
diff --git a/vote/public/vite.svg b/vote/public/vite.svg
new file mode 100644
index 0000000..e7b8dfb
--- /dev/null
+++ b/vote/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/vote/src/App.css b/vote/src/App.css
new file mode 100644
index 0000000..b9d355d
--- /dev/null
+++ b/vote/src/App.css
@@ -0,0 +1,42 @@
+#root {
+ max-width: 1280px;
+ margin: 0 auto;
+ padding: 2rem;
+ text-align: center;
+}
+
+.logo {
+ height: 6em;
+ padding: 1.5em;
+ will-change: filter;
+ transition: filter 300ms;
+}
+.logo:hover {
+ filter: drop-shadow(0 0 2em #646cffaa);
+}
+.logo.react:hover {
+ filter: drop-shadow(0 0 2em #61dafbaa);
+}
+
+@keyframes logo-spin {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
+
+@media (prefers-reduced-motion: no-preference) {
+ a:nth-of-type(2) .logo {
+ animation: logo-spin infinite 20s linear;
+ }
+}
+
+.card {
+ padding: 2em;
+}
+
+.read-the-docs {
+ color: #888;
+}
diff --git a/vote/src/App.tsx b/vote/src/App.tsx
new file mode 100644
index 0000000..afe48ac
--- /dev/null
+++ b/vote/src/App.tsx
@@ -0,0 +1,35 @@
+import { useState } from 'react'
+import reactLogo from './assets/react.svg'
+import viteLogo from '/vite.svg'
+import './App.css'
+
+function App() {
+ const [count, setCount] = useState(0)
+
+ return (
+ <>
+
+ Vite + React
+
+
+
+ Edit src/App.tsx and save to test HMR
+
+
+
+ Click on the Vite and React logos to learn more
+
+ >
+ )
+}
+
+export default App
diff --git a/vote/src/assets/react.svg b/vote/src/assets/react.svg
new file mode 100644
index 0000000..6c87de9
--- /dev/null
+++ b/vote/src/assets/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/vote/src/index.css b/vote/src/index.css
new file mode 100644
index 0000000..6119ad9
--- /dev/null
+++ b/vote/src/index.css
@@ -0,0 +1,68 @@
+:root {
+ font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
+ line-height: 1.5;
+ font-weight: 400;
+
+ color-scheme: light dark;
+ color: rgba(255, 255, 255, 0.87);
+ background-color: #242424;
+
+ font-synthesis: none;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+a {
+ font-weight: 500;
+ color: #646cff;
+ text-decoration: inherit;
+}
+a:hover {
+ color: #535bf2;
+}
+
+body {
+ margin: 0;
+ display: flex;
+ place-items: center;
+ min-width: 320px;
+ min-height: 100vh;
+}
+
+h1 {
+ font-size: 3.2em;
+ line-height: 1.1;
+}
+
+button {
+ border-radius: 8px;
+ border: 1px solid transparent;
+ padding: 0.6em 1.2em;
+ font-size: 1em;
+ font-weight: 500;
+ font-family: inherit;
+ background-color: #1a1a1a;
+ cursor: pointer;
+ transition: border-color 0.25s;
+}
+button:hover {
+ border-color: #646cff;
+}
+button:focus,
+button:focus-visible {
+ outline: 4px auto -webkit-focus-ring-color;
+}
+
+@media (prefers-color-scheme: light) {
+ :root {
+ color: #213547;
+ background-color: #ffffff;
+ }
+ a:hover {
+ color: #747bff;
+ }
+ button {
+ background-color: #f9f9f9;
+ }
+}
diff --git a/vote/src/main.tsx b/vote/src/main.tsx
new file mode 100644
index 0000000..3d7150d
--- /dev/null
+++ b/vote/src/main.tsx
@@ -0,0 +1,10 @@
+import React from 'react'
+import ReactDOM from 'react-dom/client'
+import App from './App.tsx'
+import './index.css'
+
+ReactDOM.createRoot(document.getElementById('root')!).render(
+
+
+ ,
+)
diff --git a/vote/src/vite-env.d.ts b/vote/src/vite-env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/vote/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/vote/tsconfig.json b/vote/tsconfig.json
new file mode 100644
index 0000000..a7fc6fb
--- /dev/null
+++ b/vote/tsconfig.json
@@ -0,0 +1,25 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/vote/tsconfig.node.json b/vote/tsconfig.node.json
new file mode 100644
index 0000000..97ede7e
--- /dev/null
+++ b/vote/tsconfig.node.json
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "allowSyntheticDefaultImports": true,
+ "strict": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/vote/vite.config.ts b/vote/vite.config.ts
new file mode 100644
index 0000000..5a33944
--- /dev/null
+++ b/vote/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [react()],
+})
diff --git a/vote/yarn.lock b/vote/yarn.lock
new file mode 100644
index 0000000..6571aaf
--- /dev/null
+++ b/vote/yarn.lock
@@ -0,0 +1,1652 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ampproject/remapping@^2.2.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
+ integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2":
+ version "7.24.2"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae"
+ integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==
+ dependencies:
+ "@babel/highlight" "^7.24.2"
+ picocolors "^1.0.0"
+
+"@babel/compat-data@^7.23.5":
+ version "7.24.4"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a"
+ integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==
+
+"@babel/core@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a"
+ integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.24.2"
+ "@babel/generator" "^7.24.5"
+ "@babel/helper-compilation-targets" "^7.23.6"
+ "@babel/helper-module-transforms" "^7.24.5"
+ "@babel/helpers" "^7.24.5"
+ "@babel/parser" "^7.24.5"
+ "@babel/template" "^7.24.0"
+ "@babel/traverse" "^7.24.5"
+ "@babel/types" "^7.24.5"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
+"@babel/generator@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3"
+ integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==
+ dependencies:
+ "@babel/types" "^7.24.5"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+ jsesc "^2.5.1"
+
+"@babel/helper-compilation-targets@^7.23.6":
+ version "7.23.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991"
+ integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==
+ dependencies:
+ "@babel/compat-data" "^7.23.5"
+ "@babel/helper-validator-option" "^7.23.5"
+ browserslist "^4.22.2"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
+"@babel/helper-environment-visitor@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
+ integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
+
+"@babel/helper-function-name@^7.23.0":
+ version "7.23.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759"
+ integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
+ dependencies:
+ "@babel/template" "^7.22.15"
+ "@babel/types" "^7.23.0"
+
+"@babel/helper-hoist-variables@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
+ integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-module-imports@^7.24.3":
+ version "7.24.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128"
+ integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==
+ dependencies:
+ "@babel/types" "^7.24.0"
+
+"@babel/helper-module-transforms@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545"
+ integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-module-imports" "^7.24.3"
+ "@babel/helper-simple-access" "^7.24.5"
+ "@babel/helper-split-export-declaration" "^7.24.5"
+ "@babel/helper-validator-identifier" "^7.24.5"
+
+"@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a"
+ integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==
+
+"@babel/helper-simple-access@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba"
+ integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==
+ dependencies:
+ "@babel/types" "^7.24.5"
+
+"@babel/helper-split-export-declaration@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6"
+ integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==
+ dependencies:
+ "@babel/types" "^7.24.5"
+
+"@babel/helper-string-parser@^7.24.1":
+ version "7.24.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e"
+ integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==
+
+"@babel/helper-validator-identifier@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62"
+ integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==
+
+"@babel/helper-validator-option@^7.23.5":
+ version "7.23.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307"
+ integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
+
+"@babel/helpers@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a"
+ integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==
+ dependencies:
+ "@babel/template" "^7.24.0"
+ "@babel/traverse" "^7.24.5"
+ "@babel/types" "^7.24.5"
+
+"@babel/highlight@^7.24.2":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e"
+ integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.24.5"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
+"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790"
+ integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==
+
+"@babel/plugin-transform-react-jsx-self@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.5.tgz#22cc7572947895c8e4cd034462e65d8ecf857756"
+ integrity sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.24.5"
+
+"@babel/plugin-transform-react-jsx-source@^7.24.1":
+ version "7.24.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz#a2dedb12b09532846721b5df99e52ef8dc3351d0"
+ integrity sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.24.0"
+
+"@babel/template@^7.22.15", "@babel/template@^7.24.0":
+ version "7.24.0"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50"
+ integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==
+ dependencies:
+ "@babel/code-frame" "^7.23.5"
+ "@babel/parser" "^7.24.0"
+ "@babel/types" "^7.24.0"
+
+"@babel/traverse@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8"
+ integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==
+ dependencies:
+ "@babel/code-frame" "^7.24.2"
+ "@babel/generator" "^7.24.5"
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.24.5"
+ "@babel/parser" "^7.24.5"
+ "@babel/types" "^7.24.5"
+ debug "^4.3.1"
+ globals "^11.1.0"
+
+"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7"
+ integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==
+ dependencies:
+ "@babel/helper-string-parser" "^7.24.1"
+ "@babel/helper-validator-identifier" "^7.24.5"
+ to-fast-properties "^2.0.0"
+
+"@esbuild/aix-ppc64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537"
+ integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==
+
+"@esbuild/android-arm64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9"
+ integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==
+
+"@esbuild/android-arm@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995"
+ integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==
+
+"@esbuild/android-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98"
+ integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==
+
+"@esbuild/darwin-arm64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb"
+ integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==
+
+"@esbuild/darwin-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0"
+ integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==
+
+"@esbuild/freebsd-arm64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911"
+ integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==
+
+"@esbuild/freebsd-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c"
+ integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==
+
+"@esbuild/linux-arm64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5"
+ integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==
+
+"@esbuild/linux-arm@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c"
+ integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==
+
+"@esbuild/linux-ia32@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa"
+ integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==
+
+"@esbuild/linux-loong64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5"
+ integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==
+
+"@esbuild/linux-mips64el@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa"
+ integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==
+
+"@esbuild/linux-ppc64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20"
+ integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==
+
+"@esbuild/linux-riscv64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300"
+ integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==
+
+"@esbuild/linux-s390x@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685"
+ integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==
+
+"@esbuild/linux-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff"
+ integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==
+
+"@esbuild/netbsd-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6"
+ integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==
+
+"@esbuild/openbsd-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf"
+ integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==
+
+"@esbuild/sunos-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f"
+ integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==
+
+"@esbuild/win32-arm64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90"
+ integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==
+
+"@esbuild/win32-ia32@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23"
+ integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==
+
+"@esbuild/win32-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc"
+ integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==
+
+"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
+ integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
+ dependencies:
+ eslint-visitor-keys "^3.3.0"
+
+"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
+ integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
+
+"@eslint/eslintrc@^2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
+ integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.3.2"
+ espree "^9.6.0"
+ globals "^13.19.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"
+
+"@eslint/js@8.57.0":
+ version "8.57.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
+ integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
+
+"@humanwhocodes/config-array@^0.11.14":
+ version "0.11.14"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
+ integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
+ dependencies:
+ "@humanwhocodes/object-schema" "^2.0.2"
+ debug "^4.3.1"
+ minimatch "^3.0.5"
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/object-schema@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
+ integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
+
+"@jridgewell/gen-mapping@^0.3.5":
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
+ integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
+ dependencies:
+ "@jridgewell/set-array" "^1.2.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
+"@jridgewell/resolve-uri@^3.1.0":
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
+ integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
+
+"@jridgewell/set-array@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
+ integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
+ version "1.4.15"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+ version "0.3.25"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
+ integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@rollup/rollup-android-arm-eabi@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27"
+ integrity sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==
+
+"@rollup/rollup-android-arm64@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz#97255ef6384c5f73f4800c0de91f5f6518e21203"
+ integrity sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==
+
+"@rollup/rollup-darwin-arm64@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz#b6dd74e117510dfe94541646067b0545b42ff096"
+ integrity sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==
+
+"@rollup/rollup-darwin-x64@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz#e07d76de1cec987673e7f3d48ccb8e106d42c05c"
+ integrity sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==
+
+"@rollup/rollup-linux-arm-gnueabihf@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz#9f1a6d218b560c9d75185af4b8bb42f9f24736b8"
+ integrity sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==
+
+"@rollup/rollup-linux-arm-musleabihf@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz#53618b92e6ffb642c7b620e6e528446511330549"
+ integrity sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==
+
+"@rollup/rollup-linux-arm64-gnu@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz#99a7ba5e719d4f053761a698f7b52291cefba577"
+ integrity sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==
+
+"@rollup/rollup-linux-arm64-musl@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz#f53db99a45d9bc00ce94db8a35efa7c3c144a58c"
+ integrity sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==
+
+"@rollup/rollup-linux-powerpc64le-gnu@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz#cbb0837408fe081ce3435cf3730e090febafc9bf"
+ integrity sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==
+
+"@rollup/rollup-linux-riscv64-gnu@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz#8ed09c1d1262ada4c38d791a28ae0fea28b80cc9"
+ integrity sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==
+
+"@rollup/rollup-linux-s390x-gnu@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz#938138d3c8e0c96f022252a28441dcfb17afd7ec"
+ integrity sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==
+
+"@rollup/rollup-linux-x64-gnu@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz#1a7481137a54740bee1ded4ae5752450f155d942"
+ integrity sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==
+
+"@rollup/rollup-linux-x64-musl@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz#f1186afc601ac4f4fc25fac4ca15ecbee3a1874d"
+ integrity sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==
+
+"@rollup/rollup-win32-arm64-msvc@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz#ed6603e93636a96203c6915be4117245c1bd2daf"
+ integrity sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==
+
+"@rollup/rollup-win32-ia32-msvc@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz#14e0b404b1c25ebe6157a15edb9c46959ba74c54"
+ integrity sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==
+
+"@rollup/rollup-win32-x64-msvc@4.18.0":
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz#5d694d345ce36b6ecf657349e03eb87297e68da4"
+ integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==
+
+"@types/babel__core@^7.20.5":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
+ integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
+ dependencies:
+ "@babel/parser" "^7.20.7"
+ "@babel/types" "^7.20.7"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
+
+"@types/babel__generator@*":
+ version "7.6.8"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab"
+ integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.4.4"
+ resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f"
+ integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*":
+ version "7.20.6"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7"
+ integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==
+ dependencies:
+ "@babel/types" "^7.20.7"
+
+"@types/estree@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
+ integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
+
+"@types/prop-types@*":
+ version "15.7.12"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6"
+ integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
+
+"@types/react-dom@^18.2.22":
+ version "18.3.0"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0"
+ integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*", "@types/react@^18.2.66":
+ version "18.3.2"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.2.tgz#462ae4904973bc212fa910424d901e3d137dbfcd"
+ integrity sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==
+ dependencies:
+ "@types/prop-types" "*"
+ csstype "^3.0.2"
+
+"@typescript-eslint/eslint-plugin@^7.2.0":
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.10.0.tgz#07854a236f107bb45cbf4f62b89474cbea617f50"
+ integrity sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw==
+ dependencies:
+ "@eslint-community/regexpp" "^4.10.0"
+ "@typescript-eslint/scope-manager" "7.10.0"
+ "@typescript-eslint/type-utils" "7.10.0"
+ "@typescript-eslint/utils" "7.10.0"
+ "@typescript-eslint/visitor-keys" "7.10.0"
+ graphemer "^1.4.0"
+ ignore "^5.3.1"
+ natural-compare "^1.4.0"
+ ts-api-utils "^1.3.0"
+
+"@typescript-eslint/parser@^7.2.0":
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.10.0.tgz#e6ac1cba7bc0400a4459e7eb5b23115bd71accfb"
+ integrity sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==
+ dependencies:
+ "@typescript-eslint/scope-manager" "7.10.0"
+ "@typescript-eslint/types" "7.10.0"
+ "@typescript-eslint/typescript-estree" "7.10.0"
+ "@typescript-eslint/visitor-keys" "7.10.0"
+ debug "^4.3.4"
+
+"@typescript-eslint/scope-manager@7.10.0":
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz#054a27b1090199337a39cf755f83d9f2ce26546b"
+ integrity sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==
+ dependencies:
+ "@typescript-eslint/types" "7.10.0"
+ "@typescript-eslint/visitor-keys" "7.10.0"
+
+"@typescript-eslint/type-utils@7.10.0":
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.10.0.tgz#8a75accce851d0a331aa9331268ef64e9b300270"
+ integrity sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "7.10.0"
+ "@typescript-eslint/utils" "7.10.0"
+ debug "^4.3.4"
+ ts-api-utils "^1.3.0"
+
+"@typescript-eslint/types@7.10.0":
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.10.0.tgz#da92309c97932a3a033762fd5faa8b067de84e3b"
+ integrity sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==
+
+"@typescript-eslint/typescript-estree@7.10.0":
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz#6dcdc5de3149916a6a599fa89dde5c471b88b8bb"
+ integrity sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==
+ dependencies:
+ "@typescript-eslint/types" "7.10.0"
+ "@typescript-eslint/visitor-keys" "7.10.0"
+ debug "^4.3.4"
+ globby "^11.1.0"
+ is-glob "^4.0.3"
+ minimatch "^9.0.4"
+ semver "^7.6.0"
+ ts-api-utils "^1.3.0"
+
+"@typescript-eslint/utils@7.10.0":
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.10.0.tgz#8ee43e5608c9f439524eaaea8de5b358b15c51b3"
+ integrity sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.4.0"
+ "@typescript-eslint/scope-manager" "7.10.0"
+ "@typescript-eslint/types" "7.10.0"
+ "@typescript-eslint/typescript-estree" "7.10.0"
+
+"@typescript-eslint/visitor-keys@7.10.0":
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz#2af2e91e73a75dd6b70b4486c48ae9d38a485a78"
+ integrity sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==
+ dependencies:
+ "@typescript-eslint/types" "7.10.0"
+ eslint-visitor-keys "^3.4.3"
+
+"@ungap/structured-clone@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
+ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
+
+"@vitejs/plugin-react@^4.2.1":
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.0.tgz#f20ec2369a92d8abaaefa60da8b7157819d20481"
+ integrity sha512-KcEbMsn4Dpk+LIbHMj7gDPRKaTMStxxWRkRmxsg/jVdFdJCZWt1SchZcf0M4t8lIKdwwMsEyzhrcOXRrDPtOBw==
+ dependencies:
+ "@babel/core" "^7.24.5"
+ "@babel/plugin-transform-react-jsx-self" "^7.24.5"
+ "@babel/plugin-transform-react-jsx-source" "^7.24.1"
+ "@types/babel__core" "^7.20.5"
+ react-refresh "^0.14.2"
+
+acorn-jsx@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn@^8.9.0:
+ version "8.11.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
+ integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
+
+ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ 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"
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+brace-expansion@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
+ integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
+ dependencies:
+ fill-range "^7.1.1"
+
+browserslist@^4.22.2:
+ version "4.23.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
+ integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
+ dependencies:
+ caniuse-lite "^1.0.30001587"
+ electron-to-chromium "^1.4.668"
+ node-releases "^2.0.14"
+ update-browserslist-db "^1.0.13"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+caniuse-lite@^1.0.30001587:
+ version "1.0.30001621"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e"
+ integrity sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==
+
+chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+convert-source-map@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
+ integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+
+cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+csstype@^3.0.2:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
+ integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+
+debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+deep-is@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+electron-to-chromium@^1.4.668:
+ version "1.4.779"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77"
+ integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g==
+
+esbuild@^0.20.1:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1"
+ integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==
+ optionalDependencies:
+ "@esbuild/aix-ppc64" "0.20.2"
+ "@esbuild/android-arm" "0.20.2"
+ "@esbuild/android-arm64" "0.20.2"
+ "@esbuild/android-x64" "0.20.2"
+ "@esbuild/darwin-arm64" "0.20.2"
+ "@esbuild/darwin-x64" "0.20.2"
+ "@esbuild/freebsd-arm64" "0.20.2"
+ "@esbuild/freebsd-x64" "0.20.2"
+ "@esbuild/linux-arm" "0.20.2"
+ "@esbuild/linux-arm64" "0.20.2"
+ "@esbuild/linux-ia32" "0.20.2"
+ "@esbuild/linux-loong64" "0.20.2"
+ "@esbuild/linux-mips64el" "0.20.2"
+ "@esbuild/linux-ppc64" "0.20.2"
+ "@esbuild/linux-riscv64" "0.20.2"
+ "@esbuild/linux-s390x" "0.20.2"
+ "@esbuild/linux-x64" "0.20.2"
+ "@esbuild/netbsd-x64" "0.20.2"
+ "@esbuild/openbsd-x64" "0.20.2"
+ "@esbuild/sunos-x64" "0.20.2"
+ "@esbuild/win32-arm64" "0.20.2"
+ "@esbuild/win32-ia32" "0.20.2"
+ "@esbuild/win32-x64" "0.20.2"
+
+escalade@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
+ integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+eslint-plugin-react-hooks@^4.6.0:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596"
+ integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==
+
+eslint-plugin-react-refresh@^0.4.6:
+ version "0.4.7"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz#1f597f9093b254f10ee0961c139a749acb19af7d"
+ integrity sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==
+
+eslint-scope@^7.2.2:
+ version "7.2.2"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
+ integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+ integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+eslint@^8.57.0:
+ version "8.57.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668"
+ integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/regexpp" "^4.6.1"
+ "@eslint/eslintrc" "^2.1.4"
+ "@eslint/js" "8.57.0"
+ "@humanwhocodes/config-array" "^0.11.14"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
+ "@ungap/structured-clone" "^1.2.0"
+ ajv "^6.12.4"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.3.2"
+ doctrine "^3.0.0"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^7.2.2"
+ eslint-visitor-keys "^3.4.3"
+ espree "^9.6.1"
+ esquery "^1.4.2"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ graphemer "^1.4.0"
+ ignore "^5.2.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ is-path-inside "^3.0.3"
+ js-yaml "^4.1.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.1.2"
+ natural-compare "^1.4.0"
+ optionator "^0.9.3"
+ strip-ansi "^6.0.1"
+ text-table "^0.2.0"
+
+espree@^9.6.0, espree@^9.6.1:
+ version "9.6.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
+ integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
+ dependencies:
+ acorn "^8.9.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.4.1"
+
+esquery@^1.4.2:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
+ integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^5.1.0, estraverse@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^3.2.9:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
+ integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+fastq@^1.6.0:
+ version "1.17.1"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
+ integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
+ dependencies:
+ reusify "^1.0.4"
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
+fill-range@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
+ integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+flat-cache@^3.0.4:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
+ integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
+ dependencies:
+ flatted "^3.2.9"
+ keyv "^4.5.3"
+ rimraf "^3.0.2"
+
+flatted@^3.2.9:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
+ integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+
+fsevents@~2.3.2, fsevents@~2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+glob-parent@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
+glob@^7.1.3:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^13.19.0:
+ version "13.24.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
+ integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
+ dependencies:
+ type-fest "^0.20.2"
+
+globby@^11.1.0:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^3.0.0"
+
+graphemer@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
+ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+ignore@^5.2.0, ignore@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
+ integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
+
+import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-path-inside@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+json-buffer@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
+ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+
+json5@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+keyv@^4.5.3:
+ version "4.5.4"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
+ integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
+ dependencies:
+ json-buffer "3.0.1"
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+loose-envify@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+merge2@^1.3.0, merge2@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromatch@^4.0.4:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
+ integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
+ dependencies:
+ braces "^3.0.3"
+ picomatch "^2.3.1"
+
+minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^9.0.4:
+ version "9.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51"
+ integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+nanoid@^3.3.7:
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
+ integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+node-releases@^2.0.14:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
+ integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+ dependencies:
+ wrappy "1"
+
+optionator@^0.9.3:
+ version "0.9.4"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
+ integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
+ 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"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+
+path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+picocolors@^1.0.0, picocolors@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
+ integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
+
+picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+postcss@^8.4.38:
+ version "8.4.38"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
+ integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
+ dependencies:
+ nanoid "^3.3.7"
+ picocolors "^1.0.0"
+ source-map-js "^1.2.0"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+punycode@^2.1.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
+ integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+react-dom@^18.2.0:
+ version "18.3.1"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4"
+ integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
+ dependencies:
+ loose-envify "^1.1.0"
+ scheduler "^0.23.2"
+
+react-refresh@^0.14.2:
+ version "0.14.2"
+ resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
+ integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
+
+react@^18.2.0:
+ version "18.3.1"
+ resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
+ integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+rollup@^4.13.0:
+ version "4.18.0"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.18.0.tgz#497f60f0c5308e4602cf41136339fbf87d5f5dda"
+ integrity sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==
+ dependencies:
+ "@types/estree" "1.0.5"
+ optionalDependencies:
+ "@rollup/rollup-android-arm-eabi" "4.18.0"
+ "@rollup/rollup-android-arm64" "4.18.0"
+ "@rollup/rollup-darwin-arm64" "4.18.0"
+ "@rollup/rollup-darwin-x64" "4.18.0"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.18.0"
+ "@rollup/rollup-linux-arm-musleabihf" "4.18.0"
+ "@rollup/rollup-linux-arm64-gnu" "4.18.0"
+ "@rollup/rollup-linux-arm64-musl" "4.18.0"
+ "@rollup/rollup-linux-powerpc64le-gnu" "4.18.0"
+ "@rollup/rollup-linux-riscv64-gnu" "4.18.0"
+ "@rollup/rollup-linux-s390x-gnu" "4.18.0"
+ "@rollup/rollup-linux-x64-gnu" "4.18.0"
+ "@rollup/rollup-linux-x64-musl" "4.18.0"
+ "@rollup/rollup-win32-arm64-msvc" "4.18.0"
+ "@rollup/rollup-win32-ia32-msvc" "4.18.0"
+ "@rollup/rollup-win32-x64-msvc" "4.18.0"
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+scheduler@^0.23.2:
+ version "0.23.2"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
+ integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
+semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^7.6.0:
+ version "7.6.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
+ integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+source-map-js@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
+ integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
+
+strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+ts-api-utils@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
+ integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-fest@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+
+typescript@^5.2.2:
+ version "5.4.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611"
+ integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==
+
+update-browserslist-db@^1.0.13:
+ version "1.0.16"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356"
+ integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==
+ dependencies:
+ escalade "^3.1.2"
+ picocolors "^1.0.1"
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+vite@^5.2.0:
+ version "5.2.11"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.11.tgz#726ec05555431735853417c3c0bfb36003ca0cbd"
+ integrity sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==
+ dependencies:
+ esbuild "^0.20.1"
+ postcss "^8.4.38"
+ rollup "^4.13.0"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+word-wrap@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
+ integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
From 881dab2e7c3ab6040fd1cbff94c42a151ceaa30b Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 23 May 2024 16:52:46 +0900
Subject: [PATCH 04/72] =?UTF-8?q?etc:=20eslint,=20=ED=94=84=EB=A6=AC?=
=?UTF-8?q?=ED=8B=B0=EC=96=B4=20=EC=B4=88=EA=B8=B0=EC=84=B8=ED=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/.eslintrc.cjs | 25 ++++++++++++++-----------
vote/.prettierrc | 8 ++++++++
vote/src/App.tsx | 22 +++++++++-------------
vote/src/main.tsx | 12 ++++++------
4 files changed, 37 insertions(+), 30 deletions(-)
create mode 100644 vote/.prettierrc
diff --git a/vote/.eslintrc.cjs b/vote/.eslintrc.cjs
index d6c9537..cfa97e9 100644
--- a/vote/.eslintrc.cjs
+++ b/vote/.eslintrc.cjs
@@ -2,17 +2,20 @@ module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
- 'eslint:recommended',
- 'plugin:@typescript-eslint/recommended',
- 'plugin:react-hooks/recommended',
+ "eslint:recommended",
+ "plugin:@typescript-eslint/recommended",
+ "plugin:react-hooks/recommended",
+ "some-other-config-you-use",
+ "prettier",
],
- ignorePatterns: ['dist', '.eslintrc.cjs'],
- parser: '@typescript-eslint/parser',
- plugins: ['react-refresh'],
+ ignorePatterns: ["dist", ".eslintrc.cjs"],
+ parser: "@typescript-eslint/parser",
+ plugins: ["prettier"],
rules: {
- 'react-refresh/only-export-components': [
- 'warn',
- { allowConstantExport: true },
- ],
+ "prettier/prettier": "error",
},
-}
+ // plugins: ["react-refresh"],
+ // rules: {
+ // "react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
+ // },
+};
diff --git a/vote/.prettierrc b/vote/.prettierrc
new file mode 100644
index 0000000..0392bfd
--- /dev/null
+++ b/vote/.prettierrc
@@ -0,0 +1,8 @@
+{
+ "semi": true,
+ "tabWidth": 2,
+ "printWidth": 120,
+ "trailingComma": "all",
+ "bracketSameLine": true,
+ "endOfLine": "auto"
+}
diff --git a/vote/src/App.tsx b/vote/src/App.tsx
index afe48ac..e6c09bb 100644
--- a/vote/src/App.tsx
+++ b/vote/src/App.tsx
@@ -1,10 +1,10 @@
-import { useState } from 'react'
-import reactLogo from './assets/react.svg'
-import viteLogo from '/vite.svg'
-import './App.css'
+import { useState } from "react";
+import reactLogo from "./assets/react.svg";
+import viteLogo from "/vite.svg";
+import "./App.css";
function App() {
- const [count, setCount] = useState(0)
+ const [count, setCount] = useState(0);
return (
<>
@@ -18,18 +18,14 @@ function App() {
Vite + React
-
+
Edit src/App.tsx and save to test HMR
-
- Click on the Vite and React logos to learn more
-
+ Click on the Vite and React logos to learn more
>
- )
+ );
}
-export default App
+export default App;
diff --git a/vote/src/main.tsx b/vote/src/main.tsx
index 3d7150d..f25366e 100644
--- a/vote/src/main.tsx
+++ b/vote/src/main.tsx
@@ -1,10 +1,10 @@
-import React from 'react'
-import ReactDOM from 'react-dom/client'
-import App from './App.tsx'
-import './index.css'
+import React from "react";
+import ReactDOM from "react-dom/client";
+import App from "./App.tsx";
+import "./index.css";
-ReactDOM.createRoot(document.getElementById('root')!).render(
+ReactDOM.createRoot(document.getElementById("root")!).render(
,
-)
+);
From 81e87330a098faa4a7a95330cbd7d2cbd5f504e9 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 23 May 2024 16:54:10 +0900
Subject: [PATCH 05/72] =?UTF-8?q?etc:=20=EC=8A=A4=ED=83=80=EC=9D=BC?=
=?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=84=A4=EC=B9=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/package.json | 7 ++-
vote/yarn.lock | 152 +++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 156 insertions(+), 3 deletions(-)
diff --git a/vote/package.json b/vote/package.json
index e38163e..6a90a19 100644
--- a/vote/package.json
+++ b/vote/package.json
@@ -11,17 +11,22 @@
},
"dependencies": {
"react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "react-dom": "^18.2.0",
+ "styled-components": "^6.1.11"
},
"devDependencies": {
"@types/react": "^18.2.66",
"@types/react-dom": "^18.2.22",
+ "@types/styled-components": "^5.1.34",
"@typescript-eslint/eslint-plugin": "^7.2.0",
"@typescript-eslint/parser": "^7.2.0",
"@vitejs/plugin-react": "^4.2.1",
"eslint": "^8.57.0",
+ "eslint-config-prettier": "^9.1.0",
+ "eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.6",
+ "prettier": "^3.2.5",
"typescript": "^5.2.2",
"vite": "^5.2.0"
}
diff --git a/vote/yarn.lock b/vote/yarn.lock
index 6571aaf..9f7d327 100644
--- a/vote/yarn.lock
+++ b/vote/yarn.lock
@@ -209,6 +209,23 @@
"@babel/helper-validator-identifier" "^7.24.5"
to-fast-properties "^2.0.0"
+"@emotion/is-prop-valid@1.2.2":
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz#d4175076679c6a26faa92b03bb786f9e52612337"
+ integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==
+ dependencies:
+ "@emotion/memoize" "^0.8.1"
+
+"@emotion/memoize@^0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17"
+ integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==
+
+"@emotion/unitless@0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3"
+ integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==
+
"@esbuild/aix-ppc64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537"
@@ -428,6 +445,11 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
+"@pkgr/core@^0.1.0":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31"
+ integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
+
"@rollup/rollup-android-arm-eabi@4.18.0":
version "4.18.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27"
@@ -546,6 +568,14 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
+"@types/hoist-non-react-statics@*":
+ version "3.3.5"
+ resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494"
+ integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==
+ dependencies:
+ "@types/react" "*"
+ hoist-non-react-statics "^3.3.0"
+
"@types/prop-types@*":
version "15.7.12"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6"
@@ -566,6 +596,20 @@
"@types/prop-types" "*"
csstype "^3.0.2"
+"@types/styled-components@^5.1.34":
+ version "5.1.34"
+ resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.34.tgz#4107df8ef8a7eaba4fa6b05f78f93fba4daf0300"
+ integrity sha512-mmiVvwpYklFIv9E8qfxuPyIt/OuyIrn6gMOAMOFUO3WJfSrSE+sGUoa4PiZj77Ut7bKZpaa6o1fBKS/4TOEvnA==
+ dependencies:
+ "@types/hoist-non-react-statics" "*"
+ "@types/react" "*"
+ csstype "^3.0.2"
+
+"@types/stylis@4.2.5":
+ version "4.2.5"
+ resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.5.tgz#1daa6456f40959d06157698a653a9ab0a70281df"
+ integrity sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==
+
"@typescript-eslint/eslint-plugin@^7.2.0":
version "7.10.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.10.0.tgz#07854a236f107bb45cbf4f62b89474cbea617f50"
@@ -754,6 +798,11 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+camelize@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3"
+ integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==
+
caniuse-lite@^1.0.30001587:
version "1.0.30001621"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e"
@@ -819,7 +868,21 @@ cross-spawn@^7.0.2:
shebang-command "^2.0.0"
which "^2.0.1"
-csstype@^3.0.2:
+css-color-keywords@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
+ integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==
+
+css-to-react-native@3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32"
+ integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==
+ dependencies:
+ camelize "^1.0.0"
+ css-color-keywords "^1.0.0"
+ postcss-value-parser "^4.0.2"
+
+csstype@3.1.3, csstype@^3.0.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
@@ -899,6 +962,19 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+eslint-config-prettier@^9.1.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f"
+ integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
+
+eslint-plugin-prettier@^5.1.3:
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1"
+ integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==
+ dependencies:
+ prettier-linter-helpers "^1.0.0"
+ synckit "^0.8.6"
+
eslint-plugin-react-hooks@^4.6.0:
version "4.6.2"
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596"
@@ -1004,6 +1080,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+fast-diff@^1.1.2:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
+ integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
+
fast-glob@^3.2.9:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
@@ -1148,6 +1229,13 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+hoist-non-react-statics@^3.3.0:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
ignore@^5.2.0, ignore@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
@@ -1401,7 +1489,12 @@ picomatch@^2.3.1:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-postcss@^8.4.38:
+postcss-value-parser@^4.0.2:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
+ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@8.4.38, postcss@^8.4.38:
version "8.4.38"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
@@ -1415,6 +1508,18 @@ prelude-ls@^1.2.1:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+prettier-linter-helpers@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
+ integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
+ dependencies:
+ fast-diff "^1.1.2"
+
+prettier@^3.2.5:
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368"
+ integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==
+
punycode@^2.1.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
@@ -1433,6 +1538,11 @@ react-dom@^18.2.0:
loose-envify "^1.1.0"
scheduler "^0.23.2"
+react-is@^16.7.0:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
react-refresh@^0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
@@ -1511,6 +1621,11 @@ semver@^7.6.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
+shallowequal@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
+ integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
+
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -1545,6 +1660,26 @@ strip-json-comments@^3.1.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+styled-components@^6.1.11:
+ version "6.1.11"
+ resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.11.tgz#01948e5195bf1d39e57e0a85b41958c80e40cfb8"
+ integrity sha512-Ui0jXPzbp1phYij90h12ksljKGqF8ncGx+pjrNPsSPhbUUjWT2tD1FwGo2LF6USCnbrsIhNngDfodhxbegfEOA==
+ dependencies:
+ "@emotion/is-prop-valid" "1.2.2"
+ "@emotion/unitless" "0.8.1"
+ "@types/stylis" "4.2.5"
+ css-to-react-native "3.2.0"
+ csstype "3.1.3"
+ postcss "8.4.38"
+ shallowequal "1.1.0"
+ stylis "4.3.2"
+ tslib "2.6.2"
+
+stylis@4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444"
+ integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==
+
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -1559,6 +1694,14 @@ supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
+synckit@^0.8.6:
+ version "0.8.8"
+ resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7"
+ integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==
+ dependencies:
+ "@pkgr/core" "^0.1.0"
+ tslib "^2.6.2"
+
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -1581,6 +1724,11 @@ ts-api-utils@^1.3.0:
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
+tslib@2.6.2, tslib@^2.6.2:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
From 3a0a3ff8c4a34d07d469d828e5e63bc73665401b Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 23 May 2024 18:04:52 +0900
Subject: [PATCH 06/72] =?UTF-8?q?etc:=20=ED=94=84=EB=A6=AC=ED=8B=B0?=
=?UTF-8?q?=EC=96=B4=20=EC=84=A4=EC=A0=95=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/.prettierrc | 2 +-
vote/src/App.tsx | 8 +-
vote/yarn.lock | 476 +++++++++++++++++++++++++++++++++++++++++++++--
3 files changed, 470 insertions(+), 16 deletions(-)
diff --git a/vote/.prettierrc b/vote/.prettierrc
index 0392bfd..ab7299b 100644
--- a/vote/.prettierrc
+++ b/vote/.prettierrc
@@ -1,7 +1,7 @@
{
"semi": true,
"tabWidth": 2,
- "printWidth": 120,
+ "printWidth": 80,
"trailingComma": "all",
"bracketSameLine": true,
"endOfLine": "auto"
diff --git a/vote/src/App.tsx b/vote/src/App.tsx
index e6c09bb..52ea980 100644
--- a/vote/src/App.tsx
+++ b/vote/src/App.tsx
@@ -18,12 +18,16 @@ function App() {
Vite + React
-
+
Edit src/App.tsx and save to test HMR
- Click on the Vite and React logos to learn more
+
+ Click on the Vite and React logos to learn more
+
>
);
}
diff --git a/vote/yarn.lock b/vote/yarn.lock
index 9f7d327..39de264 100644
--- a/vote/yarn.lock
+++ b/vote/yarn.lock
@@ -10,7 +10,7 @@
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
-"@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2":
version "7.24.2"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae"
integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==
@@ -156,7 +156,7 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5":
+"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5", "@babel/parser@^7.8.3":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790"
integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==
@@ -184,7 +184,7 @@
"@babel/parser" "^7.24.0"
"@babel/types" "^7.24.0"
-"@babel/traverse@^7.24.5":
+"@babel/traverse@^7.24.5", "@babel/traverse@^7.8.3":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8"
integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==
@@ -209,6 +209,31 @@
"@babel/helper-validator-identifier" "^7.24.5"
to-fast-properties "^2.0.0"
+"@csstools/css-parser-algorithms@^2.6.1":
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz#b5e7eb2bd2a42e968ef61484f1490a8a4148a8eb"
+ integrity sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==
+
+"@csstools/css-tokenizer@^2.2.4":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz#3d47e101ad48d815a4bdce8159fb5764f087f17a"
+ integrity sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==
+
+"@csstools/media-query-list-parser@^2.1.9":
+ version "2.1.11"
+ resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz#465aa42f268599729350e305e1ae14a30c1daf51"
+ integrity sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==
+
+"@csstools/selector-specificity@^3.0.3":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz#63085d2995ca0f0e55aa8b8a07d69bfd48b844fe"
+ integrity sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==
+
+"@dual-bundle/import-meta-resolve@^4.0.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#519c1549b0e147759e7825701ecffd25e5819f7b"
+ integrity sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==
+
"@emotion/is-prop-valid@1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz#d4175076679c6a26faa92b03bb786f9e52612337"
@@ -727,11 +752,26 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
+ajv@^8.0.1:
+ version "8.13.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91"
+ integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.4.1"
+
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+ansi-regex@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
+ integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -739,7 +779,7 @@ ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
-ansi-styles@^4.1.0:
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
@@ -756,11 +796,21 @@ array-union@^2.1.0:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+astral-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
+ integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
+
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+balanced-match@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9"
+ integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -849,6 +899,11 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+colord@^2.9.3:
+ version "2.9.3"
+ resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
+ integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
+
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -859,6 +914,16 @@ convert-source-map@^2.0.0:
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
+cosmiconfig@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d"
+ integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==
+ dependencies:
+ env-paths "^2.2.1"
+ import-fresh "^3.3.0"
+ js-yaml "^4.1.0"
+ parse-json "^5.2.0"
+
cross-spawn@^7.0.2:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
@@ -873,6 +938,11 @@ css-color-keywords@^1.0.0:
resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==
+css-functions-list@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.2.tgz#9a54c6dd8416ed25c1079cd88234e927526c1922"
+ integrity sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==
+
css-to-react-native@3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32"
@@ -882,6 +952,19 @@ css-to-react-native@3.2.0:
css-color-keywords "^1.0.0"
postcss-value-parser "^4.0.2"
+css-tree@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20"
+ integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==
+ dependencies:
+ mdn-data "2.0.30"
+ source-map-js "^1.0.1"
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
csstype@3.1.3, csstype@^3.0.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
@@ -918,6 +1001,23 @@ electron-to-chromium@^1.4.668:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77"
integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g==
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+env-paths@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
+ integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
esbuild@^0.20.1:
version "0.20.2"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1"
@@ -1085,7 +1185,7 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
-fast-glob@^3.2.9:
+fast-glob@^3.2.9, fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -1106,6 +1206,11 @@ fast-levenshtein@^2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+fastest-levenshtein@^1.0.16:
+ version "1.0.16"
+ resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5"
+ integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
+
fastq@^1.6.0:
version "1.17.1"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
@@ -1120,6 +1225,13 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
+file-entry-cache@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
+ integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
+ dependencies:
+ flat-cache "^4.0.0"
+
fill-range@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
@@ -1144,6 +1256,14 @@ flat-cache@^3.0.4:
keyv "^4.5.3"
rimraf "^3.0.2"
+flat-cache@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
+ integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
+ dependencies:
+ flatted "^3.2.9"
+ keyv "^4.5.4"
+
flatted@^3.2.9:
version "3.3.1"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
@@ -1190,6 +1310,22 @@ glob@^7.1.3:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global-modules@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
+ dependencies:
+ global-prefix "^3.0.0"
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@@ -1214,6 +1350,11 @@ globby@^11.1.0:
merge2 "^1.4.1"
slash "^3.0.0"
+globjoin@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43"
+ integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==
+
graphemer@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
@@ -1236,12 +1377,17 @@ hoist-non-react-statics@^3.3.0:
dependencies:
react-is "^16.7.0"
+html-tags@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce"
+ integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
+
ignore@^5.2.0, ignore@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
-import-fresh@^3.2.1:
+import-fresh@^3.2.1, import-fresh@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
@@ -1267,11 +1413,26 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+ini@^1.3.5:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
@@ -1289,6 +1450,11 @@ is-path-inside@^3.0.3:
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+is-plain-object@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -1316,11 +1482,21 @@ json-buffer@3.0.1:
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
@@ -1331,13 +1507,23 @@ json5@^2.2.3:
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
-keyv@^4.5.3:
+keyv@^4.5.3, keyv@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
dependencies:
json-buffer "3.0.1"
+kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+known-css-properties@^0.30.0:
+ version "0.30.0"
+ resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.30.0.tgz#34dd1f39c805c65a6dfa6ea76206b20dc523dd96"
+ integrity sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==
+
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -1346,6 +1532,11 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
locate-path@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
@@ -1358,6 +1549,11 @@ lodash.merge@^4.6.2:
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+lodash.truncate@^4.4.2:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
+ integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==
+
loose-envify@^1.1.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -1372,12 +1568,27 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
+mathml-tag-names@^2.1.3:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
+ integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
+
+mdn-data@2.0.30:
+ version "2.0.30"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc"
+ integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==
+
+meow@^13.2.0:
+ version "13.2.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-13.2.0.tgz#6b7d63f913f984063b3cc261b6e8800c4cd3474f"
+ integrity sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==
+
merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-micromatch@^4.0.4:
+micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.7"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
@@ -1419,6 +1630,11 @@ node-releases@^2.0.14:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
+normalize-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -1459,6 +1675,16 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
+parse-json@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
path-exists@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
@@ -1479,6 +1705,11 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+picocolors@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f"
+ integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
+
picocolors@^1.0.0, picocolors@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
@@ -1489,12 +1720,35 @@ picomatch@^2.3.1:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-postcss-value-parser@^4.0.2:
+postcss-resolve-nested-selector@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e"
+ integrity sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==
+
+postcss-safe-parser@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz#6273d4e5149e286db5a45bc6cf6eafcad464014a"
+ integrity sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==
+
+postcss-selector-parser@^6.0.16:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53"
+ integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-sorting@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-8.0.2.tgz#6393385ece272baf74bee9820fb1b58098e4eeca"
+ integrity sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==
+
+postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss@8.4.38, postcss@^8.4.38:
+postcss@8.4.38, postcss@^8.4.32, postcss@^8.4.38:
version "8.4.38"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
@@ -1503,6 +1757,14 @@ postcss@8.4.38, postcss@^8.4.38:
picocolors "^1.0.0"
source-map-js "^1.2.0"
+postcss@^7.0.26:
+ version "7.0.39"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -1555,11 +1817,21 @@ react@^18.2.0:
dependencies:
loose-envify "^1.1.0"
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+resolve-from@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+
reusify@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
@@ -1638,16 +1910,44 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+signal-exit@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
+ integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-source-map-js@^1.2.0:
+slice-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
+ integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
+source-map-js@^1.0.1, source-map-js@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
+source-map@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
@@ -1655,6 +1955,13 @@ strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
+strip-ansi@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
+ integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
+ dependencies:
+ ansi-regex "^6.0.1"
+
strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
@@ -1675,6 +1982,105 @@ styled-components@^6.1.11:
stylis "4.3.2"
tslib "2.6.2"
+stylelint-config-concentric-order@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-concentric-order/-/stylelint-config-concentric-order-5.2.0.tgz#8530ec487c54e3089bcc9a8be525d1f91cb37b5d"
+ integrity sha512-vxHxMNoMIk+sJyW+KRj0Nr8fmTqvS+JK+yftLDElOMoQqdCaDT4vSYP4iTGCmJ2O7KKfFHceQ2NtbfUhoKh9Fw==
+ dependencies:
+ stylelint-order "^6.0.0"
+
+stylelint-config-prettier@^9.0.5:
+ version "9.0.5"
+ resolved "https://registry.yarnpkg.com/stylelint-config-prettier/-/stylelint-config-prettier-9.0.5.tgz#9f78bbf31c7307ca2df2dd60f42c7014ee9da56e"
+ integrity sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==
+
+stylelint-config-recommended@^14.0.0:
+ version "14.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-14.0.0.tgz#b395c7014838d2aaca1755eebd914d0bb5274994"
+ integrity sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==
+
+stylelint-config-standard@^36.0.0:
+ version "36.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-36.0.0.tgz#6704c044d611edc12692d4a5e37b039a441604d4"
+ integrity sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==
+ dependencies:
+ stylelint-config-recommended "^14.0.0"
+
+stylelint-config-styled-components@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/stylelint-config-styled-components/-/stylelint-config-styled-components-0.1.1.tgz#b408388d7c687833ab4be4c4e6522d97d2827ede"
+ integrity sha512-z5Xz/9GmvxO6e/DLzBMwkB85zHxEEjN6K7Cj80Bi+o/9vR9eS3GX3E9VuMnX9WLFYulqbqLtTapGGY28JBiy9Q==
+
+stylelint-order@^6.0.0:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/stylelint-order/-/stylelint-order-6.0.4.tgz#3e80d876c61a98d2640de181433686f24284748b"
+ integrity sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==
+ dependencies:
+ postcss "^8.4.32"
+ postcss-sorting "^8.0.2"
+
+stylelint-prettier@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-prettier/-/stylelint-prettier-5.0.0.tgz#515a87800228f6bea603966462f7119755ee9b82"
+ integrity sha512-RHfSlRJIsaVg5Br94gZVdWlz/rBTyQzZflNE6dXvSxt/GthWMY3gEHsWZEBaVGg7GM+XrtVSp4RznFlB7i0oyw==
+ dependencies:
+ prettier-linter-helpers "^1.0.0"
+
+stylelint-processor-styled-components@^1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/stylelint-processor-styled-components/-/stylelint-processor-styled-components-1.10.0.tgz#8082fc68779476aac411d3afffac0bc833d77a29"
+ integrity sha512-g4HpN9rm0JD0LoHuIOcd/FIjTZCJ0ErQ+dC3VTxp+dSvnkV+MklKCCmCQEdz5K5WxF4vPuzfVgdbSDuPYGZhoA==
+ dependencies:
+ "@babel/parser" "^7.8.3"
+ "@babel/traverse" "^7.8.3"
+ micromatch "^4.0.2"
+ postcss "^7.0.26"
+
+stylelint@^16.5.0:
+ version "16.5.0"
+ resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.5.0.tgz#4e3aff7cc2294fa54da729b972a6c38bf2a584a0"
+ integrity sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==
+ dependencies:
+ "@csstools/css-parser-algorithms" "^2.6.1"
+ "@csstools/css-tokenizer" "^2.2.4"
+ "@csstools/media-query-list-parser" "^2.1.9"
+ "@csstools/selector-specificity" "^3.0.3"
+ "@dual-bundle/import-meta-resolve" "^4.0.0"
+ balanced-match "^2.0.0"
+ colord "^2.9.3"
+ cosmiconfig "^9.0.0"
+ css-functions-list "^3.2.2"
+ css-tree "^2.3.1"
+ debug "^4.3.4"
+ fast-glob "^3.3.2"
+ fastest-levenshtein "^1.0.16"
+ file-entry-cache "^8.0.0"
+ global-modules "^2.0.0"
+ globby "^11.1.0"
+ globjoin "^0.1.4"
+ html-tags "^3.3.1"
+ ignore "^5.3.1"
+ imurmurhash "^0.1.4"
+ is-plain-object "^5.0.0"
+ known-css-properties "^0.30.0"
+ mathml-tag-names "^2.1.3"
+ meow "^13.2.0"
+ micromatch "^4.0.5"
+ normalize-path "^3.0.0"
+ picocolors "^1.0.0"
+ postcss "^8.4.38"
+ postcss-resolve-nested-selector "^0.1.1"
+ postcss-safe-parser "^7.0.0"
+ postcss-selector-parser "^6.0.16"
+ postcss-value-parser "^4.2.0"
+ resolve-from "^5.0.0"
+ string-width "^4.2.3"
+ strip-ansi "^7.1.0"
+ supports-hyperlinks "^3.0.0"
+ svg-tags "^1.0.0"
+ table "^6.8.2"
+ write-file-atomic "^5.0.1"
+
stylis@4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444"
@@ -1687,13 +2093,26 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
-supports-color@^7.1.0:
+supports-color@^7.0.0, supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
+supports-hyperlinks@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz#c711352a5c89070779b4dad54c05a2f14b15c94b"
+ integrity sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==
+ dependencies:
+ has-flag "^4.0.0"
+ supports-color "^7.0.0"
+
+svg-tags@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
+ integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
+
synckit@^0.8.6:
version "0.8.8"
resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7"
@@ -1702,6 +2121,17 @@ synckit@^0.8.6:
"@pkgr/core" "^0.1.0"
tslib "^2.6.2"
+table@^6.8.2:
+ version "6.8.2"
+ resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58"
+ integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==
+ dependencies:
+ ajv "^8.0.1"
+ lodash.truncate "^4.4.2"
+ slice-ansi "^4.0.0"
+ string-width "^4.2.3"
+ strip-ansi "^6.0.1"
+
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -1754,13 +2184,18 @@ update-browserslist-db@^1.0.13:
escalade "^3.1.2"
picocolors "^1.0.1"
-uri-js@^4.2.2:
+uri-js@^4.2.2, uri-js@^4.4.1:
version "4.4.1"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
dependencies:
punycode "^2.1.0"
+util-deprecate@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
vite@^5.2.0:
version "5.2.11"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.11.tgz#726ec05555431735853417c3c0bfb36003ca0cbd"
@@ -1772,6 +2207,13 @@ vite@^5.2.0:
optionalDependencies:
fsevents "~2.3.3"
+which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
which@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
@@ -1789,6 +2231,14 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+write-file-atomic@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7"
+ integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==
+ dependencies:
+ imurmurhash "^0.1.4"
+ signal-exit "^4.0.1"
+
yallist@^3.0.2:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
From 67584a929af63a415aba377a0f46962ae17dd930 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 27 May 2024 20:49:59 +0900
Subject: [PATCH 07/72] =?UTF-8?q?etc:=20alias=20=EC=88=98=EC=A0=95,=20?=
=?UTF-8?q?=ED=8C=A8=ED=82=A4=EC=A7=80=20=EA=B4=80=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/index.html | 14 +-
vote/package.json | 9 +-
vote/src/App.css | 42 ---
vote/tsconfig.json | 18 +-
vote/vite.config.ts | 29 +-
vote/yarn.lock | 829 ++++++++++++++++++++++----------------------
6 files changed, 469 insertions(+), 472 deletions(-)
delete mode 100644 vote/src/App.css
diff --git a/vote/index.html b/vote/index.html
index e4b78ea..a87da63 100644
--- a/vote/index.html
+++ b/vote/index.html
@@ -1,10 +1,18 @@
-
+
-
- Vite + React + TS
+ 리액트 투표페이지
+
+
+
+
diff --git a/vote/package.json b/vote/package.json
index 6a90a19..367db46 100644
--- a/vote/package.json
+++ b/vote/package.json
@@ -10,9 +10,12 @@
"preview": "vite preview"
},
"dependencies": {
+ "@types/react-router-dom": "^5.3.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
- "styled-components": "^6.1.11"
+ "react-router-dom": "^6.23.1",
+ "styled-components": "^6.1.11",
+ "styled-reset": "^4.5.2"
},
"devDependencies": {
"@types/react": "^18.2.66",
@@ -28,6 +31,8 @@
"eslint-plugin-react-refresh": "^0.4.6",
"prettier": "^3.2.5",
"typescript": "^5.2.2",
- "vite": "^5.2.0"
+ "vite": "^5.2.0",
+ "vite-plugin-svgr": "^4.2.0",
+ "vite-tsconfig-paths": "^4.3.2"
}
}
diff --git a/vote/src/App.css b/vote/src/App.css
deleted file mode 100644
index b9d355d..0000000
--- a/vote/src/App.css
+++ /dev/null
@@ -1,42 +0,0 @@
-#root {
- max-width: 1280px;
- margin: 0 auto;
- padding: 2rem;
- text-align: center;
-}
-
-.logo {
- height: 6em;
- padding: 1.5em;
- will-change: filter;
- transition: filter 300ms;
-}
-.logo:hover {
- filter: drop-shadow(0 0 2em #646cffaa);
-}
-.logo.react:hover {
- filter: drop-shadow(0 0 2em #61dafbaa);
-}
-
-@keyframes logo-spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
-
-@media (prefers-reduced-motion: no-preference) {
- a:nth-of-type(2) .logo {
- animation: logo-spin infinite 20s linear;
- }
-}
-
-.card {
- padding: 2em;
-}
-
-.read-the-docs {
- color: #888;
-}
diff --git a/vote/tsconfig.json b/vote/tsconfig.json
index a7fc6fb..319ba20 100644
--- a/vote/tsconfig.json
+++ b/vote/tsconfig.json
@@ -18,7 +18,23 @@
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
- "noFallthroughCasesInSwitch": true
+ "noFallthroughCasesInSwitch": true,
+
+ /* Path and Alias */
+ "baseUrl": "./src",
+ "types": ["node"],
+ "paths": {
+ "@api/*": ["api/*"],
+ "@atom/*": ["atom/*"],
+ "@assets/*": ["assets/*"],
+ "@components/*": ["components/*"],
+ "@core/*": ["core/*"],
+ "@hooks/*": ["hooks/*"],
+ "@pages/*": ["pages/*"],
+ "@styles/*": ["styles/*"],
+ "@utils/*": ["utils/*"],
+ "@type/*": ["type/*"]
+ }
},
"include": ["src"],
"references": [{ "path": "./tsconfig.node.json" }]
diff --git a/vote/vite.config.ts b/vote/vite.config.ts
index 5a33944..ae06e94 100644
--- a/vote/vite.config.ts
+++ b/vote/vite.config.ts
@@ -1,7 +1,28 @@
-import { defineConfig } from 'vite'
-import react from '@vitejs/plugin-react'
+import { defineConfig } from "vite";
+import react from "@vitejs/plugin-react";
+import tsconfigPaths from "vite-tsconfig-paths";
+import svgr from "vite-plugin-svgr";
+import path from "path";
// https://vitejs.dev/config/
export default defineConfig({
- plugins: [react()],
-})
+ plugins: [react(), tsconfigPaths(), svgr()],
+ resolve: {
+ alias: [
+ { find: "@", replacement: path.resolve(__dirname, "src") },
+ { find: "@api", replacement: path.resolve(__dirname, "src/api") },
+ { find: "@atom", replacement: path.resolve(__dirname, "src/atom") },
+ { find: "@assets", replacement: path.resolve(__dirname, "src/assets") },
+ {
+ find: "@components",
+ replacement: path.resolve(__dirname, "src/components"),
+ },
+ { find: "@core", replacement: path.resolve(__dirname, "src/core") },
+ { find: "@hooks", replacement: path.resolve(__dirname, "src/hooks") },
+ { find: "@pages", replacement: path.resolve(__dirname, "src/pages") },
+ { find: "@styles", replacement: path.resolve(__dirname, "src/styles") },
+ { find: "@utils", replacement: path.resolve(__dirname, "src/utils") },
+ { find: "@type", replacement: path.resolve(__dirname, "src/type") },
+ ],
+ },
+});
diff --git a/vote/yarn.lock b/vote/yarn.lock
index 39de264..44bf691 100644
--- a/vote/yarn.lock
+++ b/vote/yarn.lock
@@ -10,7 +10,15 @@
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2"
+ integrity sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==
+ dependencies:
+ "@babel/highlight" "^7.24.6"
+ picocolors "^1.0.0"
+
+"@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2":
version "7.24.2"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae"
integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==
@@ -23,6 +31,32 @@
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a"
integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==
+"@babel/compat-data@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.6.tgz#b3600217688cabb26e25f8e467019e66d71b7ae2"
+ integrity sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==
+
+"@babel/core@^7.21.3":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.6.tgz#8650e0e4b03589ebe886c4e4a60398db0a7ec787"
+ integrity sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.24.6"
+ "@babel/generator" "^7.24.6"
+ "@babel/helper-compilation-targets" "^7.24.6"
+ "@babel/helper-module-transforms" "^7.24.6"
+ "@babel/helpers" "^7.24.6"
+ "@babel/parser" "^7.24.6"
+ "@babel/template" "^7.24.6"
+ "@babel/traverse" "^7.24.6"
+ "@babel/types" "^7.24.6"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
"@babel/core@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a"
@@ -54,6 +88,16 @@
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^2.5.1"
+"@babel/generator@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.6.tgz#dfac82a228582a9d30c959fe50ad28951d4737a7"
+ integrity sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==
+ dependencies:
+ "@babel/types" "^7.24.6"
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+ jsesc "^2.5.1"
+
"@babel/helper-compilation-targets@^7.23.6":
version "7.23.6"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991"
@@ -65,11 +109,27 @@
lru-cache "^5.1.1"
semver "^6.3.1"
+"@babel/helper-compilation-targets@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz#4a51d681f7680043d38e212715e2a7b1ad29cb51"
+ integrity sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==
+ dependencies:
+ "@babel/compat-data" "^7.24.6"
+ "@babel/helper-validator-option" "^7.24.6"
+ browserslist "^4.22.2"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
"@babel/helper-environment-visitor@^7.22.20":
version "7.22.20"
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
+"@babel/helper-environment-visitor@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz#ac7ad5517821641550f6698dd5468f8cef78620d"
+ integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==
+
"@babel/helper-function-name@^7.23.0":
version "7.23.0"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759"
@@ -78,6 +138,14 @@
"@babel/template" "^7.22.15"
"@babel/types" "^7.23.0"
+"@babel/helper-function-name@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz#cebdd063386fdb95d511d84b117e51fc68fec0c8"
+ integrity sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==
+ dependencies:
+ "@babel/template" "^7.24.6"
+ "@babel/types" "^7.24.6"
+
"@babel/helper-hoist-variables@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
@@ -85,6 +153,13 @@
dependencies:
"@babel/types" "^7.22.5"
+"@babel/helper-hoist-variables@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz#8a7ece8c26756826b6ffcdd0e3cf65de275af7f9"
+ integrity sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==
+ dependencies:
+ "@babel/types" "^7.24.6"
+
"@babel/helper-module-imports@^7.24.3":
version "7.24.3"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128"
@@ -92,6 +167,13 @@
dependencies:
"@babel/types" "^7.24.0"
+"@babel/helper-module-imports@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852"
+ integrity sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==
+ dependencies:
+ "@babel/types" "^7.24.6"
+
"@babel/helper-module-transforms@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545"
@@ -103,6 +185,17 @@
"@babel/helper-split-export-declaration" "^7.24.5"
"@babel/helper-validator-identifier" "^7.24.5"
+"@babel/helper-module-transforms@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz#22346ed9df44ce84dee850d7433c5b73fab1fe4e"
+ integrity sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.24.6"
+ "@babel/helper-module-imports" "^7.24.6"
+ "@babel/helper-simple-access" "^7.24.6"
+ "@babel/helper-split-export-declaration" "^7.24.6"
+ "@babel/helper-validator-identifier" "^7.24.6"
+
"@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a"
@@ -115,6 +208,13 @@
dependencies:
"@babel/types" "^7.24.5"
+"@babel/helper-simple-access@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz#1d6e04d468bba4fc963b4906f6dac6286cfedff1"
+ integrity sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==
+ dependencies:
+ "@babel/types" "^7.24.6"
+
"@babel/helper-split-export-declaration@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6"
@@ -122,21 +222,43 @@
dependencies:
"@babel/types" "^7.24.5"
+"@babel/helper-split-export-declaration@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz#e830068f7ba8861c53b7421c284da30ae656d7a3"
+ integrity sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==
+ dependencies:
+ "@babel/types" "^7.24.6"
+
"@babel/helper-string-parser@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e"
integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==
+"@babel/helper-string-parser@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df"
+ integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==
+
"@babel/helper-validator-identifier@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62"
integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==
+"@babel/helper-validator-identifier@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e"
+ integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==
+
"@babel/helper-validator-option@^7.23.5":
version "7.23.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307"
integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
+"@babel/helper-validator-option@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz#59d8e81c40b7d9109ab7e74457393442177f460a"
+ integrity sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==
+
"@babel/helpers@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a"
@@ -146,6 +268,14 @@
"@babel/traverse" "^7.24.5"
"@babel/types" "^7.24.5"
+"@babel/helpers@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.6.tgz#cd124245299e494bd4e00edda0e4ea3545c2c176"
+ integrity sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==
+ dependencies:
+ "@babel/template" "^7.24.6"
+ "@babel/types" "^7.24.6"
+
"@babel/highlight@^7.24.2":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e"
@@ -156,11 +286,26 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5", "@babel/parser@^7.8.3":
+"@babel/highlight@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.6.tgz#6d610c1ebd2c6e061cade0153bf69b0590b7b3df"
+ integrity sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.24.6"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
+"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790"
integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==
+"@babel/parser@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328"
+ integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==
+
"@babel/plugin-transform-react-jsx-self@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.5.tgz#22cc7572947895c8e4cd034462e65d8ecf857756"
@@ -184,7 +329,16 @@
"@babel/parser" "^7.24.0"
"@babel/types" "^7.24.0"
-"@babel/traverse@^7.24.5", "@babel/traverse@^7.8.3":
+"@babel/template@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.6.tgz#048c347b2787a6072b24c723664c8d02b67a44f9"
+ integrity sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==
+ dependencies:
+ "@babel/code-frame" "^7.24.6"
+ "@babel/parser" "^7.24.6"
+ "@babel/types" "^7.24.6"
+
+"@babel/traverse@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8"
integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==
@@ -200,6 +354,22 @@
debug "^4.3.1"
globals "^11.1.0"
+"@babel/traverse@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.6.tgz#0941ec50cdeaeacad0911eb67ae227a4f8424edc"
+ integrity sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==
+ dependencies:
+ "@babel/code-frame" "^7.24.6"
+ "@babel/generator" "^7.24.6"
+ "@babel/helper-environment-visitor" "^7.24.6"
+ "@babel/helper-function-name" "^7.24.6"
+ "@babel/helper-hoist-variables" "^7.24.6"
+ "@babel/helper-split-export-declaration" "^7.24.6"
+ "@babel/parser" "^7.24.6"
+ "@babel/types" "^7.24.6"
+ debug "^4.3.1"
+ globals "^11.1.0"
+
"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5":
version "7.24.5"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7"
@@ -209,30 +379,14 @@
"@babel/helper-validator-identifier" "^7.24.5"
to-fast-properties "^2.0.0"
-"@csstools/css-parser-algorithms@^2.6.1":
- version "2.6.3"
- resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz#b5e7eb2bd2a42e968ef61484f1490a8a4148a8eb"
- integrity sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==
-
-"@csstools/css-tokenizer@^2.2.4":
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz#3d47e101ad48d815a4bdce8159fb5764f087f17a"
- integrity sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==
-
-"@csstools/media-query-list-parser@^2.1.9":
- version "2.1.11"
- resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz#465aa42f268599729350e305e1ae14a30c1daf51"
- integrity sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==
-
-"@csstools/selector-specificity@^3.0.3":
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz#63085d2995ca0f0e55aa8b8a07d69bfd48b844fe"
- integrity sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==
-
-"@dual-bundle/import-meta-resolve@^4.0.0":
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#519c1549b0e147759e7825701ecffd25e5819f7b"
- integrity sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==
+"@babel/types@^7.21.3", "@babel/types@^7.24.6":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912"
+ integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==
+ dependencies:
+ "@babel/helper-string-parser" "^7.24.6"
+ "@babel/helper-validator-identifier" "^7.24.6"
+ to-fast-properties "^2.0.0"
"@emotion/is-prop-valid@1.2.2":
version "1.2.2"
@@ -475,6 +629,20 @@
resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31"
integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
+"@remix-run/router@1.16.1":
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.16.1.tgz#73db3c48b975eeb06d0006481bde4f5f2d17d1cd"
+ integrity sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==
+
+"@rollup/pluginutils@^5.0.5":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0"
+ integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==
+ dependencies:
+ "@types/estree" "^1.0.0"
+ estree-walker "^2.0.2"
+ picomatch "^2.3.1"
+
"@rollup/rollup-android-arm-eabi@4.18.0":
version "4.18.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27"
@@ -555,6 +723,89 @@
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz#5d694d345ce36b6ecf657349e03eb87297e68da4"
integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==
+"@svgr/babel-plugin-add-jsx-attribute@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22"
+ integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==
+
+"@svgr/babel-plugin-remove-jsx-attribute@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186"
+ integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==
+
+"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44"
+ integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==
+
+"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27"
+ integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==
+
+"@svgr/babel-plugin-svg-dynamic-title@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0"
+ integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==
+
+"@svgr/babel-plugin-svg-em-dimensions@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501"
+ integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==
+
+"@svgr/babel-plugin-transform-react-native-svg@8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754"
+ integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==
+
+"@svgr/babel-plugin-transform-svg-component@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e"
+ integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==
+
+"@svgr/babel-preset@8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece"
+ integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==
+ dependencies:
+ "@svgr/babel-plugin-add-jsx-attribute" "8.0.0"
+ "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0"
+ "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0"
+ "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0"
+ "@svgr/babel-plugin-svg-dynamic-title" "8.0.0"
+ "@svgr/babel-plugin-svg-em-dimensions" "8.0.0"
+ "@svgr/babel-plugin-transform-react-native-svg" "8.1.0"
+ "@svgr/babel-plugin-transform-svg-component" "8.0.0"
+
+"@svgr/core@^8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88"
+ integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==
+ dependencies:
+ "@babel/core" "^7.21.3"
+ "@svgr/babel-preset" "8.1.0"
+ camelcase "^6.2.0"
+ cosmiconfig "^8.1.3"
+ snake-case "^3.0.4"
+
+"@svgr/hast-util-to-babel-ast@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4"
+ integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==
+ dependencies:
+ "@babel/types" "^7.21.3"
+ entities "^4.4.0"
+
+"@svgr/plugin-jsx@^8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928"
+ integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==
+ dependencies:
+ "@babel/core" "^7.21.3"
+ "@svgr/babel-preset" "8.1.0"
+ "@svgr/hast-util-to-babel-ast" "8.0.0"
+ svg-parser "^2.0.4"
+
"@types/babel__core@^7.20.5":
version "7.20.5"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
@@ -588,11 +839,16 @@
dependencies:
"@babel/types" "^7.20.7"
-"@types/estree@1.0.5":
+"@types/estree@1.0.5", "@types/estree@^1.0.0":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
+"@types/history@^4.7.11":
+ version "4.7.11"
+ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64"
+ integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==
+
"@types/hoist-non-react-statics@*":
version "3.3.5"
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494"
@@ -613,6 +869,23 @@
dependencies:
"@types/react" "*"
+"@types/react-router-dom@^5.3.3":
+ version "5.3.3"
+ resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83"
+ integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==
+ dependencies:
+ "@types/history" "^4.7.11"
+ "@types/react" "*"
+ "@types/react-router" "*"
+
+"@types/react-router@*":
+ version "5.1.20"
+ resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.20.tgz#88eccaa122a82405ef3efbcaaa5dcdd9f021387c"
+ integrity sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==
+ dependencies:
+ "@types/history" "^4.7.11"
+ "@types/react" "*"
+
"@types/react@*", "@types/react@^18.2.66":
version "18.3.2"
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.2.tgz#462ae4904973bc212fa910424d901e3d137dbfcd"
@@ -752,26 +1025,11 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ajv@^8.0.1:
- version "8.13.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91"
- integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==
- dependencies:
- fast-deep-equal "^3.1.3"
- json-schema-traverse "^1.0.0"
- require-from-string "^2.0.2"
- uri-js "^4.4.1"
-
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-ansi-regex@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
- integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
-
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -779,7 +1037,7 @@ ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
@@ -796,21 +1054,11 @@ array-union@^2.1.0:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-astral-regex@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
- integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
-
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-balanced-match@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9"
- integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==
-
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -848,6 +1096,11 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+camelcase@^6.2.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
camelize@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3"
@@ -899,11 +1152,6 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-colord@^2.9.3:
- version "2.9.3"
- resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
- integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
-
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -914,15 +1162,15 @@ convert-source-map@^2.0.0:
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
-cosmiconfig@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d"
- integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==
+cosmiconfig@^8.1.3:
+ version "8.3.6"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3"
+ integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==
dependencies:
- env-paths "^2.2.1"
import-fresh "^3.3.0"
js-yaml "^4.1.0"
parse-json "^5.2.0"
+ path-type "^4.0.0"
cross-spawn@^7.0.2:
version "7.0.3"
@@ -938,11 +1186,6 @@ css-color-keywords@^1.0.0:
resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==
-css-functions-list@^3.2.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/css-functions-list/-/css-functions-list-3.2.2.tgz#9a54c6dd8416ed25c1079cd88234e927526c1922"
- integrity sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==
-
css-to-react-native@3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32"
@@ -952,25 +1195,12 @@ css-to-react-native@3.2.0:
css-color-keywords "^1.0.0"
postcss-value-parser "^4.0.2"
-css-tree@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20"
- integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==
- dependencies:
- mdn-data "2.0.30"
- source-map-js "^1.0.1"
-
-cssesc@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
- integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-
csstype@3.1.3, csstype@^3.0.2:
version "3.1.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
-debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
+debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -996,20 +1226,23 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
+dot-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
+ integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
+ dependencies:
+ no-case "^3.0.4"
+ tslib "^2.0.3"
+
electron-to-chromium@^1.4.668:
version "1.4.779"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77"
integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g==
-emoji-regex@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
- integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-
-env-paths@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
- integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
+entities@^4.4.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
error-ex@^1.3.1:
version "1.3.2"
@@ -1170,6 +1403,11 @@ estraverse@^5.1.0, estraverse@^5.2.0:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -1185,7 +1423,7 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
-fast-glob@^3.2.9, fast-glob@^3.3.2:
+fast-glob@^3.2.9:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -1206,11 +1444,6 @@ fast-levenshtein@^2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
-fastest-levenshtein@^1.0.16:
- version "1.0.16"
- resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5"
- integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
-
fastq@^1.6.0:
version "1.17.1"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
@@ -1225,13 +1458,6 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
-file-entry-cache@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
- integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
- dependencies:
- flat-cache "^4.0.0"
-
fill-range@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
@@ -1256,14 +1482,6 @@ flat-cache@^3.0.4:
keyv "^4.5.3"
rimraf "^3.0.2"
-flat-cache@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
- integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
- dependencies:
- flatted "^3.2.9"
- keyv "^4.5.4"
-
flatted@^3.2.9:
version "3.3.1"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
@@ -1310,22 +1528,6 @@ glob@^7.1.3:
once "^1.3.0"
path-is-absolute "^1.0.0"
-global-modules@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
- integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
- dependencies:
- global-prefix "^3.0.0"
-
-global-prefix@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
- integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
- dependencies:
- ini "^1.3.5"
- kind-of "^6.0.2"
- which "^1.3.1"
-
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@@ -1350,10 +1552,10 @@ globby@^11.1.0:
merge2 "^1.4.1"
slash "^3.0.0"
-globjoin@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43"
- integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==
+globrex@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
+ integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==
graphemer@^1.4.0:
version "1.4.0"
@@ -1377,11 +1579,6 @@ hoist-non-react-statics@^3.3.0:
dependencies:
react-is "^16.7.0"
-html-tags@^3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce"
- integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
-
ignore@^5.2.0, ignore@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
@@ -1413,11 +1610,6 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-ini@^1.3.5:
- version "1.3.8"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
- integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -1428,11 +1620,6 @@ is-extglob@^2.1.1:
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
-is-fullwidth-code-point@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
- integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
@@ -1450,11 +1637,6 @@ is-path-inside@^3.0.3:
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
-is-plain-object@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
- integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
-
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -1492,11 +1674,6 @@ json-schema-traverse@^0.4.1:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-json-schema-traverse@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
- integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
-
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
@@ -1507,23 +1684,13 @@ json5@^2.2.3:
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
-keyv@^4.5.3, keyv@^4.5.4:
+keyv@^4.5.3:
version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
dependencies:
json-buffer "3.0.1"
-kind-of@^6.0.2:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
- integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-
-known-css-properties@^0.30.0:
- version "0.30.0"
- resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.30.0.tgz#34dd1f39c805c65a6dfa6ea76206b20dc523dd96"
- integrity sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==
-
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -1549,11 +1716,6 @@ lodash.merge@^4.6.2:
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-lodash.truncate@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
- integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==
-
loose-envify@^1.1.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -1561,6 +1723,13 @@ loose-envify@^1.1.0:
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
+lower-case@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
+ integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
+ dependencies:
+ tslib "^2.0.3"
+
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
@@ -1568,27 +1737,12 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
-mathml-tag-names@^2.1.3:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
- integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
-
-mdn-data@2.0.30:
- version "2.0.30"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc"
- integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==
-
-meow@^13.2.0:
- version "13.2.0"
- resolved "https://registry.yarnpkg.com/meow/-/meow-13.2.0.tgz#6b7d63f913f984063b3cc261b6e8800c4cd3474f"
- integrity sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==
-
merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
+micromatch@^4.0.4:
version "4.0.7"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
@@ -1625,16 +1779,19 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+no-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
+ integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
+ dependencies:
+ lower-case "^2.0.2"
+ tslib "^2.0.3"
+
node-releases@^2.0.14:
version "2.0.14"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
-normalize-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -1705,11 +1862,6 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-picocolors@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f"
- integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
-
picocolors@^1.0.0, picocolors@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
@@ -1720,35 +1872,12 @@ picomatch@^2.3.1:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-postcss-resolve-nested-selector@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e"
- integrity sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==
-
-postcss-safe-parser@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-7.0.0.tgz#6273d4e5149e286db5a45bc6cf6eafcad464014a"
- integrity sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==
-
-postcss-selector-parser@^6.0.16:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53"
- integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==
- dependencies:
- cssesc "^3.0.0"
- util-deprecate "^1.0.2"
-
-postcss-sorting@^8.0.2:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-8.0.2.tgz#6393385ece272baf74bee9820fb1b58098e4eeca"
- integrity sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==
-
-postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0:
+postcss-value-parser@^4.0.2:
version "4.2.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss@8.4.38, postcss@^8.4.32, postcss@^8.4.38:
+postcss@8.4.38, postcss@^8.4.38:
version "8.4.38"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
@@ -1757,14 +1886,6 @@ postcss@8.4.38, postcss@^8.4.32, postcss@^8.4.38:
picocolors "^1.0.0"
source-map-js "^1.2.0"
-postcss@^7.0.26:
- version "7.0.39"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309"
- integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
- dependencies:
- picocolors "^0.2.1"
- source-map "^0.6.1"
-
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -1810,6 +1931,21 @@ react-refresh@^0.14.2:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
+react-router-dom@^6.23.1:
+ version "6.23.1"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.23.1.tgz#30cbf266669693e9492aa4fc0dde2541ab02322f"
+ integrity sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==
+ dependencies:
+ "@remix-run/router" "1.16.1"
+ react-router "6.23.1"
+
+react-router@6.23.1:
+ version "6.23.1"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.23.1.tgz#d08cbdbd9d6aedc13eea6e94bc6d9b29cb1c4be9"
+ integrity sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==
+ dependencies:
+ "@remix-run/router" "1.16.1"
+
react@^18.2.0:
version "18.3.1"
resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
@@ -1817,21 +1953,11 @@ react@^18.2.0:
dependencies:
loose-envify "^1.1.0"
-require-from-string@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
- integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-resolve-from@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
- integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-
reusify@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
@@ -1910,44 +2036,24 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-signal-exit@^4.0.1:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
- integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
-
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-slice-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
- integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
+snake-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c"
+ integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==
dependencies:
- ansi-styles "^4.0.0"
- astral-regex "^2.0.0"
- is-fullwidth-code-point "^3.0.0"
+ dot-case "^3.0.4"
+ tslib "^2.0.3"
-source-map-js@^1.0.1, source-map-js@^1.2.0:
+source-map-js@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
-source-map@^0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-string-width@^4.2.3:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
@@ -1955,13 +2061,6 @@ strip-ansi@^6.0.1:
dependencies:
ansi-regex "^5.0.1"
-strip-ansi@^7.1.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
- integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
- dependencies:
- ansi-regex "^6.0.1"
-
strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
@@ -1982,104 +2081,10 @@ styled-components@^6.1.11:
stylis "4.3.2"
tslib "2.6.2"
-stylelint-config-concentric-order@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/stylelint-config-concentric-order/-/stylelint-config-concentric-order-5.2.0.tgz#8530ec487c54e3089bcc9a8be525d1f91cb37b5d"
- integrity sha512-vxHxMNoMIk+sJyW+KRj0Nr8fmTqvS+JK+yftLDElOMoQqdCaDT4vSYP4iTGCmJ2O7KKfFHceQ2NtbfUhoKh9Fw==
- dependencies:
- stylelint-order "^6.0.0"
-
-stylelint-config-prettier@^9.0.5:
- version "9.0.5"
- resolved "https://registry.yarnpkg.com/stylelint-config-prettier/-/stylelint-config-prettier-9.0.5.tgz#9f78bbf31c7307ca2df2dd60f42c7014ee9da56e"
- integrity sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==
-
-stylelint-config-recommended@^14.0.0:
- version "14.0.0"
- resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-14.0.0.tgz#b395c7014838d2aaca1755eebd914d0bb5274994"
- integrity sha512-jSkx290CglS8StmrLp2TxAppIajzIBZKYm3IxT89Kg6fGlxbPiTiyH9PS5YUuVAFwaJLl1ikiXX0QWjI0jmgZQ==
-
-stylelint-config-standard@^36.0.0:
- version "36.0.0"
- resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-36.0.0.tgz#6704c044d611edc12692d4a5e37b039a441604d4"
- integrity sha512-3Kjyq4d62bYFp/Aq8PMKDwlgUyPU4nacXsjDLWJdNPRUgpuxALu1KnlAHIj36cdtxViVhXexZij65yM0uNIHug==
- dependencies:
- stylelint-config-recommended "^14.0.0"
-
-stylelint-config-styled-components@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/stylelint-config-styled-components/-/stylelint-config-styled-components-0.1.1.tgz#b408388d7c687833ab4be4c4e6522d97d2827ede"
- integrity sha512-z5Xz/9GmvxO6e/DLzBMwkB85zHxEEjN6K7Cj80Bi+o/9vR9eS3GX3E9VuMnX9WLFYulqbqLtTapGGY28JBiy9Q==
-
-stylelint-order@^6.0.0:
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/stylelint-order/-/stylelint-order-6.0.4.tgz#3e80d876c61a98d2640de181433686f24284748b"
- integrity sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==
- dependencies:
- postcss "^8.4.32"
- postcss-sorting "^8.0.2"
-
-stylelint-prettier@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/stylelint-prettier/-/stylelint-prettier-5.0.0.tgz#515a87800228f6bea603966462f7119755ee9b82"
- integrity sha512-RHfSlRJIsaVg5Br94gZVdWlz/rBTyQzZflNE6dXvSxt/GthWMY3gEHsWZEBaVGg7GM+XrtVSp4RznFlB7i0oyw==
- dependencies:
- prettier-linter-helpers "^1.0.0"
-
-stylelint-processor-styled-components@^1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/stylelint-processor-styled-components/-/stylelint-processor-styled-components-1.10.0.tgz#8082fc68779476aac411d3afffac0bc833d77a29"
- integrity sha512-g4HpN9rm0JD0LoHuIOcd/FIjTZCJ0ErQ+dC3VTxp+dSvnkV+MklKCCmCQEdz5K5WxF4vPuzfVgdbSDuPYGZhoA==
- dependencies:
- "@babel/parser" "^7.8.3"
- "@babel/traverse" "^7.8.3"
- micromatch "^4.0.2"
- postcss "^7.0.26"
-
-stylelint@^16.5.0:
- version "16.5.0"
- resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-16.5.0.tgz#4e3aff7cc2294fa54da729b972a6c38bf2a584a0"
- integrity sha512-IlCBtVrG+qTy3v+tZTk50W8BIomjY/RUuzdrDqdnlCYwVuzXtPbiGfxYqtyYAyOMcb+195zRsuHn6tgfPmFfbw==
- dependencies:
- "@csstools/css-parser-algorithms" "^2.6.1"
- "@csstools/css-tokenizer" "^2.2.4"
- "@csstools/media-query-list-parser" "^2.1.9"
- "@csstools/selector-specificity" "^3.0.3"
- "@dual-bundle/import-meta-resolve" "^4.0.0"
- balanced-match "^2.0.0"
- colord "^2.9.3"
- cosmiconfig "^9.0.0"
- css-functions-list "^3.2.2"
- css-tree "^2.3.1"
- debug "^4.3.4"
- fast-glob "^3.3.2"
- fastest-levenshtein "^1.0.16"
- file-entry-cache "^8.0.0"
- global-modules "^2.0.0"
- globby "^11.1.0"
- globjoin "^0.1.4"
- html-tags "^3.3.1"
- ignore "^5.3.1"
- imurmurhash "^0.1.4"
- is-plain-object "^5.0.0"
- known-css-properties "^0.30.0"
- mathml-tag-names "^2.1.3"
- meow "^13.2.0"
- micromatch "^4.0.5"
- normalize-path "^3.0.0"
- picocolors "^1.0.0"
- postcss "^8.4.38"
- postcss-resolve-nested-selector "^0.1.1"
- postcss-safe-parser "^7.0.0"
- postcss-selector-parser "^6.0.16"
- postcss-value-parser "^4.2.0"
- resolve-from "^5.0.0"
- string-width "^4.2.3"
- strip-ansi "^7.1.0"
- supports-hyperlinks "^3.0.0"
- svg-tags "^1.0.0"
- table "^6.8.2"
- write-file-atomic "^5.0.1"
+styled-reset@^4.5.2:
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/styled-reset/-/styled-reset-4.5.2.tgz#2eba489fce52e34368693adb8d5fb4bf775edc3c"
+ integrity sha512-dbAaaVEhweBs2FGfqGBdW6oMcMK8238C2X5KCxBhUQJX92m/QyUfzRADOXhdXiXNkIPELtMCd72YY9eCdORfIw==
stylis@4.3.2:
version "4.3.2"
@@ -2093,25 +2098,17 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
-supports-color@^7.0.0, supports-color@^7.1.0:
+supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
dependencies:
has-flag "^4.0.0"
-supports-hyperlinks@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz#c711352a5c89070779b4dad54c05a2f14b15c94b"
- integrity sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==
- dependencies:
- has-flag "^4.0.0"
- supports-color "^7.0.0"
-
-svg-tags@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
- integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
+svg-parser@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
+ integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
synckit@^0.8.6:
version "0.8.8"
@@ -2121,17 +2118,6 @@ synckit@^0.8.6:
"@pkgr/core" "^0.1.0"
tslib "^2.6.2"
-table@^6.8.2:
- version "6.8.2"
- resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58"
- integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==
- dependencies:
- ajv "^8.0.1"
- lodash.truncate "^4.4.2"
- slice-ansi "^4.0.0"
- string-width "^4.2.3"
- strip-ansi "^6.0.1"
-
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -2154,7 +2140,12 @@ ts-api-utils@^1.3.0:
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
-tslib@2.6.2, tslib@^2.6.2:
+tsconfck@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.0.3.tgz#d9bda0e87d05b1c360e996c9050473c7e6f8084f"
+ integrity sha512-4t0noZX9t6GcPTfBAbIbbIU4pfpCwh0ueq3S4O/5qXI1VwK1outmxhe9dOiEWqMz3MW2LKgDTpqWV+37IWuVbA==
+
+tslib@2.6.2, tslib@^2.0.3, tslib@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
@@ -2184,17 +2175,30 @@ update-browserslist-db@^1.0.13:
escalade "^3.1.2"
picocolors "^1.0.1"
-uri-js@^4.2.2, uri-js@^4.4.1:
+uri-js@^4.2.2:
version "4.4.1"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
dependencies:
punycode "^2.1.0"
-util-deprecate@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+vite-plugin-svgr@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz#9f3bf5206b0ec510287e56d16f1915e729bb4e6b"
+ integrity sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==
+ dependencies:
+ "@rollup/pluginutils" "^5.0.5"
+ "@svgr/core" "^8.1.0"
+ "@svgr/plugin-jsx" "^8.1.0"
+
+vite-tsconfig-paths@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz#321f02e4b736a90ff62f9086467faf4e2da857a9"
+ integrity sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==
+ dependencies:
+ debug "^4.1.1"
+ globrex "^0.1.2"
+ tsconfck "^3.0.3"
vite@^5.2.0:
version "5.2.11"
@@ -2207,13 +2211,6 @@ vite@^5.2.0:
optionalDependencies:
fsevents "~2.3.3"
-which@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
- dependencies:
- isexe "^2.0.0"
-
which@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
@@ -2231,14 +2228,6 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-write-file-atomic@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7"
- integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==
- dependencies:
- imurmurhash "^0.1.4"
- signal-exit "^4.0.1"
-
yallist@^3.0.2:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
From afe98f70d1d8080e8dd11d7c1d18cb8825a12f9d Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 27 May 2024 20:50:34 +0900
Subject: [PATCH 08/72] =?UTF-8?q?etc:=20=EC=95=84=EC=9D=B4=EC=BD=98=20svg?=
=?UTF-8?q?=20=EC=84=A4=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/assets/assets.d.ts | 22 ++++++++++++++++++++++
vote/src/assets/icon/downArrow.svg | 3 +++
vote/src/assets/icon/logo.svg | 9 +++++++++
vote/src/assets/image/favicon.png | Bin 0 -> 6077 bytes
vote/src/assets/index.ts | 4 ++++
vote/src/assets/react.svg | 1 -
6 files changed, 38 insertions(+), 1 deletion(-)
create mode 100644 vote/src/assets/assets.d.ts
create mode 100644 vote/src/assets/icon/downArrow.svg
create mode 100644 vote/src/assets/icon/logo.svg
create mode 100644 vote/src/assets/image/favicon.png
create mode 100644 vote/src/assets/index.ts
delete mode 100644 vote/src/assets/react.svg
diff --git a/vote/src/assets/assets.d.ts b/vote/src/assets/assets.d.ts
new file mode 100644
index 0000000..5bbbc41
--- /dev/null
+++ b/vote/src/assets/assets.d.ts
@@ -0,0 +1,22 @@
+declare module "*.jpg" {
+ const path: string;
+ export default path;
+}
+declare module "*.png" {
+ const path: string;
+ export default path;
+}
+
+// declare module '*.svg' {
+// import React = require('react');
+// export const ReactComponent: React.FC>;
+// const src: string;
+// export default src;
+// }
+
+declare module "*.svg?react" {
+ import React = require("react");
+ export const ReactComponent: React.FC>;
+ const src: string;
+ export default src;
+}
diff --git a/vote/src/assets/icon/downArrow.svg b/vote/src/assets/icon/downArrow.svg
new file mode 100644
index 0000000..3081732
--- /dev/null
+++ b/vote/src/assets/icon/downArrow.svg
@@ -0,0 +1,3 @@
+
diff --git a/vote/src/assets/icon/logo.svg b/vote/src/assets/icon/logo.svg
new file mode 100644
index 0000000..28ca5cf
--- /dev/null
+++ b/vote/src/assets/icon/logo.svg
@@ -0,0 +1,9 @@
+
diff --git a/vote/src/assets/image/favicon.png b/vote/src/assets/image/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..42852ef1bd8d2fd27c207e8631a87dbd238c9192
GIT binary patch
literal 6077
zcmaKQMOYgQux+44f=h8N?obLrg1fuByE}nkg+g(PJ2bevJEd5mxRes05cqL-d%df-
zx_5Erd^6u{W;18ze9=&o$HpMX0002kiV8AX|G4HKl+aQCMJA4Z`F{lTP%!ic05A#v
z2S|XNJkozfByTNwDL~yc<^I3qt-YkGBmmHug!yEN0sxR`DauId1Rx!o0t4PHHq`;c
z-%2Tjy+sE`%F=ph`WZ$Xz188Ni(v`j(wBXw>CtJ{L;LVJ0R``KzlW
zmdz$UUvEY@%dTG~(OMO)@%*0$Sv3Y?l63>|iY(IE5j|$V6_BxGKQV$O>~TexFH|U*
zy(&cKZ-AhUO~8QJVbfPADWKdZPN@b$UgO)p--xvD>X6NNGs-oW
zDSlFxuCj1dy^LTI5T>6%xV-x*;1k3&B>kKdRI@*|>9phvIX$f93q^=&%7n46>aG^W
zz{zLR$w&0)Kc10WE;3>pT}_eoH)kl|Z;3eeRxH&TF=okOxk*bu@RiaQ(9-X8XaeIJ
zg@#c8}iM^IbY|!PPT~t~_m0=2ymqBCJg4Vi(V3_Co)7g2)tDRi-5}Ff$l`aOG
zdTPPp4|c~l!(Nc628S&pH7?cM?sPjYxNPS)&0gHAN<|mnoGTZ7rx5LuNi}#({=nk^z)d4Tax@k;%fFtY5
zMWCxYh)~)KqGAyIID}Av9Mq;aJv|CjQRY|S86*~v&3*oi>s0F8zU~kig?@j3pEg_)
z<)Y79_eHV6?UB{!c@!u--Bu(_Rgg$;1FY34Fbk|9T%QDieqZaXeZv-r7dL30eYw&EXr>ySc8
zw^%_er3|N#SsaS+wY`dIAYDNF@ua{SyiDeb`aZGaVUhK7W|aocybcyl+L!MaUT1fV
zN`EyH;rYfY0a@tRRr59H{t6xC3?}%XCMQO6{uWLIqVpHVRk!B4)8DI(p)6dz`5|*$
zE&jGq>y_$LA7#Fg_W0tq8p8>ccTTXQ!@w5b)55F8rrw&sq#y>GFi)qA9uQQxjXP>n
z&NH>e*r4ojl*11~n7)mGDiqpX0l;I}Rzvq2NW4irB)Hx!4yfQQ@mjFfK~QYHRjR{e
zZjTm9KyJg`ge=oa5lMf!_TF4J=`?>j>GB|Ae|j3*Q6lNb!Z%NBzZ~Q^ydI6wzwWFx
z;d*uALyhy#K3U^&r(nhg(vxsLL{z~-HMCcYa4WVU=AP@-qv4mdB*DX0I?L8Riq$Z2
zFS$(Y-`wK@YE=gwa9S%pJD4w%mnp_DbWk%=R^H-;FLchm|Q>RMg-=Ti*KzoNeM|HvWoZaUEem*@?Me#=RvT_r?y!|0ItLPT8
z9+Jh#Ar>OaoJ395uW};T>y9RT(t&^5O6+R)nKV$OQQTcb?sR&!Cg2Zf{xw*aUMb1nkD~Upo#NEW-i0ea(*+X3LMYHdw1rhHf)w_
z=yykZ?sZk~K*G0;w*Jc_w`NC*&)p!pW(kL;dHQDldhFGW&`Of^X{B+6o+opf7dcG5
z;Z$b9PZMcW&6o7lh%pPUfU-8RovwXvqu_6$
z63q#~oVs`9o_YvjHr?u|g($&^duHh^MFX
z}*~Q4Ee!(~Ne#(CA
z&MHHX6YCSQ?zP^lx(WiEfZme?4Z(S^7eROz27-ZrYs=#^?9^7bTDG#^x5wX3DYN3I
zf~Gb4a7t&As3`^bkz0Rl6%Sq!IPW0lQRhWPDM;|-l0N&5I+wcWC9_(Tem%@gi#C@W
zbL0^k7^6u!&3!7c9I`T8X*f*FLe9ZPNsi2&t9C+XGPm>Xm(G~a7lwp+^=gJHDwda}2c825RcQCxN$gD>N^t!1`Z`5iHcx}S
zN%%*7jKn`tF=t9wWbUQiM!#m|WN#Ra8f&W-ab>LK`Y$nE*Zh}edro7V|1CfCBR7-n
zZY|6P%Yv<$^r$%rIl>F6e912W9X>?sA<`s>APOE*N1;j+)ScYK;^^61rOP&vH+VnT
z!<65%(`4FmzL_8D{qTaga)Edp5#VgNmMmPk$lLsQ{Lb$}Ab|jD1E9kEMMjiAnp&J4
zX+sV$EZ<9tW&d$IKA8J@izejdOB9Vc38J)qN;D7<35~=`FzGkW?OG^vRO|2(u|Ax6Icc&uTL<_-TufyS
zU_uR!CEIo@Pm%r|^Zccs(a&9{!8m(@TLyc&ybEqdB5v#BKf9?mhi=1BK9`8q>Y(V{PV)DG*6Ri1W^PgG(>SztsbJr(fc
zfK3Tbm0K^&I@DBp*OxtJoWK3qcL|$$-?Z2y>=X_6E!kLNV;5%}SLpB>tRp}9Ta(u?
zz9~g(0~K7#t{H&;Ws6WR_M@B4-AhlhB+bt?rRI13)AMj
zzUZuqen)+xz#7BG;6P;G!$re~R*1%#94SrK8%abut9kn~gX`~0=1JS~;0#ywITY$R
z=ce~tN_xrSb!Kll3xt#5FIM!N57)`@rEsOvujFXz;+Ejs$5+a4=l^utJy=@%>4VKM
z-LrbPWVeHU=w}Acz%#8i57eFBt_XJUa<|5Xw)t~_>tHs|ALnGGEdkhozvM}K!M+kE
z6QdRh<@g5$;b5#UoAgZ2D(+K8^)C11CJ3xiOa522DDoY-=*)cGVRT&VIVeq=kDVS@
zItow1OypRGaEe#y_aMKU1MVC%V3BJIukhs}n1L=lPmghLDQhWj#B-CR{E4ou1)r48
z#iHnDlvdqN&(I0&_FTVqEC%o&e1U`XZ-y;C!FNWc>E9CUOEj#$XrF#6%y`zD=H7i&
zkjuGq5qNOj)gXTiV0NN3p5k}B@0wgry4&!A0#D0XJK3tL
zcTTe47x8J?2DVK~r%zXd&0_3~8c1?mAvpu<(o2BJ*_ZHVAfkd%4Q7w}#xFi^y>*Om
zz>SctLooGJ1l(Go7?w&3uiK31dp~ab=e4$Yq#F0o4Id^PCs4F2kk+0Kb91#uT+eqg
zK%ft&UfxcV7UlkS?q$Y-LFVqVUaAItJOm%{Agqz1K#Ihck%R=b5HyCp^)LP4U{ywYii@Y$A^rFF;n-X3%A^u62x?C;~o
z(ruH}cSA@erU^mATKGL>-NL*t(i-dCmuolnS$4fzxV6fmFM9JVM_lcW%5c%5k5>|e
zYc9OJh4~-;Y*}y&PQJo*4pp@rPqJ+K-IG+N&4{nNv#xyA(VY{uCw8Pn|5IT|)8916
z#<`Rwz9<>i9zlz99n_9;njasn-PqyIOXltOoAWf$DB{^4iJd>O4E?=x$lC$
zw1M^S#9vk#2iPob+vR)&Bc5EifG_HvMJ
z+7D!HHo#5{gXA~i6oOE$Pt?@yY4B&KxZUw&t0tk47tzKjhVNO8g`$m*K`lv~6;=j4
zs);&zs`JlvgMu96fv|%uwI0)u(78Q|eTZ7!D9+DN3LffNereNSxz7EM>whFPS`YGU
zgDPIVH|BPG?c<|j0=QDPW1Dp$0`GDntZQGsS32%w7ExA!(QDty2rO1s1yXaXZWmc=
zl1_9yw;-QoXtn$=w6YEG{NL#(V
z(L7^em&$hFp3`>0$1*3T6W^ehQpmNYKC
zJCjW7g;q8fNqrLfamv)pz^JhUPiCI@Nm7+UW-MIT{N2h3zt(*73h=7XS}>V#tIEL7
zAsO)Pwv#3ltRlL4#Y?a($4j7fBWBc)&}Yz;3oLYwtq}yhj2!yMs#c;gpfe`EB=Yil
zW3+oIR?bHymw^ZT^IZiiyKSZ|o>WNMwZObOPRYV==ulzsdjZ!!zH%8j?#MQ>jK_6J
zQ>Bc~I6=KobE)$oYo9MMFVFUqz*#fMq!4`QqCe8Q3M$W$ymRP67!8y}O(udvq|Gu+
zWtptL=QXnKhM7)L>8ZS-wDVyOWH~fSjFeWsA^b**t%+Nf7zi6IM{CcRuQvLWG--YI
zxwkPdqfV919RQ7Ry?rQmcH}_o|Jd2gt#+?FaeJ54=~BL?;jj{Q@Y9a-es00Mv;Q|c
zX+zZU{G-`RxY_2fVvcSyix-QWpSf8qC<^g_b3>hyMwGMyudELho)*MloRS$7W(ssw
zlQG+_WKX0#&46p(-Dbh{;1G
ztF@pkxOKd?ZIXP(N^mijP4EF@ib=jqzOT2+0!8yNI_v?qo#|QO1UwcDm@YmZi^O7C
z(oE>f6_HT7$ZZ67wH@2CYE)8=CvNxELcRYKu~
z^83`2vI+%n@K@4hI2DCLr5fiZYOb(-^L8`jm<5_QRJh*uTC;24FtXlhOSRtVbLfIf
zS;dUjx;rC>I%V9ce(9#^=b>;=+;_7t3<-tn9n5lNbY1pcOeN6Sw!c~H{qJoHij)=Y
zE^1q7s8Oy8T9UbqYL!@&oH5Q7rtb4^{|c+#7xAp9F!HPYm1i)JMkPQA3e8Pmo9w0uH#CmsH#60uKMxH
zKCh>I(@~vM*G6E3f-*3~jyCy*k#{w+BRNO0la`t6lM3pZKKB{UR6}?zpE!Nu;JNZb
zl69(4uS_Rpq~F*lQR-kqTMlzb$0y?y%u=2PUXVhOSr?Py4?=h+a~Q|$5d*B_i&bn#
ze?b_XA~Uyg%fPB;D8P8e-`80t-&h8GP_)XhilRO$S*XQjM{MJgo`&j6rWee&f(Ybp
zSMM)YwV`|e`hkNlM$Ej&`1X5t3U
z%{QdloTaAH^BRQ#KgBbYTvCbnDNcyLmnWKJAJT^NjBC0R>mnym27034p@+X%-nNuD
zUcP!f2r)=Pe^d|c#Vl4c<<;^uX(T5a{tXIne@Z=9S;EU~g7}zdtJz$9{djX8;Dkq|
zMkv0<@*cAnd6W@_-(M8LTt(M6nIj$h3K6C-qm5n-u?P&l-sZ1SO=YFn8>GYzkkQGN
zdaH92vR%0*$X2`(0gu&(<^TIni;s`CUi&W7v<;7M{_e(Ai&?(N;W%=Z3M33{%llWo
zi5MEe+#sVJWke1>m(a-l$`3mE5|Hz;xPN<}#r7B!h&BTul=p*G9+}8CD@F)iN7j&j
zo{1$Yxfz(dMFSe9_Xqh0H+=gR)?)SnyE!1kR!&G4c6RUyG4n3NP(b7^>YYqyiAdbBDmtRo(yH4QAz&hIGU`UkXTlu#X0CXf|IXjta
zphYz9(W*>~c^dsJJX4@)y>a++?BC|h!Ejzf4x?3;R4dAQ+*1{QxF2D5_;O)n1@aA9
z?8hQLLF(ui|Frl36368c?*TSaTNItVNPqMrRK0e_M5r(
zS22ULw`A8)qNpiYgD1+t27(E)Q)gUZ=6ag$^#VWduakM&-sN@SBPW(O#zz*B4u
z9T(D2-+9q3OIfLYqM_!C-qSo1Op_X?R2{%SF%jhTvxNb7DL|YW+n7lJjkKg7?*r|j
zDwg1~)USL<&5{NBMS8x(dz=y(0={SOGX$tJkO(Zm`q)%~6iO{6d6V(Xu!c;75RDT0
zU--;iGzMyBReMm_%Gtq_6lG1##B`?Bie;&cjErdZR^=aCDFaO69u)JtOJa^YtpD3}
o{@?BC0sQRc@dy<0!Phs1+9HDrBlF7t+;)JXteQ-nltsk<0~rCJsQ>@~
literal 0
HcmV?d00001
diff --git a/vote/src/assets/index.ts b/vote/src/assets/index.ts
new file mode 100644
index 0000000..3769353
--- /dev/null
+++ b/vote/src/assets/index.ts
@@ -0,0 +1,4 @@
+import LogoIc from "./icon/logo.svg?react";
+import DownArrowIc from "./icon/downArrow.svg?react";
+
+export { LogoIc, DownArrowIc };
diff --git a/vote/src/assets/react.svg b/vote/src/assets/react.svg
deleted file mode 100644
index 6c87de9..0000000
--- a/vote/src/assets/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
From b69bc9f6b060a81001857b290aa8297dbb6f0a52 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 27 May 2024 21:09:54 +0900
Subject: [PATCH 09/72] =?UTF-8?q?design:=20=EA=B3=B5=ED=86=B5=20=EC=BB=B4?=
=?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20UI?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/SignBtn.tsx | 24 +++++++++++++++
vote/src/components/common/VoteBtn.tsx | 23 +++++++++++++++
vote/src/components/common/VoteHeader.tsx | 34 ++++++++++++++++++++++
vote/src/components/common/VoteWrapper.tsx | 18 ++++++++++++
4 files changed, 99 insertions(+)
create mode 100644 vote/src/components/common/SignBtn.tsx
create mode 100644 vote/src/components/common/VoteBtn.tsx
create mode 100644 vote/src/components/common/VoteHeader.tsx
create mode 100644 vote/src/components/common/VoteWrapper.tsx
diff --git a/vote/src/components/common/SignBtn.tsx b/vote/src/components/common/SignBtn.tsx
new file mode 100644
index 0000000..caf6176
--- /dev/null
+++ b/vote/src/components/common/SignBtn.tsx
@@ -0,0 +1,24 @@
+import styled from "styled-components";
+import { BtnSmall } from "@styles/BtnStyle";
+
+interface SignBtnProps {
+ text: string;
+}
+
+const Button = styled(BtnSmall)<{ $isSignUp: boolean }>`
+ background-color: ${({ theme, $isSignUp }) =>
+ $isSignUp ? theme.colors.main_blue : theme.colors.white};
+ color: ${({ theme, $isSignUp }) =>
+ $isSignUp ? theme.colors.white : theme.colors.black};
+`;
+
+export default function SignBtn(props: SignBtnProps) {
+ const { text } = props;
+ const $isSignUp = text === "회원가입";
+
+ return (
+
+ );
+}
diff --git a/vote/src/components/common/VoteBtn.tsx b/vote/src/components/common/VoteBtn.tsx
new file mode 100644
index 0000000..d6954eb
--- /dev/null
+++ b/vote/src/components/common/VoteBtn.tsx
@@ -0,0 +1,23 @@
+import styled from "styled-components";
+import { BtnMid } from "@styles/BtnStyle";
+
+interface VoteBtnProps {
+ text: string;
+}
+
+const Button = styled(BtnMid)<{ $seeResult: boolean }>`
+ background-color: ${({ theme, $seeResult }) =>
+ $seeResult ? theme.colors.light_blue : theme.colors.main_blue};
+ color: ${({ theme }) => theme.colors.white};
+`;
+
+export default function VoteBtn(props: VoteBtnProps) {
+ const { text } = props;
+ const $seeResult = text === "결과보기";
+
+ return (
+
+ );
+}
diff --git a/vote/src/components/common/VoteHeader.tsx b/vote/src/components/common/VoteHeader.tsx
new file mode 100644
index 0000000..05e84f6
--- /dev/null
+++ b/vote/src/components/common/VoteHeader.tsx
@@ -0,0 +1,34 @@
+import { LogoIc } from "@assets/index";
+import styled from "styled-components";
+import SignBtn from "@components/common/SignBtn";
+
+const LogoIcon = styled(LogoIc)`
+ width: 10.75rem;
+ height: 4.5625rem;
+`;
+
+const HeaderContainer = styled.section`
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+`;
+
+const BtnContainer = styled.section`
+ display: flex;
+
+ gap: 2rem;
+`;
+
+/** header */
+export default function VoteHeader() {
+ return (
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/vote/src/components/common/VoteWrapper.tsx b/vote/src/components/common/VoteWrapper.tsx
new file mode 100644
index 0000000..d919f43
--- /dev/null
+++ b/vote/src/components/common/VoteWrapper.tsx
@@ -0,0 +1,18 @@
+import styled from "styled-components";
+import { BtnBig } from "@styles/BtnStyle";
+
+interface VoteWrapperProps {
+ text: string;
+}
+
+const Button = styled(BtnBig)``;
+
+export default function VoteWrapper(props: VoteWrapperProps) {
+ const { text } = props;
+
+ return (
+
+ );
+}
From 8a5281e0021fa1bb4175570d291a7ed293c3dcd4 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 27 May 2024 21:10:06 +0900
Subject: [PATCH 10/72] =?UTF-8?q?design:=20=EA=B3=B5=ED=86=B5=20layout=20U?=
=?UTF-8?q?I?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/layout/RootLayout.tsx | 10 ++++++++++
vote/src/components/layout/VoteLayout.tsx | 9 +++++++++
2 files changed, 19 insertions(+)
create mode 100644 vote/src/components/layout/RootLayout.tsx
create mode 100644 vote/src/components/layout/VoteLayout.tsx
diff --git a/vote/src/components/layout/RootLayout.tsx b/vote/src/components/layout/RootLayout.tsx
new file mode 100644
index 0000000..7f496af
--- /dev/null
+++ b/vote/src/components/layout/RootLayout.tsx
@@ -0,0 +1,10 @@
+import { Outlet } from "react-router-dom";
+
+/** RootLayout */
+export default function RootLayout() {
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/vote/src/components/layout/VoteLayout.tsx b/vote/src/components/layout/VoteLayout.tsx
new file mode 100644
index 0000000..08320b7
--- /dev/null
+++ b/vote/src/components/layout/VoteLayout.tsx
@@ -0,0 +1,9 @@
+import { Outlet } from "react-router-dom";
+
+export default function VoteLayout() {
+ return (
+ <>
+
+ >
+ );
+}
From da0c07c4af8a968fd2a80007977d8a071f5d2d22 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 27 May 2024 21:10:36 +0900
Subject: [PATCH 11/72] =?UTF-8?q?feat:=20=EB=9D=BC=EC=9A=B0=ED=8C=85=20out?=
=?UTF-8?q?let=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/Error.tsx | 4 ++++
vote/src/pages/SignIn.tsx | 3 +++
vote/src/pages/SignUp.tsx | 3 +++
vote/src/pages/VoteFe.tsx | 9 +++++++++
vote/src/pages/VoteMain.tsx | 31 +++++++++++++++++++++++++++++++
vote/src/router.tsx | 29 +++++++++++++++++++++++++++++
6 files changed, 79 insertions(+)
create mode 100644 vote/src/pages/Error.tsx
create mode 100644 vote/src/pages/SignIn.tsx
create mode 100644 vote/src/pages/SignUp.tsx
create mode 100644 vote/src/pages/VoteFe.tsx
create mode 100644 vote/src/pages/VoteMain.tsx
create mode 100644 vote/src/router.tsx
diff --git a/vote/src/pages/Error.tsx b/vote/src/pages/Error.tsx
new file mode 100644
index 0000000..9602dcf
--- /dev/null
+++ b/vote/src/pages/Error.tsx
@@ -0,0 +1,4 @@
+/** error page */
+export default function Error() {
+ return Error
;
+}
diff --git a/vote/src/pages/SignIn.tsx b/vote/src/pages/SignIn.tsx
new file mode 100644
index 0000000..a4251a7
--- /dev/null
+++ b/vote/src/pages/SignIn.tsx
@@ -0,0 +1,3 @@
+export default function SignIn() {
+ return 로그인 페이지입니다
;
+}
diff --git a/vote/src/pages/SignUp.tsx b/vote/src/pages/SignUp.tsx
new file mode 100644
index 0000000..4015270
--- /dev/null
+++ b/vote/src/pages/SignUp.tsx
@@ -0,0 +1,3 @@
+export default function Signup() {
+ return 회원가입페이지입니다
;
+}
diff --git a/vote/src/pages/VoteFe.tsx b/vote/src/pages/VoteFe.tsx
new file mode 100644
index 0000000..6febbe7
--- /dev/null
+++ b/vote/src/pages/VoteFe.tsx
@@ -0,0 +1,9 @@
+import VoteHeader from "@components/common/VoteHeader";
+
+export default function VoteFe() {
+ return (
+
+
+
+ );
+}
diff --git a/vote/src/pages/VoteMain.tsx b/vote/src/pages/VoteMain.tsx
new file mode 100644
index 0000000..f537253
--- /dev/null
+++ b/vote/src/pages/VoteMain.tsx
@@ -0,0 +1,31 @@
+import VoteBtn from "@components/common/VoteBtn";
+import VoteHeader from "@components/common/VoteHeader";
+import VoteWrapper from "@components/common/VoteWrapper";
+import styled from "styled-components";
+
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+`;
+
+const Header = styled.h1`
+ display: flex;
+ justify-content: center;
+
+ ${({ theme }) => theme.fonts.Headline1};
+`;
+
+export default function VoteMain() {
+ return (
+
+ );
+}
diff --git a/vote/src/router.tsx b/vote/src/router.tsx
new file mode 100644
index 0000000..0e9ea36
--- /dev/null
+++ b/vote/src/router.tsx
@@ -0,0 +1,29 @@
+import { createBrowserRouter } from "react-router-dom";
+import RootLayout from "@components/layout/RootLayout";
+import Error from "@pages/Error";
+import SignIn from "@pages/SignIn";
+import Signup from "@pages/SignUp";
+import VoteLayout from "@components/layout/VoteLayout";
+import VoteMain from "@pages/VoteMain";
+import VoteFe from "@pages/VoteFe";
+
+export const Router = createBrowserRouter([
+ {
+ path: "/",
+ element: ,
+ errorElement: ,
+ children: [
+ { index: true, element: },
+ { path: "/signin", element: },
+ { path: "/signup", element: },
+ {
+ path: "/vote",
+ element: ,
+ children: [
+ { path: "/vote/main", element: },
+ { path: "/vote/fe", element: },
+ ],
+ },
+ ],
+ },
+]);
From 363e900d980d0443110c9da92f73710ce1d4bf63 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 27 May 2024 21:11:45 +0900
Subject: [PATCH 12/72] =?UTF-8?q?design:=20=EC=A0=84=EC=97=AD=EC=8A=A4?=
=?UTF-8?q?=ED=83=80=EC=9D=BC=20+=20=EA=B3=B5=ED=86=B5=EB=B2=84=ED=8A=BC?=
=?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/styles/BtnStyle.ts | 45 +++++++++++++
vote/src/styles/globalStyle.ts | 31 +++++++++
vote/src/styles/theme.ts | 111 +++++++++++++++++++++++++++++++++
3 files changed, 187 insertions(+)
create mode 100644 vote/src/styles/BtnStyle.ts
create mode 100644 vote/src/styles/globalStyle.ts
create mode 100644 vote/src/styles/theme.ts
diff --git a/vote/src/styles/BtnStyle.ts b/vote/src/styles/BtnStyle.ts
new file mode 100644
index 0000000..9c41147
--- /dev/null
+++ b/vote/src/styles/BtnStyle.ts
@@ -0,0 +1,45 @@
+import styled from "styled-components";
+
+/*로그인 회원가입 페이지 버튼 스타일*/
+export const BtnSign = styled.button`
+ align-items: center;
+
+ background-color: ${({ theme }) => theme.colors.main_blue};
+ color: ${({ theme }) => theme.colors.white};
+ ${({ theme }) => theme.fonts.SingBtnText};
+`;
+
+/*투표 페이지 상단 버튼 스타일*/
+export const BtnSmall = styled.button`
+ align-items: center;
+ padding: 1rem 2rem;
+
+ border-radius: 2rem;
+ border: 1px solid ${({ theme }) => theme.colors.main_blue};
+`;
+
+/*투표 페이지 바로가기 버튼 스타일*/
+export const BtnBig = styled.button`
+ align-items: center;
+ width: 39.4rem;
+ height: 40.6rem;
+
+ border-radius: 2rem;
+ border: 3px solid ${({ theme }) => theme.colors.main_blue};
+
+ background-color: ${({ theme }) => theme.colors.white};
+ ${({ theme }) => theme.fonts.BigBtnText};
+`;
+
+/*투표 페이지 하단 버튼 스타일*/
+export const BtnMid = styled.button`
+ align-items: center;
+ width: 29.1rem;
+ height: 8.2rem;
+
+ border-radius: 2rem;
+ border: none;
+
+ color: ${({ theme }) => theme.colors.white};
+ ${({ theme }) => theme.fonts.MidBtnText};
+`;
diff --git a/vote/src/styles/globalStyle.ts b/vote/src/styles/globalStyle.ts
new file mode 100644
index 0000000..095c484
--- /dev/null
+++ b/vote/src/styles/globalStyle.ts
@@ -0,0 +1,31 @@
+import { createGlobalStyle, css } from "styled-components";
+import reset from "styled-reset";
+
+export const flexCenter = css`
+ display: flex;
+ align-items: center;
+ justify-content: center;
+`;
+
+export const GlobalStyle = createGlobalStyle`
+ ${reset}
+
+ html {
+ font-size: 62.5%;
+ scroll-behavior: smooth;
+ width: 100%;
+ }
+
+ body {
+ padding: 2.5rem;
+ margin: 0 auto;
+ letter-spacing: normal;
+ font-family: "Inter", sans-serif
+ }
+
+ button{
+ cursor: pointer;
+ }
+`;
+
+export default GlobalStyle;
diff --git a/vote/src/styles/theme.ts b/vote/src/styles/theme.ts
new file mode 100644
index 0000000..793360a
--- /dev/null
+++ b/vote/src/styles/theme.ts
@@ -0,0 +1,111 @@
+import { css, DefaultTheme } from "styled-components";
+
+const colors = {
+ main_blue: "#384084",
+ white: "#fff",
+ light_blue: "rgba(56, 64, 132, 0.50)",
+};
+
+const fonts = {
+ Headline1: css`
+ color: #242957;
+
+ font-family: Inter;
+ font-size: 4.8rem;
+ font-style: normal;
+ font-weight: 600;
+ line-height: normal;
+ `,
+
+ SingBtnText: css`
+ font-family: Inter;
+ font-size: 2rem;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+ `,
+
+ Name: css`
+ color: #000;
+
+ font-family: Inter;
+ font-size: 4rem;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 8rem; /* 200% */
+ `,
+
+ TeamName_Big: css`
+ color: #000;
+
+ font-family: Inter;
+ font-size: 4.8rem;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 8rem; /* 166.667% */
+ `,
+
+ TeamName_Mid: css`
+ color: #000;
+
+ font-family: Inter;
+ font-size: 4rem;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 8rem; /* 200% */
+ `,
+
+ TeamName_Small: css`
+ color: #000;
+
+ font-family: Inter;
+ font-size: 2rem;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+ `,
+
+ TeamDetail: css`
+ color: #000;
+
+ font-family: Inter;
+ font-size: 2rem;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+ `,
+
+ BigBtnText: css`
+ color: #000;
+
+ font-family: Inter;
+ font-size: 4.8rem;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 8rem; /* 166.667% */
+ `,
+
+ MidBtnText: css`
+ font-family: Inter;
+ font-size: 3rem;
+ font-style: normal;
+ font-weight: 500;
+ line-height: normal;
+ `,
+
+ Count: css`
+ color: #384084;
+
+ font-family: Inter;
+ font-size: 4rem;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 8rem; /* 200% */
+ `,
+};
+
+const theme: Pick = {
+ colors,
+ fonts,
+};
+export default theme;
From d00ceef95516fe4f06a21b0dc1e4a2c1ef33b494 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 27 May 2024 21:11:58 +0900
Subject: [PATCH 13/72] feat: App.tsx, main.tsx
---
vote/src/App.tsx | 37 ++++++-------------------
vote/src/index.css | 68 ----------------------------------------------
vote/src/main.tsx | 1 -
3 files changed, 9 insertions(+), 97 deletions(-)
delete mode 100644 vote/src/index.css
diff --git a/vote/src/App.tsx b/vote/src/App.tsx
index 52ea980..f70de90 100644
--- a/vote/src/App.tsx
+++ b/vote/src/App.tsx
@@ -1,34 +1,15 @@
-import { useState } from "react";
-import reactLogo from "./assets/react.svg";
-import viteLogo from "/vite.svg";
-import "./App.css";
+import { Router } from "router";
+import { RouterProvider } from "react-router-dom";
+import { ThemeProvider } from "styled-components";
+import GlobalStyle from "@styles/globalStyle";
+import theme from "@styles/theme";
function App() {
- const [count, setCount] = useState(0);
-
return (
- <>
-
- Vite + React
-
-
-
- Edit src/App.tsx and save to test HMR
-
-
-
- Click on the Vite and React logos to learn more
-
- >
+
+
+
+
);
}
diff --git a/vote/src/index.css b/vote/src/index.css
deleted file mode 100644
index 6119ad9..0000000
--- a/vote/src/index.css
+++ /dev/null
@@ -1,68 +0,0 @@
-:root {
- font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
- line-height: 1.5;
- font-weight: 400;
-
- color-scheme: light dark;
- color: rgba(255, 255, 255, 0.87);
- background-color: #242424;
-
- font-synthesis: none;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-a {
- font-weight: 500;
- color: #646cff;
- text-decoration: inherit;
-}
-a:hover {
- color: #535bf2;
-}
-
-body {
- margin: 0;
- display: flex;
- place-items: center;
- min-width: 320px;
- min-height: 100vh;
-}
-
-h1 {
- font-size: 3.2em;
- line-height: 1.1;
-}
-
-button {
- border-radius: 8px;
- border: 1px solid transparent;
- padding: 0.6em 1.2em;
- font-size: 1em;
- font-weight: 500;
- font-family: inherit;
- background-color: #1a1a1a;
- cursor: pointer;
- transition: border-color 0.25s;
-}
-button:hover {
- border-color: #646cff;
-}
-button:focus,
-button:focus-visible {
- outline: 4px auto -webkit-focus-ring-color;
-}
-
-@media (prefers-color-scheme: light) {
- :root {
- color: #213547;
- background-color: #ffffff;
- }
- a:hover {
- color: #747bff;
- }
- button {
- background-color: #f9f9f9;
- }
-}
diff --git a/vote/src/main.tsx b/vote/src/main.tsx
index f25366e..b5c0092 100644
--- a/vote/src/main.tsx
+++ b/vote/src/main.tsx
@@ -1,7 +1,6 @@
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.tsx";
-import "./index.css";
ReactDOM.createRoot(document.getElementById("root")!).render(
From 8a79b504f5dda2c3a3a9a6156f22727708c291f2 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 27 May 2024 21:36:01 +0900
Subject: [PATCH 14/72] =?UTF-8?q?etc:=20=EB=84=A4=EC=9D=B4=EB=B0=8D=20?=
=?UTF-8?q?=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/styles/BtnStyle.ts | 2 +-
vote/src/styles/theme.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/vote/src/styles/BtnStyle.ts b/vote/src/styles/BtnStyle.ts
index 9c41147..f775aee 100644
--- a/vote/src/styles/BtnStyle.ts
+++ b/vote/src/styles/BtnStyle.ts
@@ -6,7 +6,7 @@ export const BtnSign = styled.button`
background-color: ${({ theme }) => theme.colors.main_blue};
color: ${({ theme }) => theme.colors.white};
- ${({ theme }) => theme.fonts.SingBtnText};
+ ${({ theme }) => theme.fonts.SignBtnText};
`;
/*투표 페이지 상단 버튼 스타일*/
diff --git a/vote/src/styles/theme.ts b/vote/src/styles/theme.ts
index 793360a..8f936e4 100644
--- a/vote/src/styles/theme.ts
+++ b/vote/src/styles/theme.ts
@@ -17,7 +17,7 @@ const fonts = {
line-height: normal;
`,
- SingBtnText: css`
+ SignBtnText: css`
font-family: Inter;
font-size: 2rem;
font-style: normal;
From 5ba88a377d031005c3980b3841d9410888b1b72f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 28 May 2024 16:02:04 +0900
Subject: [PATCH 15/72] =?UTF-8?q?feat:=20=ED=8C=8C=ED=8A=B8=EC=9E=A5=20?=
=?UTF-8?q?=ED=88=AC=ED=91=9C=20=ED=8E=98=EC=9D=B4=EC=A7=80=EC=99=80=20?=
=?UTF-8?q?=EB=8D=B0=EB=AA=A8=EB=8D=B0=EC=9D=B4=20=ED=88=AC=ED=91=9C=20?=
=?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=83=9D=EC=84=B1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/package.json | 1 +
vote/src/components/common/VoteWrapper.tsx | 10 +++-
vote/src/pages/VoteDemo.tsx | 38 +++++++++++++++
vote/src/pages/VoteFe.tsx | 9 ----
vote/src/pages/VoteMain.tsx | 34 +++++++++----
vote/src/pages/VotePart.tsx | 56 ++++++++++++++++++++++
vote/src/router.tsx | 6 ++-
vote/src/styles/BtnStyle.ts | 4 ++
vote/yarn.lock | 12 +++++
9 files changed, 148 insertions(+), 22 deletions(-)
create mode 100644 vote/src/pages/VoteDemo.tsx
delete mode 100644 vote/src/pages/VoteFe.tsx
create mode 100644 vote/src/pages/VotePart.tsx
diff --git a/vote/package.json b/vote/package.json
index 367db46..19e101b 100644
--- a/vote/package.json
+++ b/vote/package.json
@@ -18,6 +18,7 @@
"styled-reset": "^4.5.2"
},
"devDependencies": {
+ "@types/node": "^20.12.12",
"@types/react": "^18.2.66",
"@types/react-dom": "^18.2.22",
"@types/styled-components": "^5.1.34",
diff --git a/vote/src/components/common/VoteWrapper.tsx b/vote/src/components/common/VoteWrapper.tsx
index d919f43..8bc899d 100644
--- a/vote/src/components/common/VoteWrapper.tsx
+++ b/vote/src/components/common/VoteWrapper.tsx
@@ -3,16 +3,22 @@ import { BtnBig } from "@styles/BtnStyle";
interface VoteWrapperProps {
text: string;
+ onClick: any;
}
const Button = styled(BtnBig)``;
+const ButtonText = styled.p`
+ width: 28.3rem;
+ flex-shrink: 0;
+`;
+
export default function VoteWrapper(props: VoteWrapperProps) {
- const { text } = props;
+ const { text, onClick } = props;
return (
);
}
diff --git a/vote/src/pages/VoteDemo.tsx b/vote/src/pages/VoteDemo.tsx
new file mode 100644
index 0000000..4de6593
--- /dev/null
+++ b/vote/src/pages/VoteDemo.tsx
@@ -0,0 +1,38 @@
+import VoteHeader from "@components/common/VoteHeader";
+import VoteBtn from "@components/common/VoteBtn";
+import styled from "styled-components";
+
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+`;
+
+const HeaderText = styled.h1`
+ display: flex;
+ justify-content: center;
+ margin-top: 19.5rem;
+ margin-bottom: 14.3rem;
+
+ ${({ theme }) => theme.fonts.Headline1};
+`;
+
+const ButtonWrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ gap: 4.2rem;
+ justify-content: center;
+ align-items: center;
+`;
+
+export default function VoteDemo() {
+ return (
+
+ );
+}
diff --git a/vote/src/pages/VoteFe.tsx b/vote/src/pages/VoteFe.tsx
deleted file mode 100644
index 6febbe7..0000000
--- a/vote/src/pages/VoteFe.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import VoteHeader from "@components/common/VoteHeader";
-
-export default function VoteFe() {
- return (
-
-
-
- );
-}
diff --git a/vote/src/pages/VoteMain.tsx b/vote/src/pages/VoteMain.tsx
index f537253..9bb5ae9 100644
--- a/vote/src/pages/VoteMain.tsx
+++ b/vote/src/pages/VoteMain.tsx
@@ -1,31 +1,47 @@
-import VoteBtn from "@components/common/VoteBtn";
import VoteHeader from "@components/common/VoteHeader";
import VoteWrapper from "@components/common/VoteWrapper";
import styled from "styled-components";
+import { useNavigate } from "react-router-dom";
const Section = styled.section`
display: flex;
flex-direction: column;
`;
-const Header = styled.h1`
+const HeaderText = styled.h1`
display: flex;
justify-content: center;
+ margin-top: 12.5rem;
+ margin-bottom: 8.2rem;
${({ theme }) => theme.fonts.Headline1};
`;
+const VoteWrappers = styled.div`
+ display: flex;
+ gap: 10rem;
+ justify-content: center;
+ align-items: flex-start;
+ flex-shrink: 0;
+`;
+
export default function VoteMain() {
+ const navigate = useNavigate();
+
return (
-
-
-
-
-
-
-
+ 파트장 / 데모데이 투표
+
+ navigate("/vote/part")}
+ text="파트장 투표 바로가기"
+ />
+ navigate("/vote/demo")}
+ text="데모데이 투표 바로가기"
+ />
+
);
}
diff --git a/vote/src/pages/VotePart.tsx b/vote/src/pages/VotePart.tsx
new file mode 100644
index 0000000..019dc13
--- /dev/null
+++ b/vote/src/pages/VotePart.tsx
@@ -0,0 +1,56 @@
+import VoteHeader from "@components/common/VoteHeader";
+import VoteWrapper from "@components/common/VoteWrapper";
+import VoteBtn from "@components/common/VoteBtn";
+import { useNavigate } from "react-router-dom";
+import styled from "styled-components";
+
+const HeaderText = styled.h1`
+ display: flex;
+ justify-content: center;
+ margin-top: 12.5rem;
+ margin-bottom: 8.2rem;
+
+ ${({ theme }) => theme.fonts.Headline1};
+`;
+
+const VoteWrappers = styled.div`
+ display: flex;
+ gap: 10rem;
+ justify-content: center;
+ align-items: flex-start;
+ flex-shrink: 0;
+`;
+
+const PartWrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ gap: 3.2rem;
+ justify-content: center;
+ align-items: center;
+`;
+export default function VotePart() {
+ const navigate = useNavigate();
+
+ return (
+
+
+
파트장 투표
+
+
+ navigate("/vote/part")}
+ text="FRONT-END 파트장 투표"
+ />
+
+
+
+ navigate("/vote/part")}
+ text="BACK-END 파트장 투표"
+ />
+
+
+
+
+ );
+}
diff --git a/vote/src/router.tsx b/vote/src/router.tsx
index 0e9ea36..d9152c4 100644
--- a/vote/src/router.tsx
+++ b/vote/src/router.tsx
@@ -5,7 +5,8 @@ import SignIn from "@pages/SignIn";
import Signup from "@pages/SignUp";
import VoteLayout from "@components/layout/VoteLayout";
import VoteMain from "@pages/VoteMain";
-import VoteFe from "@pages/VoteFe";
+import VotePart from "@pages/VotePart";
+import VoteDemo from "@pages/VoteDemo";
export const Router = createBrowserRouter([
{
@@ -21,7 +22,8 @@ export const Router = createBrowserRouter([
element: ,
children: [
{ path: "/vote/main", element: },
- { path: "/vote/fe", element: },
+ { path: "/vote/part", element: },
+ { path: "/vote/demo", element: },
],
},
],
diff --git a/vote/src/styles/BtnStyle.ts b/vote/src/styles/BtnStyle.ts
index f775aee..527c46c 100644
--- a/vote/src/styles/BtnStyle.ts
+++ b/vote/src/styles/BtnStyle.ts
@@ -20,7 +20,9 @@ export const BtnSmall = styled.button`
/*투표 페이지 바로가기 버튼 스타일*/
export const BtnBig = styled.button`
+ display: flex;
align-items: center;
+ justify-content: center;
width: 39.4rem;
height: 40.6rem;
@@ -29,6 +31,8 @@ export const BtnBig = styled.button`
background-color: ${({ theme }) => theme.colors.white};
${({ theme }) => theme.fonts.BigBtnText};
+
+ cursor: pointer;
`;
/*투표 페이지 하단 버튼 스타일*/
diff --git a/vote/yarn.lock b/vote/yarn.lock
index 44bf691..defc512 100644
--- a/vote/yarn.lock
+++ b/vote/yarn.lock
@@ -857,6 +857,13 @@
"@types/react" "*"
hoist-non-react-statics "^3.3.0"
+"@types/node@^20.12.12":
+ version "20.12.12"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050"
+ integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==
+ dependencies:
+ undici-types "~5.26.4"
+
"@types/prop-types@*":
version "15.7.12"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6"
@@ -2167,6 +2174,11 @@ typescript@^5.2.2:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611"
integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==
+undici-types@~5.26.4:
+ version "5.26.5"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
+ integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+
update-browserslist-db@^1.0.13:
version "1.0.16"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356"
From e9ce03e2c020aae5bc8aef9ddd45927fcbc0300c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 28 May 2024 16:17:39 +0900
Subject: [PATCH 16/72] =?UTF-8?q?design:=20BtnBig=20=EB=82=B4=EB=B6=80=20?=
=?UTF-8?q?=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EC=A4=84=EB=B0=94=EA=BF=88=20?=
=?UTF-8?q?=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/VoteWrapper.tsx | 13 +++++--------
vote/src/pages/VoteMain.tsx | 18 ++++++++++--------
vote/src/pages/VotePart.tsx | 18 ++++++++++--------
3 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/vote/src/components/common/VoteWrapper.tsx b/vote/src/components/common/VoteWrapper.tsx
index 8bc899d..6c6df5f 100644
--- a/vote/src/components/common/VoteWrapper.tsx
+++ b/vote/src/components/common/VoteWrapper.tsx
@@ -2,23 +2,20 @@ import styled from "styled-components";
import { BtnBig } from "@styles/BtnStyle";
interface VoteWrapperProps {
- text: string;
- onClick: any;
+ onClick: () => void;
+ children: React.ReactNode;
}
const Button = styled(BtnBig)``;
-const ButtonText = styled.p`
- width: 28.3rem;
- flex-shrink: 0;
-`;
+const ButtonText = styled.p``;
export default function VoteWrapper(props: VoteWrapperProps) {
- const { text, onClick } = props;
+ const { onClick, children } = props;
return (
);
}
diff --git a/vote/src/pages/VoteMain.tsx b/vote/src/pages/VoteMain.tsx
index 9bb5ae9..376fd72 100644
--- a/vote/src/pages/VoteMain.tsx
+++ b/vote/src/pages/VoteMain.tsx
@@ -33,14 +33,16 @@ export default function VoteMain() {
파트장 / 데모데이 투표
- navigate("/vote/part")}
- text="파트장 투표 바로가기"
- />
- navigate("/vote/demo")}
- text="데모데이 투표 바로가기"
- />
+ navigate("/vote/part")}>
+ 파트장 투표
+
+ 바로가기
+
+ navigate("/vote/demo")}>
+ 데모데이 투표
+
+ 바로가기
+
);
diff --git a/vote/src/pages/VotePart.tsx b/vote/src/pages/VotePart.tsx
index 019dc13..ca72b67 100644
--- a/vote/src/pages/VotePart.tsx
+++ b/vote/src/pages/VotePart.tsx
@@ -37,17 +37,19 @@ export default function VotePart() {
파트장 투표
- navigate("/vote/part")}
- text="FRONT-END 파트장 투표"
- />
+ navigate("/vote/part")}>
+ Front-END
+
+ 파트장 투표
+
- navigate("/vote/part")}
- text="BACK-END 파트장 투표"
- />
+ navigate("/vote/part")}>
+ BACK-END
+
+ 파트장 투표
+
From 28291fd57670e34a226c804dc93ddbcc0e7efe6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 28 May 2024 16:28:20 +0900
Subject: [PATCH 17/72] =?UTF-8?q?design:=20BtnBig=EC=97=90=20=EB=A7=88?=
=?UTF-8?q?=EC=9A=B0=EC=8A=A4=20=EC=98=A4=EB=B2=84=20=EC=8B=9C=20=EB=B0=B1?=
=?UTF-8?q?=EA=B7=B8=EB=9D=BC=EC=9A=B4=EB=93=9C=20=EC=83=89=EC=83=81=20?=
=?UTF-8?q?=EB=B0=8F=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EC=83=89=EC=83=81=20?=
=?UTF-8?q?=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/VotePart.tsx | 2 +-
vote/src/styles/BtnStyle.ts | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/vote/src/pages/VotePart.tsx b/vote/src/pages/VotePart.tsx
index ca72b67..96e4d72 100644
--- a/vote/src/pages/VotePart.tsx
+++ b/vote/src/pages/VotePart.tsx
@@ -38,7 +38,7 @@ export default function VotePart() {
navigate("/vote/part")}>
- Front-END
+ FRONT-END
파트장 투표
diff --git a/vote/src/styles/BtnStyle.ts b/vote/src/styles/BtnStyle.ts
index 527c46c..8a805ca 100644
--- a/vote/src/styles/BtnStyle.ts
+++ b/vote/src/styles/BtnStyle.ts
@@ -33,6 +33,12 @@ export const BtnBig = styled.button`
${({ theme }) => theme.fonts.BigBtnText};
cursor: pointer;
+
+ /* 마우스 오버 시 백그라운드 색상 및 텍스트 색상 변경 */
+ &:hover {
+ background-color: ${({ theme }) => theme.colors.main_blue};
+ color: ${({ theme }) => theme.colors.white}; /* 텍스트 색상 변경 */
+ }
`;
/*투표 페이지 하단 버튼 스타일*/
From 1912ec22cc0d1a55d55089ceb1f607fa050e5067 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 28 May 2024 17:21:23 +0900
Subject: [PATCH 18/72] =?UTF-8?q?etc:=20pages=20=EB=82=B4=20Vote=20?=
=?UTF-8?q?=ED=8F=B4=EB=8D=94=20=EC=83=9D=EC=84=B1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../{VoteDemo.tsx => Vote/SelectDemo.tsx} | 0
.../{VotePart.tsx => Vote/SelectPart.tsx} | 4 +--
vote/src/pages/Vote/VoteBack.tsx | 25 +++++++++++++++++++
vote/src/pages/Vote/VoteDemo.tsx | 25 +++++++++++++++++++
vote/src/pages/Vote/VoteFront.tsx | 25 +++++++++++++++++++
vote/src/pages/{ => Vote}/VoteMain.tsx | 4 +--
vote/src/router.tsx | 14 ++++++++---
7 files changed, 89 insertions(+), 8 deletions(-)
rename vote/src/pages/{VoteDemo.tsx => Vote/SelectDemo.tsx} (100%)
rename vote/src/pages/{VotePart.tsx => Vote/SelectPart.tsx} (91%)
create mode 100644 vote/src/pages/Vote/VoteBack.tsx
create mode 100644 vote/src/pages/Vote/VoteDemo.tsx
create mode 100644 vote/src/pages/Vote/VoteFront.tsx
rename vote/src/pages/{ => Vote}/VoteMain.tsx (88%)
diff --git a/vote/src/pages/VoteDemo.tsx b/vote/src/pages/Vote/SelectDemo.tsx
similarity index 100%
rename from vote/src/pages/VoteDemo.tsx
rename to vote/src/pages/Vote/SelectDemo.tsx
diff --git a/vote/src/pages/VotePart.tsx b/vote/src/pages/Vote/SelectPart.tsx
similarity index 91%
rename from vote/src/pages/VotePart.tsx
rename to vote/src/pages/Vote/SelectPart.tsx
index 96e4d72..93a1dcd 100644
--- a/vote/src/pages/VotePart.tsx
+++ b/vote/src/pages/Vote/SelectPart.tsx
@@ -37,7 +37,7 @@ export default function VotePart() {
파트장 투표
- navigate("/vote/part")}>
+ navigate("/vote/front")}>
FRONT-END
파트장 투표
@@ -45,7 +45,7 @@ export default function VotePart() {
- navigate("/vote/part")}>
+ navigate("/vote/back")}>
BACK-END
파트장 투표
diff --git a/vote/src/pages/Vote/VoteBack.tsx b/vote/src/pages/Vote/VoteBack.tsx
new file mode 100644
index 0000000..011ee55
--- /dev/null
+++ b/vote/src/pages/Vote/VoteBack.tsx
@@ -0,0 +1,25 @@
+import VoteHeader from "@components/common/VoteHeader";
+import styled from "styled-components";
+
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+`;
+
+const HeaderText = styled.h1`
+ display: flex;
+ justify-content: center;
+ margin-top: 10.9rem;
+ margin-bottom: 4.3rem;
+
+ ${({ theme }) => theme.fonts.Headline1};
+`;
+
+export default function VoteBack() {
+ return (
+
+ );
+}
diff --git a/vote/src/pages/Vote/VoteDemo.tsx b/vote/src/pages/Vote/VoteDemo.tsx
new file mode 100644
index 0000000..203c88d
--- /dev/null
+++ b/vote/src/pages/Vote/VoteDemo.tsx
@@ -0,0 +1,25 @@
+import VoteHeader from "@components/common/VoteHeader";
+import styled from "styled-components";
+
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+`;
+
+const HeaderText = styled.h1`
+ display: flex;
+ justify-content: center;
+ margin-top: 12.5rem;
+ margin-bottom: 8.5rem;
+
+ ${({ theme }) => theme.fonts.Headline1};
+`;
+
+export default function VoteBack() {
+ return (
+
+ );
+}
diff --git a/vote/src/pages/Vote/VoteFront.tsx b/vote/src/pages/Vote/VoteFront.tsx
new file mode 100644
index 0000000..aea8a03
--- /dev/null
+++ b/vote/src/pages/Vote/VoteFront.tsx
@@ -0,0 +1,25 @@
+import VoteHeader from "@components/common/VoteHeader";
+import styled from "styled-components";
+
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+`;
+
+const HeaderText = styled.h1`
+ display: flex;
+ justify-content: center;
+ margin-top: 10.9rem;
+ margin-bottom: 4.3rem;
+
+ ${({ theme }) => theme.fonts.Headline1};
+`;
+
+export default function VoteFront() {
+ return (
+
+ );
+}
diff --git a/vote/src/pages/VoteMain.tsx b/vote/src/pages/Vote/VoteMain.tsx
similarity index 88%
rename from vote/src/pages/VoteMain.tsx
rename to vote/src/pages/Vote/VoteMain.tsx
index 376fd72..f4cb53a 100644
--- a/vote/src/pages/VoteMain.tsx
+++ b/vote/src/pages/Vote/VoteMain.tsx
@@ -33,12 +33,12 @@ export default function VoteMain() {
파트장 / 데모데이 투표
- navigate("/vote/part")}>
+ navigate("/vote/select/part")}>
파트장 투표
바로가기
- navigate("/vote/demo")}>
+ navigate("/vote/select/demo")}>
데모데이 투표
바로가기
diff --git a/vote/src/router.tsx b/vote/src/router.tsx
index d9152c4..ca69fc6 100644
--- a/vote/src/router.tsx
+++ b/vote/src/router.tsx
@@ -4,9 +4,12 @@ import Error from "@pages/Error";
import SignIn from "@pages/SignIn";
import Signup from "@pages/SignUp";
import VoteLayout from "@components/layout/VoteLayout";
-import VoteMain from "@pages/VoteMain";
-import VotePart from "@pages/VotePart";
-import VoteDemo from "@pages/VoteDemo";
+import VoteMain from "@pages/Vote/VoteMain";
+import SelectPart from "@pages/Vote/SelectPart";
+import SelectDemo from "@pages/Vote/SelectDemo";
+import VoteFront from "@pages/Vote/VoteFront";
+import VoteBack from "@pages/Vote/VoteBack";
+import VoteDemo from "@pages/Vote/VoteDemo";
export const Router = createBrowserRouter([
{
@@ -22,7 +25,10 @@ export const Router = createBrowserRouter([
element: ,
children: [
{ path: "/vote/main", element: },
- { path: "/vote/part", element: },
+ { path: "/vote/select/part", element: },
+ { path: "/vote/select/demo", element: },
+ { path: "/vote/front", element: },
+ { path: "/vote/back", element: },
{ path: "/vote/demo", element: },
],
},
From 3c98b18b80d7d64ae19f91810c743c1af758457d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Sun, 2 Jun 2024 03:56:52 +0900
Subject: [PATCH 19/72] =?UTF-8?q?feat:=20=ED=88=AC=ED=91=9C=20=EA=B2=B0?=
=?UTF-8?q?=EA=B3=BC=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=9D=BC=EC=9A=B0?=
=?UTF-8?q?=ED=8C=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/VoteBtn.tsx | 5 +++--
vote/src/pages/Result/ResultBack.tsx | 25 +++++++++++++++++++++++++
vote/src/pages/Result/ResultDemo.tsx | 25 +++++++++++++++++++++++++
vote/src/pages/Result/ResultFront.tsx | 25 +++++++++++++++++++++++++
vote/src/pages/Vote/SelectDemo.tsx | 10 ++++++++--
vote/src/pages/Vote/SelectPart.tsx | 10 ++++++++--
vote/src/router.tsx | 6 ++++++
7 files changed, 100 insertions(+), 6 deletions(-)
create mode 100644 vote/src/pages/Result/ResultBack.tsx
create mode 100644 vote/src/pages/Result/ResultDemo.tsx
create mode 100644 vote/src/pages/Result/ResultFront.tsx
diff --git a/vote/src/components/common/VoteBtn.tsx b/vote/src/components/common/VoteBtn.tsx
index d6954eb..2228804 100644
--- a/vote/src/components/common/VoteBtn.tsx
+++ b/vote/src/components/common/VoteBtn.tsx
@@ -3,6 +3,7 @@ import { BtnMid } from "@styles/BtnStyle";
interface VoteBtnProps {
text: string;
+ onClick: () => void;
}
const Button = styled(BtnMid)<{ $seeResult: boolean }>`
@@ -12,11 +13,11 @@ const Button = styled(BtnMid)<{ $seeResult: boolean }>`
`;
export default function VoteBtn(props: VoteBtnProps) {
- const { text } = props;
+ const { text, onClick } = props;
const $seeResult = text === "결과보기";
return (
-
-
+ navigate("/vote/result/front")}
+ />
navigate("/vote/back")}>
@@ -50,7 +53,10 @@ export default function VotePart() {
파트장 투표
-
+ navigate("/vote/result/back")}
+ />
diff --git a/vote/src/router.tsx b/vote/src/router.tsx
index ca69fc6..0999803 100644
--- a/vote/src/router.tsx
+++ b/vote/src/router.tsx
@@ -10,6 +10,9 @@ import SelectDemo from "@pages/Vote/SelectDemo";
import VoteFront from "@pages/Vote/VoteFront";
import VoteBack from "@pages/Vote/VoteBack";
import VoteDemo from "@pages/Vote/VoteDemo";
+import ResultFront from "@pages/Result/ResultFront";
+import ResultBack from "@pages/Result/ResultBack";
+import ResultDemo from "@pages/Result/ResultDemo";
export const Router = createBrowserRouter([
{
@@ -30,6 +33,9 @@ export const Router = createBrowserRouter([
{ path: "/vote/front", element: },
{ path: "/vote/back", element: },
{ path: "/vote/demo", element: },
+ { path: "/vote/result/front", element: },
+ { path: "/vote/result/back", element: },
+ { path: "/vote/result/demo", element: },
],
},
],
From d1e6743f5e9fe24460a683e85f9eab06e32d4edb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Mon, 3 Jun 2024 23:25:54 +0900
Subject: [PATCH 20/72] =?UTF-8?q?refactor:=20VoteWrapper=20=ED=88=AC?=
=?UTF-8?q?=ED=91=9C=20=ED=8E=98=EC=9D=B4=EC=A7=80=EC=97=90=EC=84=9C?=
=?UTF-8?q?=EB=8F=84=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94=20=EA=B2=83?=
=?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/ResultWrapper.tsx | 21 +++++++
vote/src/components/common/VoteBtn.tsx | 2 +-
vote/src/components/common/VoteWrapper.tsx | 22 ++++---
vote/src/components/layout/ResultLayout.tsx | 9 +++
vote/src/pages/Vote/SelectDemo.tsx | 5 +-
vote/src/pages/Vote/SelectPart.tsx | 29 +++++----
vote/src/pages/Vote/VoteBack.tsx | 62 ++++++++++++++++++++
vote/src/pages/Vote/VoteDemo.tsx | 54 ++++++++++++++++-
vote/src/pages/Vote/VoteFront.tsx | 62 ++++++++++++++++++++
vote/src/pages/Vote/VoteMain.tsx | 10 +++-
vote/src/router.tsx | 13 +++-
vote/src/styles/BtnStyle.ts | 5 +-
vote/src/styles/theme.ts | 2 +-
13 files changed, 261 insertions(+), 35 deletions(-)
create mode 100644 vote/src/components/common/ResultWrapper.tsx
create mode 100644 vote/src/components/layout/ResultLayout.tsx
diff --git a/vote/src/components/common/ResultWrapper.tsx b/vote/src/components/common/ResultWrapper.tsx
new file mode 100644
index 0000000..5cb78b2
--- /dev/null
+++ b/vote/src/components/common/ResultWrapper.tsx
@@ -0,0 +1,21 @@
+import styled from "styled-components";
+import { BtnBig } from "@styles/BtnStyle";
+
+interface VoteWrapperProps {
+ onClick?: () => void;
+ children: React.ReactNode;
+}
+
+const Button = styled(BtnBig)``;
+
+const ButtonText = styled.p``;
+
+export default function VoteWrapper(props: VoteWrapperProps) {
+ const { onClick, children } = props;
+
+ return (
+
+ {children}
+
+ );
+}
diff --git a/vote/src/components/common/VoteBtn.tsx b/vote/src/components/common/VoteBtn.tsx
index 2228804..f46da29 100644
--- a/vote/src/components/common/VoteBtn.tsx
+++ b/vote/src/components/common/VoteBtn.tsx
@@ -3,7 +3,7 @@ import { BtnMid } from "@styles/BtnStyle";
interface VoteBtnProps {
text: string;
- onClick: () => void;
+ onClick?: () => void;
}
const Button = styled(BtnMid)<{ $seeResult: boolean }>`
diff --git a/vote/src/components/common/VoteWrapper.tsx b/vote/src/components/common/VoteWrapper.tsx
index 6c6df5f..1abe1df 100644
--- a/vote/src/components/common/VoteWrapper.tsx
+++ b/vote/src/components/common/VoteWrapper.tsx
@@ -2,20 +2,28 @@ import styled from "styled-components";
import { BtnBig } from "@styles/BtnStyle";
interface VoteWrapperProps {
- onClick: () => void;
+ onClick?: () => void;
children: React.ReactNode;
+ width?: string;
+ height?: string;
}
-const Button = styled(BtnBig)``;
-
-const ButtonText = styled.p``;
+const Button = styled(BtnBig)<{ width?: string; height?: string }>`
+ width: ${({ width }) => width || "21.6rem"}; /* 파트장투표는 21.6 */
+ height: ${({ height }) => height || "11.7rem"};
+ &:hover {
+ span {
+ color: ${({ theme }) => theme.colors.white}; /* 텍스트 색상 변경 */
+ }
+ }
+`;
export default function VoteWrapper(props: VoteWrapperProps) {
- const { onClick, children } = props;
+ const { onClick, children, width, height } = props;
return (
-
- {children}
+
+ {children}
);
}
diff --git a/vote/src/components/layout/ResultLayout.tsx b/vote/src/components/layout/ResultLayout.tsx
new file mode 100644
index 0000000..08320b7
--- /dev/null
+++ b/vote/src/components/layout/ResultLayout.tsx
@@ -0,0 +1,9 @@
+import { Outlet } from "react-router-dom";
+
+export default function VoteLayout() {
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/vote/src/pages/Vote/SelectDemo.tsx b/vote/src/pages/Vote/SelectDemo.tsx
index b7db147..8026aeb 100644
--- a/vote/src/pages/Vote/SelectDemo.tsx
+++ b/vote/src/pages/Vote/SelectDemo.tsx
@@ -34,10 +34,7 @@ export default function VoteDemo() {
데모데이 투표
navigate("/vote/demo")} />
- navigate("/vote/result/demo")}
- />
+ navigate("/result/demo")} />
);
diff --git a/vote/src/pages/Vote/SelectPart.tsx b/vote/src/pages/Vote/SelectPart.tsx
index eec7ef1..4070267 100644
--- a/vote/src/pages/Vote/SelectPart.tsx
+++ b/vote/src/pages/Vote/SelectPart.tsx
@@ -4,6 +4,11 @@ import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+`;
+
const HeaderText = styled.h1`
display: flex;
justify-content: center;
@@ -32,33 +37,33 @@ export default function VotePart() {
const navigate = useNavigate();
return (
-
+
파트장 투표
- navigate("/vote/front")}>
+ navigate("/vote/front")}
+ width="39.4rem"
+ height="40.6rem">
FRONT-END
파트장 투표
- navigate("/vote/result/front")}
- />
+ navigate("/result/front")} />
- navigate("/vote/back")}>
+ navigate("/vote/back")}
+ width="39.4rem"
+ height="40.6rem">
BACK-END
파트장 투표
- navigate("/vote/result/back")}
- />
+ navigate("/result/back")} />
-
+
);
}
diff --git a/vote/src/pages/Vote/VoteBack.tsx b/vote/src/pages/Vote/VoteBack.tsx
index 011ee55..f516ffd 100644
--- a/vote/src/pages/Vote/VoteBack.tsx
+++ b/vote/src/pages/Vote/VoteBack.tsx
@@ -1,6 +1,22 @@
import VoteHeader from "@components/common/VoteHeader";
+import VoteWrapper from "@components/common/VoteWrapper";
+import VoteBtn from "@components/common/VoteBtn";
+import { useNavigate } from "react-router-dom";
import styled from "styled-components";
+const BackItems = [
+ { key: 1, name: "이진우", team: "Buldog" },
+ { key: 2, name: "임형준", team: "BeatBuddy" },
+ { key: 3, name: "박시영", team: "CoupleLog" },
+ { key: 4, name: "박수빈", team: "BeatBuddy" },
+ { key: 5, name: "장영환", team: "TIG" },
+ { key: 6, name: "정기민", team: "TIG" },
+ { key: 7, name: "김성현", team: "CoupleLog" },
+ { key: 8, name: "이도현", team: "azito" },
+ { key: 9, name: "전민", team: "Buldog" },
+ { key: 10, name: "권찬", team: "azito" },
+];
+
const Section = styled.section`
display: flex;
flex-direction: column;
@@ -15,11 +31,57 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
+const Wrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const VoteItemWrappers = styled.div`
+ display: flex;
+ gap: 3.2rem 5.4rem;
+ width: 103.6rem;
+ height: 42.6rem;
+ flex-wrap: wrap;
+ justify-content: center;
+ margin-bottom: 8.5rem;
+`;
+
+const TeamNameMid = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Mid};
+`;
+
+const TeamNameSmall = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Small};
+`;
+
+const ButtonWrapper = styled.div`
+ display: flex;
+ justify-content: center;
+ gap: 1.3rem;
+`;
+
export default function VoteBack() {
+ const navigate = useNavigate();
+
return (
BE 파트장 투표
+
+
+ {BackItems.map((item) => (
+
+ {item.team}
+ {item.name}
+
+ ))}
+
+
+
+ navigate("/result/back")} />
+
+
);
}
diff --git a/vote/src/pages/Vote/VoteDemo.tsx b/vote/src/pages/Vote/VoteDemo.tsx
index 203c88d..06e4cd2 100644
--- a/vote/src/pages/Vote/VoteDemo.tsx
+++ b/vote/src/pages/Vote/VoteDemo.tsx
@@ -1,6 +1,17 @@
import VoteHeader from "@components/common/VoteHeader";
+import VoteWrapper from "@components/common/VoteWrapper";
+import VoteBtn from "@components/common/VoteBtn";
+import { useNavigate } from "react-router-dom";
import styled from "styled-components";
+const DemoItems = [
+ { key: 1, name: "azito" },
+ { key: 2, name: "BeatBuddy" },
+ { key: 3, name: "Buldog" },
+ { key: 4, name: "CoupleLog" },
+ { key: 5, name: "TIG" },
+];
+
const Section = styled.section`
display: flex;
flex-direction: column;
@@ -15,11 +26,52 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-export default function VoteBack() {
+const Wrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const VoteItemWrappers = styled.div`
+ display: flex;
+ gap: 3.3rem;
+ width: 121.8rem;
+ height: 32.3rem;
+ flex-wrap: wrap;
+ justify-content: center;
+ margin-bottom: 8.5rem;
+`;
+
+const TeamNameMid = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Mid};
+`;
+
+const ButtonWrapper = styled.div`
+ display: flex;
+ justify-content: center;
+ gap: 1.3rem;
+`;
+
+export default function VoteDemo() {
+ const navigate = useNavigate();
+
return (
데모데이 투표
+
+
+ {DemoItems.map((item) => (
+
+ {item.name}
+
+ ))}
+
+
+
+ navigate("/result/demo")} />
+
+
);
}
diff --git a/vote/src/pages/Vote/VoteFront.tsx b/vote/src/pages/Vote/VoteFront.tsx
index aea8a03..48bf248 100644
--- a/vote/src/pages/Vote/VoteFront.tsx
+++ b/vote/src/pages/Vote/VoteFront.tsx
@@ -1,6 +1,22 @@
import VoteHeader from "@components/common/VoteHeader";
+import VoteWrapper from "@components/common/VoteWrapper";
+import VoteBtn from "@components/common/VoteBtn";
+import { useNavigate } from "react-router-dom";
import styled from "styled-components";
+const FrontItems = [
+ { key: 1, name: "김다희", team: "Buldog" },
+ { key: 2, name: "김동혁", team: "BeatBuddy" },
+ { key: 3, name: "김민영", team: "CoupleLog" },
+ { key: 4, name: "김수현", team: "BeatBuddy" },
+ { key: 5, name: "김승완", team: "TIG" },
+ { key: 6, name: "송은수", team: "TIG" },
+ { key: 7, name: "안혜연", team: "CoupleLog" },
+ { key: 8, name: "이나현", team: "azito" },
+ { key: 9, name: "이지인", team: "Buldog" },
+ { key: 10, name: "조유담", team: "azito" },
+];
+
const Section = styled.section`
display: flex;
flex-direction: column;
@@ -15,11 +31,57 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
+const Wrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const VoteItemWrappers = styled.div`
+ display: flex;
+ gap: 3.2rem 5.4rem;
+ width: 103.6rem;
+ height: 42.6rem;
+ flex-wrap: wrap;
+ justify-content: center;
+ margin-bottom: 8.5rem;
+`;
+
+const TeamNameMid = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Mid};
+`;
+
+const TeamNameSmall = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Small};
+`;
+
+const ButtonWrapper = styled.div`
+ display: flex;
+ justify-content: center;
+ gap: 1.3rem;
+`;
+
export default function VoteFront() {
+ const navigate = useNavigate();
+
return (
FE 파트장 투표
+
+
+ {FrontItems.map((item) => (
+
+ {item.team}
+ {item.name}
+
+ ))}
+
+
+
+ navigate("/result/front")} />
+
+
);
}
diff --git a/vote/src/pages/Vote/VoteMain.tsx b/vote/src/pages/Vote/VoteMain.tsx
index f4cb53a..6ec6972 100644
--- a/vote/src/pages/Vote/VoteMain.tsx
+++ b/vote/src/pages/Vote/VoteMain.tsx
@@ -33,12 +33,18 @@ export default function VoteMain() {
파트장 / 데모데이 투표
- navigate("/vote/select/part")}>
+ navigate("/vote/select/part")}
+ width="39.4rem"
+ height="40.6rem">
파트장 투표
바로가기
- navigate("/vote/select/demo")}>
+ navigate("/vote/select/demo")}
+ width="39.4rem"
+ height="40.6rem">
데모데이 투표
바로가기
diff --git a/vote/src/router.tsx b/vote/src/router.tsx
index 0999803..9b78f3c 100644
--- a/vote/src/router.tsx
+++ b/vote/src/router.tsx
@@ -10,6 +10,7 @@ import SelectDemo from "@pages/Vote/SelectDemo";
import VoteFront from "@pages/Vote/VoteFront";
import VoteBack from "@pages/Vote/VoteBack";
import VoteDemo from "@pages/Vote/VoteDemo";
+import ResultLayout from "@components/layout/VoteLayout";
import ResultFront from "@pages/Result/ResultFront";
import ResultBack from "@pages/Result/ResultBack";
import ResultDemo from "@pages/Result/ResultDemo";
@@ -33,9 +34,15 @@ export const Router = createBrowserRouter([
{ path: "/vote/front", element: },
{ path: "/vote/back", element: },
{ path: "/vote/demo", element: },
- { path: "/vote/result/front", element: },
- { path: "/vote/result/back", element: },
- { path: "/vote/result/demo", element: },
+ ],
+ },
+ {
+ path: "/result",
+ element: ,
+ children: [
+ { path: "/result/front", element: },
+ { path: "/result/back", element: },
+ { path: "/result/demo", element: },
],
},
],
diff --git a/vote/src/styles/BtnStyle.ts b/vote/src/styles/BtnStyle.ts
index 8a805ca..30a051d 100644
--- a/vote/src/styles/BtnStyle.ts
+++ b/vote/src/styles/BtnStyle.ts
@@ -21,10 +21,9 @@ export const BtnSmall = styled.button`
/*투표 페이지 바로가기 버튼 스타일*/
export const BtnBig = styled.button`
display: flex;
+ flex-direction: column;
align-items: center;
justify-content: center;
- width: 39.4rem;
- height: 40.6rem;
border-radius: 2rem;
border: 3px solid ${({ theme }) => theme.colors.main_blue};
@@ -32,8 +31,6 @@ export const BtnBig = styled.button`
background-color: ${({ theme }) => theme.colors.white};
${({ theme }) => theme.fonts.BigBtnText};
- cursor: pointer;
-
/* 마우스 오버 시 백그라운드 색상 및 텍스트 색상 변경 */
&:hover {
background-color: ${({ theme }) => theme.colors.main_blue};
diff --git a/vote/src/styles/theme.ts b/vote/src/styles/theme.ts
index 8f936e4..9eab4a0 100644
--- a/vote/src/styles/theme.ts
+++ b/vote/src/styles/theme.ts
@@ -52,7 +52,7 @@ const fonts = {
font-size: 4rem;
font-style: normal;
font-weight: 600;
- line-height: 8rem; /* 200% */
+ line-height: 6rem; /* 200% */
`,
TeamName_Small: css`
From 602e0e796830bfdc2017a44bce86ac373fbf2455 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 4 Jun 2024 03:44:23 +0900
Subject: [PATCH 21/72] =?UTF-8?q?feat:=20=ED=88=AC=ED=91=9C=20=EC=84=A0?=
=?UTF-8?q?=ED=83=9D=ED=95=9C=20=ED=95=AD=EB=AA=A9=20=EC=BD=98=EC=86=94?=
=?UTF-8?q?=EC=B0=BD=20=EC=B6=9C=EB=A0=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/ResultWrapper.tsx | 21 ----------
vote/src/components/common/VoteWrapper.tsx | 29 +++++++++++---
vote/src/pages/Vote/VoteBack.tsx | 42 ++++++++++++++------
vote/src/pages/Vote/VoteDemo.tsx | 24 ++++++++++-
vote/src/pages/Vote/VoteFront.tsx | 22 +++++++++-
5 files changed, 96 insertions(+), 42 deletions(-)
delete mode 100644 vote/src/components/common/ResultWrapper.tsx
diff --git a/vote/src/components/common/ResultWrapper.tsx b/vote/src/components/common/ResultWrapper.tsx
deleted file mode 100644
index 5cb78b2..0000000
--- a/vote/src/components/common/ResultWrapper.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import styled from "styled-components";
-import { BtnBig } from "@styles/BtnStyle";
-
-interface VoteWrapperProps {
- onClick?: () => void;
- children: React.ReactNode;
-}
-
-const Button = styled(BtnBig)``;
-
-const ButtonText = styled.p``;
-
-export default function VoteWrapper(props: VoteWrapperProps) {
- const { onClick, children } = props;
-
- return (
-
- {children}
-
- );
-}
diff --git a/vote/src/components/common/VoteWrapper.tsx b/vote/src/components/common/VoteWrapper.tsx
index 1abe1df..aa3f061 100644
--- a/vote/src/components/common/VoteWrapper.tsx
+++ b/vote/src/components/common/VoteWrapper.tsx
@@ -6,24 +6,43 @@ interface VoteWrapperProps {
children: React.ReactNode;
width?: string;
height?: string;
+ $isSelected?: boolean;
}
-const Button = styled(BtnBig)<{ width?: string; height?: string }>`
+const VoteButton = styled(BtnBig)<{
+ width?: string;
+ height?: string;
+ $isSelected?: boolean;
+}>`
width: ${({ width }) => width || "21.6rem"}; /* 파트장투표는 21.6 */
height: ${({ height }) => height || "11.7rem"};
+ background-color: ${({ $isSelected, theme }) =>
+ $isSelected ? theme.colors.main_blue : theme.colors.white};
+ ${({ $isSelected, theme }) =>
+ $isSelected &&
+ `
+ span {
+ color: ${theme.colors.white};
+ }
+ `}
+
&:hover {
span {
- color: ${({ theme }) => theme.colors.white}; /* 텍스트 색상 변경 */
+ color: ${({ theme }) => theme.colors.white};
}
}
`;
export default function VoteWrapper(props: VoteWrapperProps) {
- const { onClick, children, width, height } = props;
+ const { onClick, children, width, height, $isSelected } = props;
return (
-
+
{children}
-
+
);
}
diff --git a/vote/src/pages/Vote/VoteBack.tsx b/vote/src/pages/Vote/VoteBack.tsx
index f516ffd..743c69c 100644
--- a/vote/src/pages/Vote/VoteBack.tsx
+++ b/vote/src/pages/Vote/VoteBack.tsx
@@ -1,3 +1,4 @@
+import { useState } from "react";
import VoteHeader from "@components/common/VoteHeader";
import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
@@ -5,16 +6,16 @@ import { useNavigate } from "react-router-dom";
import styled from "styled-components";
const BackItems = [
- { key: 1, name: "이진우", team: "Buldog" },
- { key: 2, name: "임형준", team: "BeatBuddy" },
- { key: 3, name: "박시영", team: "CoupleLog" },
- { key: 4, name: "박수빈", team: "BeatBuddy" },
- { key: 5, name: "장영환", team: "TIG" },
- { key: 6, name: "정기민", team: "TIG" },
- { key: 7, name: "김성현", team: "CoupleLog" },
- { key: 8, name: "이도현", team: "azito" },
- { key: 9, name: "전민", team: "Buldog" },
- { key: 10, name: "권찬", team: "azito" },
+ { key: 1, name: "이진우", team: "Buldog", selected: false },
+ { key: 2, name: "임형준", team: "BeatBuddy", selected: false },
+ { key: 3, name: "박시영", team: "CoupleLog", selected: false },
+ { key: 4, name: "박수빈", team: "BeatBuddy", selected: false },
+ { key: 5, name: "장영환", team: "TIG", selected: false },
+ { key: 6, name: "정기민", team: "TIG", selected: false },
+ { key: 7, name: "김성현", team: "CoupleLog", selected: false },
+ { key: 8, name: "이도현", team: "azito", selected: false },
+ { key: 9, name: "전민", team: "Buldog", selected: false },
+ { key: 10, name: "권찬", team: "azito", selected: false },
];
const Section = styled.section`
@@ -63,6 +64,20 @@ const ButtonWrapper = styled.div`
export default function VoteBack() {
const navigate = useNavigate();
+ const [selectedBack, setSelectedBack] = useState(null);
+
+ const handleSelected = (itemKey: any) => {
+ if (selectedBack === itemKey) {
+ setSelectedBack(null);
+ } else {
+ setSelectedBack(itemKey);
+ }
+ };
+
+ const handleSubmit = () => {
+ console.log("선택된 항목:", selectedBack);
+ /* API 연결 */
+ };
return (
@@ -71,14 +86,17 @@ export default function VoteBack() {
{BackItems.map((item) => (
-
+ handleSelected(item.key)}
+ $isSelected={selectedBack === item.key}>
{item.team}
{item.name}
))}
-
+
navigate("/result/back")} />
diff --git a/vote/src/pages/Vote/VoteDemo.tsx b/vote/src/pages/Vote/VoteDemo.tsx
index 06e4cd2..9af2199 100644
--- a/vote/src/pages/Vote/VoteDemo.tsx
+++ b/vote/src/pages/Vote/VoteDemo.tsx
@@ -1,3 +1,4 @@
+import { useState } from "react";
import VoteHeader from "@components/common/VoteHeader";
import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
@@ -54,6 +55,20 @@ const ButtonWrapper = styled.div`
export default function VoteDemo() {
const navigate = useNavigate();
+ const [selectedTeam, setSelectedTeam] = useState(null);
+
+ const handleSelected = (itemKey: any) => {
+ if (selectedTeam === itemKey) {
+ setSelectedTeam(null);
+ } else {
+ setSelectedTeam(itemKey);
+ }
+ };
+
+ const handleSubmit = () => {
+ console.log("선택된 항목:", selectedTeam);
+ /* API 연결 */
+ };
return (
@@ -62,13 +77,18 @@ export default function VoteDemo() {
{DemoItems.map((item) => (
-
+ handleSelected(item.key)}
+ $isSelected={selectedTeam === item.key}>
{item.name}
))}
-
+
navigate("/result/demo")} />
diff --git a/vote/src/pages/Vote/VoteFront.tsx b/vote/src/pages/Vote/VoteFront.tsx
index 48bf248..65f17dc 100644
--- a/vote/src/pages/Vote/VoteFront.tsx
+++ b/vote/src/pages/Vote/VoteFront.tsx
@@ -1,3 +1,4 @@
+import { useState } from "react";
import VoteHeader from "@components/common/VoteHeader";
import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
@@ -63,6 +64,20 @@ const ButtonWrapper = styled.div`
export default function VoteFront() {
const navigate = useNavigate();
+ const [selectedFront, setSelectedFront] = useState(null);
+
+ const handleSelected = (itemKey: any) => {
+ if (selectedFront === itemKey) {
+ setSelectedFront(null);
+ } else {
+ setSelectedFront(itemKey);
+ }
+ };
+
+ const handleSubmit = () => {
+ console.log("선택된 항목:", selectedFront);
+ /* API 연결 */
+ };
return (
@@ -71,14 +86,17 @@ export default function VoteFront() {
{FrontItems.map((item) => (
-
+ handleSelected(item.key)}
+ $isSelected={selectedFront === item.key}>
{item.team}
{item.name}
))}
-
+
navigate("/result/front")} />
From 5e8f22a42729276b0c3fbc6f15c1066687aa40e4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Wed, 5 Jun 2024 02:17:03 +0900
Subject: [PATCH 22/72] =?UTF-8?q?design:=20=ED=88=AC=ED=91=9C=20=ED=8E=98?=
=?UTF-8?q?=EC=9D=B4=EC=A7=80,=20=EA=B2=B0=EA=B3=BC=20=ED=8E=98=EC=9D=B4?=
=?UTF-8?q?=EC=A7=80=20=EB=B0=98=EC=9D=91=ED=98=95=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/VoteBtn.tsx | 8 +-
vote/src/components/common/VoteWrapper.tsx | 36 ++++++--
vote/src/pages/Result/ResultBack.tsx | 97 +++++++++++++++++++++-
vote/src/pages/Result/ResultFront.tsx | 97 +++++++++++++++++++++-
vote/src/pages/Vote/SelectDemo.tsx | 4 +-
vote/src/pages/Vote/SelectPart.tsx | 70 +++++++++-------
vote/src/pages/Vote/VoteBack.tsx | 50 ++++++-----
vote/src/pages/Vote/VoteDemo.tsx | 26 +++---
vote/src/pages/Vote/VoteFront.tsx | 30 ++++---
vote/src/pages/Vote/VoteMain.tsx | 52 +++++++-----
vote/src/styles/BtnStyle.ts | 5 +-
vote/src/styles/theme.ts | 10 +++
12 files changed, 360 insertions(+), 125 deletions(-)
diff --git a/vote/src/components/common/VoteBtn.tsx b/vote/src/components/common/VoteBtn.tsx
index f46da29..3c8591e 100644
--- a/vote/src/components/common/VoteBtn.tsx
+++ b/vote/src/components/common/VoteBtn.tsx
@@ -2,11 +2,15 @@ import styled from "styled-components";
import { BtnMid } from "@styles/BtnStyle";
interface VoteBtnProps {
- text: string;
onClick?: () => void;
+ text: string;
}
-const Button = styled(BtnMid)<{ $seeResult: boolean }>`
+const Button = styled(BtnMid)<{
+ width?: string;
+ height?: string;
+ $seeResult: boolean;
+}>`
background-color: ${({ theme, $seeResult }) =>
$seeResult ? theme.colors.light_blue : theme.colors.main_blue};
color: ${({ theme }) => theme.colors.white};
diff --git a/vote/src/components/common/VoteWrapper.tsx b/vote/src/components/common/VoteWrapper.tsx
index aa3f061..6856889 100644
--- a/vote/src/components/common/VoteWrapper.tsx
+++ b/vote/src/components/common/VoteWrapper.tsx
@@ -7,12 +7,16 @@ interface VoteWrapperProps {
width?: string;
height?: string;
$isSelected?: boolean;
+ $disableHover?: boolean;
+ $disableClick?: boolean;
}
const VoteButton = styled(BtnBig)<{
width?: string;
height?: string;
$isSelected?: boolean;
+ $disableHover?: boolean;
+ $disableClick?: boolean;
}>`
width: ${({ width }) => width || "21.6rem"}; /* 파트장투표는 21.6 */
height: ${({ height }) => height || "11.7rem"};
@@ -26,22 +30,42 @@ const VoteButton = styled(BtnBig)<{
}
`}
- &:hover {
- span {
- color: ${({ theme }) => theme.colors.white};
+ ${({ $disableHover, theme }) =>
+ !$disableHover &&
+ `
+ &:hover {
+ span {
+ color: ${theme.colors.white};
+ }
}
- }
+ `}
+
+ ${({ $disableClick }) =>
+ $disableClick &&
+ `
+ pointer-events: none;
+ `}
`;
export default function VoteWrapper(props: VoteWrapperProps) {
- const { onClick, children, width, height, $isSelected } = props;
+ const {
+ onClick,
+ children,
+ width,
+ height,
+ $isSelected,
+ $disableHover,
+ $disableClick,
+ } = props;
return (
+ $isSelected={$isSelected}
+ $disableHover={$disableHover}
+ $disableClick={$disableClick}>
{children}
);
diff --git a/vote/src/pages/Result/ResultBack.tsx b/vote/src/pages/Result/ResultBack.tsx
index dd750d1..ff48d88 100644
--- a/vote/src/pages/Result/ResultBack.tsx
+++ b/vote/src/pages/Result/ResultBack.tsx
@@ -1,6 +1,22 @@
import VoteHeader from "@components/common/VoteHeader";
+import VoteWrapper from "@components/common/VoteWrapper";
+import VoteBtn from "@components/common/VoteBtn";
+import { useNavigate } from "react-router-dom";
import styled from "styled-components";
+const BackItems = [
+ { key: 1, name: "이진우", team: "Buldog", count: 1 },
+ { key: 2, name: "임형준", team: "BeatBuddy", count: 1 },
+ { key: 3, name: "박시영", team: "CoupleLog", count: 1 },
+ { key: 4, name: "박수빈", team: "BeatBuddy", count: 1 },
+ { key: 5, name: "장영환", team: "TIG", count: 1 },
+ { key: 6, name: "정기민", team: "TIG", count: 1 },
+ { key: 7, name: "김성현", team: "CoupleLog", count: 1 },
+ { key: 8, name: "이도현", team: "azito", count: 1 },
+ { key: 9, name: "전민", team: "Buldog", count: 1 },
+ { key: 10, name: "권찬", team: "azito", count: 1 },
+];
+
const Section = styled.section`
display: flex;
flex-direction: column;
@@ -15,11 +31,88 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-export default function VoteFront() {
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const VoteWrappers = styled.section`
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+ height: 50.1rem;
+ flex-wrap: wrap;
+ gap: 1.9rem 4.8rem;
+ margin-bottom: 7.4rem;
+`;
+
+const TextWrapper = styled.div`
+ display: flex;
+ width: 42.7rem;
+ justify-content: space-between;
+`;
+
+const LeftTextWrapper = styled.div`
+ display: flex;
+ gap: 2.7rem;
+ align-items: center;
+`;
+
+const TeamNameMidText = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Mid};
+`;
+
+const TeamNameSmallText = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Small};
+`;
+
+const CountText = styled.span`
+ ${({ theme }) => theme.fonts.Count};
+`;
+
+const RankBox = styled.div`
+ ${({ theme }) => theme.fonts.Rank};
+ display: inline-flex;
+ height: 5.8rem;
+ padding: 0rem 2rem;
+ align-items: center;
+ border-radius: 1rem;
+ border: 0.1rem solid ${({ theme }) => theme.colors.main_blue};
+ background: ${({ theme }) => theme.colors.main_blue};
+`;
+
+export default function ResultFront() {
+ const navigate = useNavigate();
+ /* const Data = API 연결 . . 지금은 그냥 예시 */
+
return (
- BE 파트장 투표 결과
+
+ BE 파트장 투표 결과
+
+ {BackItems.map((item) => (
+
+
+
+ 2
+ {item.name}
+ {item.team}
+
+ {item.count}
+
+
+ ))}
+
+ navigate(-1)} />
+
);
}
diff --git a/vote/src/pages/Result/ResultFront.tsx b/vote/src/pages/Result/ResultFront.tsx
index 4f83d6a..b5021f3 100644
--- a/vote/src/pages/Result/ResultFront.tsx
+++ b/vote/src/pages/Result/ResultFront.tsx
@@ -1,6 +1,22 @@
import VoteHeader from "@components/common/VoteHeader";
+import VoteWrapper from "@components/common/VoteWrapper";
+import VoteBtn from "@components/common/VoteBtn";
+import { useNavigate } from "react-router-dom";
import styled from "styled-components";
+const FrontItems = [
+ { key: 1, name: "김다희", team: "Buldog", count: 1 },
+ { key: 2, name: "김동혁", team: "BeatBuddy", count: 1 },
+ { key: 3, name: "김민영", team: "CoupleLog", count: 1 },
+ { key: 4, name: "김수현", team: "BeatBuddy", count: 1 },
+ { key: 5, name: "김승완", team: "TIG", count: 1 },
+ { key: 6, name: "송은수", team: "TIG", count: 1 },
+ { key: 7, name: "안혜연", team: "CoupleLog", count: 1 },
+ { key: 8, name: "이나현", team: "azito", count: 1 },
+ { key: 9, name: "이지인", team: "Buldog", count: 1 },
+ { key: 10, name: "조유담", team: "azito", count: 1 },
+];
+
const Section = styled.section`
display: flex;
flex-direction: column;
@@ -15,11 +31,88 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-export default function VoteFront() {
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const VoteWrappers = styled.section`
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+ height: 50.1rem;
+ flex-wrap: wrap;
+ gap: 1.9rem 4.8rem;
+ margin-bottom: 7.4rem;
+`;
+
+const TextWrapper = styled.div`
+ display: flex;
+ width: 42.7rem;
+ justify-content: space-between;
+`;
+
+const LeftTextWrapper = styled.div`
+ display: flex;
+ gap: 2.7rem;
+ align-items: center;
+`;
+
+const TeamNameMidText = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Mid};
+`;
+
+const TeamNameSmallText = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Small};
+`;
+
+const CountText = styled.span`
+ ${({ theme }) => theme.fonts.Count};
+`;
+
+const RankBox = styled.div`
+ ${({ theme }) => theme.fonts.Rank};
+ display: inline-flex;
+ height: 5.8rem;
+ padding: 0rem 2rem;
+ align-items: center;
+ border-radius: 1rem;
+ border: 0.1rem solid ${({ theme }) => theme.colors.main_blue};
+ background: ${({ theme }) => theme.colors.main_blue};
+`;
+
+export default function ResultFront() {
+ const navigate = useNavigate();
+ /* const Data = API 연결 . . 지금은 그냥 예시 */
+
return (
- FE 파트장 투표 결과
+
+ FE 파트장 투표 결과
+
+ {FrontItems.map((item) => (
+
+
+
+ 2
+ {item.name}
+ {item.team}
+
+ {item.count}
+
+
+ ))}
+
+ navigate(-1)} />
+
);
}
diff --git a/vote/src/pages/Vote/SelectDemo.tsx b/vote/src/pages/Vote/SelectDemo.tsx
index 8026aeb..f529275 100644
--- a/vote/src/pages/Vote/SelectDemo.tsx
+++ b/vote/src/pages/Vote/SelectDemo.tsx
@@ -17,11 +17,11 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const ButtonWrapper = styled.div`
+const ButtonWrapper = styled.section`
display: flex;
flex-direction: column;
gap: 4.2rem;
- justify-content: center;
+ justify-content: space-between;
align-items: center;
`;
diff --git a/vote/src/pages/Vote/SelectPart.tsx b/vote/src/pages/Vote/SelectPart.tsx
index 4070267..5d23fd5 100644
--- a/vote/src/pages/Vote/SelectPart.tsx
+++ b/vote/src/pages/Vote/SelectPart.tsx
@@ -18,19 +18,22 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const VoteWrappers = styled.div`
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const VoteWrappers = styled.section`
display: flex;
gap: 10rem;
- justify-content: center;
- align-items: flex-start;
- flex-shrink: 0;
+ justify-content: space-between;
`;
-const PartWrapper = styled.div`
+const PartWrapper = styled.section`
display: flex;
flex-direction: column;
gap: 3.2rem;
- justify-content: center;
align-items: center;
`;
export default function VotePart() {
@@ -39,31 +42,36 @@ export default function VotePart() {
return (
- 파트장 투표
-
-
- navigate("/vote/front")}
- width="39.4rem"
- height="40.6rem">
- FRONT-END
-
- 파트장 투표
-
- navigate("/result/front")} />
-
-
- navigate("/vote/back")}
- width="39.4rem"
- height="40.6rem">
- BACK-END
-
- 파트장 투표
-
- navigate("/result/back")} />
-
-
+
+ 파트장 투표
+
+
+ navigate("/vote/front")}
+ width="39.4rem"
+ height="40.6rem">
+ FRONT-END
+
+ 파트장 투표
+
+ navigate("/result/front")}
+ />
+
+
+ navigate("/vote/back")}
+ width="39.4rem"
+ height="40.6rem">
+ BACK-END
+
+ 파트장 투표
+
+ navigate("/result/back")} />
+
+
+
);
}
diff --git a/vote/src/pages/Vote/VoteBack.tsx b/vote/src/pages/Vote/VoteBack.tsx
index 743c69c..cd7305c 100644
--- a/vote/src/pages/Vote/VoteBack.tsx
+++ b/vote/src/pages/Vote/VoteBack.tsx
@@ -6,16 +6,16 @@ import { useNavigate } from "react-router-dom";
import styled from "styled-components";
const BackItems = [
- { key: 1, name: "이진우", team: "Buldog", selected: false },
- { key: 2, name: "임형준", team: "BeatBuddy", selected: false },
- { key: 3, name: "박시영", team: "CoupleLog", selected: false },
- { key: 4, name: "박수빈", team: "BeatBuddy", selected: false },
- { key: 5, name: "장영환", team: "TIG", selected: false },
- { key: 6, name: "정기민", team: "TIG", selected: false },
- { key: 7, name: "김성현", team: "CoupleLog", selected: false },
- { key: 8, name: "이도현", team: "azito", selected: false },
- { key: 9, name: "전민", team: "Buldog", selected: false },
- { key: 10, name: "권찬", team: "azito", selected: false },
+ { key: 1, name: "이진우", team: "Buldog" },
+ { key: 2, name: "임형준", team: "BeatBuddy" },
+ { key: 3, name: "박시영", team: "CoupleLog" },
+ { key: 4, name: "박수빈", team: "BeatBuddy" },
+ { key: 5, name: "장영환", team: "TIG" },
+ { key: 6, name: "정기민", team: "TIG" },
+ { key: 7, name: "김성현", team: "CoupleLog" },
+ { key: 8, name: "이도현", team: "azito" },
+ { key: 9, name: "전민", team: "Buldog" },
+ { key: 10, name: "권찬", team: "azito" },
];
const Section = styled.section`
@@ -32,33 +32,31 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const Wrapper = styled.div`
+const CenterWrapper = styled.section`
display: flex;
flex-direction: column;
align-items: center;
`;
-const VoteItemWrappers = styled.div`
+const VoteWrappers = styled.section`
display: flex;
+ justify-content: center;
gap: 3.2rem 5.4rem;
- width: 103.6rem;
- height: 42.6rem;
flex-wrap: wrap;
- justify-content: center;
margin-bottom: 8.5rem;
`;
-const TeamNameMid = styled.span`
+const TeamNameMidText = styled.span`
${({ theme }) => theme.fonts.TeamName_Mid};
`;
-const TeamNameSmall = styled.span`
+const TeamNameSmallText = styled.span`
${({ theme }) => theme.fonts.TeamName_Small};
`;
-const ButtonWrapper = styled.div`
+const ButtonWrapper = styled.section`
display: flex;
- justify-content: center;
+ justify-content: space-between;
gap: 1.3rem;
`;
@@ -82,24 +80,24 @@ export default function VoteBack() {
return (
- BE 파트장 투표
-
-
+
+ BE 파트장 투표
+
{BackItems.map((item) => (
handleSelected(item.key)}
$isSelected={selectedBack === item.key}>
- {item.team}
- {item.name}
+ {item.team}
+ {item.name}
))}
-
+
navigate("/result/back")} />
-
+
);
}
diff --git a/vote/src/pages/Vote/VoteDemo.tsx b/vote/src/pages/Vote/VoteDemo.tsx
index 9af2199..07075de 100644
--- a/vote/src/pages/Vote/VoteDemo.tsx
+++ b/vote/src/pages/Vote/VoteDemo.tsx
@@ -27,29 +27,27 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const Wrapper = styled.div`
+const CenterWrapper = styled.section`
display: flex;
flex-direction: column;
align-items: center;
`;
-const VoteItemWrappers = styled.div`
+const VoteWrappers = styled.section`
display: flex;
+ justify-content: center;
gap: 3.3rem;
- width: 121.8rem;
- height: 32.3rem;
flex-wrap: wrap;
- justify-content: center;
margin-bottom: 8.5rem;
`;
-const TeamNameMid = styled.span`
+const TeamNameMidText = styled.span`
${({ theme }) => theme.fonts.TeamName_Mid};
`;
-const ButtonWrapper = styled.div`
+const ButtonWrapper = styled.section`
display: flex;
- justify-content: center;
+ justify-content: space-between;
gap: 1.3rem;
`;
@@ -73,9 +71,9 @@ export default function VoteDemo() {
return (
- 데모데이 투표
-
-
+
+ 데모데이 투표
+
{DemoItems.map((item) => (
handleSelected(item.key)}
$isSelected={selectedTeam === item.key}>
- {item.name}
+ {item.name}
))}
-
+
navigate("/result/demo")} />
-
+
);
}
diff --git a/vote/src/pages/Vote/VoteFront.tsx b/vote/src/pages/Vote/VoteFront.tsx
index 65f17dc..3fc2317 100644
--- a/vote/src/pages/Vote/VoteFront.tsx
+++ b/vote/src/pages/Vote/VoteFront.tsx
@@ -32,33 +32,31 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const Wrapper = styled.div`
+const CenterWrapper = styled.section`
display: flex;
flex-direction: column;
align-items: center;
`;
-const VoteItemWrappers = styled.div`
+const VoteWrappers = styled.section`
display: flex;
+ justify-content: center;
gap: 3.2rem 5.4rem;
- width: 103.6rem;
- height: 42.6rem;
flex-wrap: wrap;
- justify-content: center;
margin-bottom: 8.5rem;
`;
-const TeamNameMid = styled.span`
+const TeamNameMidText = styled.span`
${({ theme }) => theme.fonts.TeamName_Mid};
`;
-const TeamNameSmall = styled.span`
+const TeamNameSmallText = styled.span`
${({ theme }) => theme.fonts.TeamName_Small};
`;
-const ButtonWrapper = styled.div`
+const ButtonWrapper = styled.section`
display: flex;
- justify-content: center;
+ justify-content: space-between;
gap: 1.3rem;
`;
@@ -82,24 +80,24 @@ export default function VoteFront() {
return (
- FE 파트장 투표
-
-
+
+ FE 파트장 투표
+
{FrontItems.map((item) => (
handleSelected(item.key)}
$isSelected={selectedFront === item.key}>
- {item.team}
- {item.name}
+ {item.team}
+ {item.name}
))}
-
+
navigate("/result/front")} />
-
+
);
}
diff --git a/vote/src/pages/Vote/VoteMain.tsx b/vote/src/pages/Vote/VoteMain.tsx
index 6ec6972..f02ff9c 100644
--- a/vote/src/pages/Vote/VoteMain.tsx
+++ b/vote/src/pages/Vote/VoteMain.tsx
@@ -17,10 +17,18 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const VoteWrappers = styled.div`
+const CenterWrapper = styled.section`
display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const VoteWrappers = styled.section`
+ display: flex;
+ width: 94.8rem;
+ height: 45.6rem;
gap: 10rem;
- justify-content: center;
+ justify-content: space-between;
align-items: flex-start;
flex-shrink: 0;
`;
@@ -31,25 +39,27 @@ export default function VoteMain() {
return (
- 파트장 / 데모데이 투표
-
- navigate("/vote/select/part")}
- width="39.4rem"
- height="40.6rem">
- 파트장 투표
-
- 바로가기
-
- navigate("/vote/select/demo")}
- width="39.4rem"
- height="40.6rem">
- 데모데이 투표
-
- 바로가기
-
-
+
+ 파트장 / 데모데이 투표
+
+ navigate("/vote/select/part")}
+ width="39.4rem"
+ height="40.6rem">
+ 파트장 투표
+
+ 바로가기
+
+ navigate("/vote/select/demo")}
+ width="39.4rem"
+ height="40.6rem">
+ 데모데이 투표
+
+ 바로가기
+
+
+
);
}
diff --git a/vote/src/styles/BtnStyle.ts b/vote/src/styles/BtnStyle.ts
index 30a051d..d3db1a5 100644
--- a/vote/src/styles/BtnStyle.ts
+++ b/vote/src/styles/BtnStyle.ts
@@ -22,8 +22,8 @@ export const BtnSmall = styled.button`
export const BtnBig = styled.button`
display: flex;
flex-direction: column;
- align-items: center;
justify-content: center;
+ align-items: center;
border-radius: 2rem;
border: 3px solid ${({ theme }) => theme.colors.main_blue};
@@ -41,8 +41,7 @@ export const BtnBig = styled.button`
/*투표 페이지 하단 버튼 스타일*/
export const BtnMid = styled.button`
align-items: center;
- width: 29.1rem;
- height: 8.2rem;
+ padding: 2.1rem 8.8rem;
border-radius: 2rem;
border: none;
diff --git a/vote/src/styles/theme.ts b/vote/src/styles/theme.ts
index 9eab4a0..7496eea 100644
--- a/vote/src/styles/theme.ts
+++ b/vote/src/styles/theme.ts
@@ -93,6 +93,16 @@ const fonts = {
line-height: normal;
`,
+ Rank: css`
+ color: #fff;
+
+ font-family: Inter;
+ font-size: 3rem;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 8rem; /* 266.667% */
+ `,
+
Count: css`
color: #384084;
From 9e7e17084274b10557e7b0ef7693c9474f6a7531 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Wed, 5 Jun 2024 02:33:11 +0900
Subject: [PATCH 23/72] =?UTF-8?q?feat:=20=EB=8D=B0=EB=AA=A8=EB=8D=B0?=
=?UTF-8?q?=EC=9D=B4=20=EA=B2=B0=EA=B3=BC=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?=
=?UTF-8?q?=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/Result/ResultBack.tsx | 15 ++---
vote/src/pages/Result/ResultDemo.tsx | 89 ++++++++++++++++++++++++++-
vote/src/pages/Result/ResultFront.tsx | 13 ++--
vote/src/pages/Vote/SelectPart.tsx | 12 ++--
vote/src/pages/Vote/VoteBack.tsx | 12 ++--
vote/src/pages/Vote/VoteDemo.tsx | 12 ++--
vote/src/pages/Vote/VoteFront.tsx | 12 ++--
vote/src/pages/Vote/VoteMain.tsx | 12 ++--
8 files changed, 132 insertions(+), 45 deletions(-)
diff --git a/vote/src/pages/Result/ResultBack.tsx b/vote/src/pages/Result/ResultBack.tsx
index ff48d88..b2c0dc2 100644
--- a/vote/src/pages/Result/ResultBack.tsx
+++ b/vote/src/pages/Result/ResultBack.tsx
@@ -22,6 +22,12 @@ const Section = styled.section`
flex-direction: column;
`;
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
const HeaderText = styled.h1`
display: flex;
justify-content: center;
@@ -31,12 +37,6 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
const VoteWrappers = styled.section`
display: flex;
flex-direction: column;
@@ -77,13 +77,14 @@ const RankBox = styled.div`
display: inline-flex;
height: 5.8rem;
padding: 0rem 2rem;
+ justify-content: center;
align-items: center;
border-radius: 1rem;
border: 0.1rem solid ${({ theme }) => theme.colors.main_blue};
background: ${({ theme }) => theme.colors.main_blue};
`;
-export default function ResultFront() {
+export default function ResultBack() {
const navigate = useNavigate();
/* const Data = API 연결 . . 지금은 그냥 예시 */
diff --git a/vote/src/pages/Result/ResultDemo.tsx b/vote/src/pages/Result/ResultDemo.tsx
index 0540a35..6c679aa 100644
--- a/vote/src/pages/Result/ResultDemo.tsx
+++ b/vote/src/pages/Result/ResultDemo.tsx
@@ -1,11 +1,28 @@
import VoteHeader from "@components/common/VoteHeader";
+import VoteWrapper from "@components/common/VoteWrapper";
+import VoteBtn from "@components/common/VoteBtn";
+import { useNavigate } from "react-router-dom";
import styled from "styled-components";
+const DemoItems = [
+ { key: 1, name: "azito", count: 1 },
+ { key: 2, name: "BeatBuddy", count: 1 },
+ { key: 3, name: "Buldog", count: 1 },
+ { key: 4, name: "CoupleLog", count: 1 },
+ { key: 5, name: "TIG", count: 1 },
+];
+
const Section = styled.section`
display: flex;
flex-direction: column;
`;
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
const HeaderText = styled.h1`
display: flex;
justify-content: center;
@@ -15,11 +32,79 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-export default function VoteFront() {
+const VoteWrappers = styled.section`
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+ height: 50.1rem;
+ flex-wrap: wrap;
+ gap: 1.9rem 4.8rem;
+ margin-bottom: 7.4rem;
+`;
+
+const TextWrapper = styled.div`
+ display: flex;
+ width: 65.7rem;
+ justify-content: space-between;
+`;
+
+const LeftTextWrapper = styled.div`
+ display: flex;
+ gap: 5.73rem;
+ align-items: center;
+`;
+
+const TeamNameMidText = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Mid};
+`;
+
+const CountText = styled.span`
+ ${({ theme }) => theme.fonts.Count};
+`;
+
+const RankBox = styled.div`
+ ${({ theme }) => theme.fonts.Rank};
+ display: inline-flex;
+ width: 5.23rem;
+ height: 5.8rem;
+ padding: 0rem 2rem;
+ justify-content: center;
+ align-items: center;
+ border-radius: 1rem;
+ border: 0.1rem solid ${({ theme }) => theme.colors.main_blue};
+ background: ${({ theme }) => theme.colors.main_blue};
+`;
+
+export default function ResultDemo() {
+ const navigate = useNavigate();
+ /* const Data = API 연결 . . 지금은 그냥 예시 */
+
return (
- 데모데이 투표 결과
+
+ BE 파트장 투표 결과
+
+ {DemoItems.map((item) => (
+
+
+
+ 2
+ {item.name}
+
+ {item.count}
+
+
+ ))}
+
+ navigate(-1)} />
+
);
}
diff --git a/vote/src/pages/Result/ResultFront.tsx b/vote/src/pages/Result/ResultFront.tsx
index b5021f3..3ccaead 100644
--- a/vote/src/pages/Result/ResultFront.tsx
+++ b/vote/src/pages/Result/ResultFront.tsx
@@ -22,6 +22,12 @@ const Section = styled.section`
flex-direction: column;
`;
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
const HeaderText = styled.h1`
display: flex;
justify-content: center;
@@ -31,12 +37,6 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
const VoteWrappers = styled.section`
display: flex;
flex-direction: column;
@@ -77,6 +77,7 @@ const RankBox = styled.div`
display: inline-flex;
height: 5.8rem;
padding: 0rem 2rem;
+ justify-content: center;
align-items: center;
border-radius: 1rem;
border: 0.1rem solid ${({ theme }) => theme.colors.main_blue};
diff --git a/vote/src/pages/Vote/SelectPart.tsx b/vote/src/pages/Vote/SelectPart.tsx
index 5d23fd5..c17967a 100644
--- a/vote/src/pages/Vote/SelectPart.tsx
+++ b/vote/src/pages/Vote/SelectPart.tsx
@@ -9,6 +9,12 @@ const Section = styled.section`
flex-direction: column;
`;
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
const HeaderText = styled.h1`
display: flex;
justify-content: center;
@@ -18,12 +24,6 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
const VoteWrappers = styled.section`
display: flex;
gap: 10rem;
diff --git a/vote/src/pages/Vote/VoteBack.tsx b/vote/src/pages/Vote/VoteBack.tsx
index cd7305c..f947985 100644
--- a/vote/src/pages/Vote/VoteBack.tsx
+++ b/vote/src/pages/Vote/VoteBack.tsx
@@ -23,6 +23,12 @@ const Section = styled.section`
flex-direction: column;
`;
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
const HeaderText = styled.h1`
display: flex;
justify-content: center;
@@ -32,12 +38,6 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
const VoteWrappers = styled.section`
display: flex;
justify-content: center;
diff --git a/vote/src/pages/Vote/VoteDemo.tsx b/vote/src/pages/Vote/VoteDemo.tsx
index 07075de..6f726df 100644
--- a/vote/src/pages/Vote/VoteDemo.tsx
+++ b/vote/src/pages/Vote/VoteDemo.tsx
@@ -18,6 +18,12 @@ const Section = styled.section`
flex-direction: column;
`;
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
const HeaderText = styled.h1`
display: flex;
justify-content: center;
@@ -27,12 +33,6 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
const VoteWrappers = styled.section`
display: flex;
justify-content: center;
diff --git a/vote/src/pages/Vote/VoteFront.tsx b/vote/src/pages/Vote/VoteFront.tsx
index 3fc2317..d54e48d 100644
--- a/vote/src/pages/Vote/VoteFront.tsx
+++ b/vote/src/pages/Vote/VoteFront.tsx
@@ -23,6 +23,12 @@ const Section = styled.section`
flex-direction: column;
`;
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
const HeaderText = styled.h1`
display: flex;
justify-content: center;
@@ -32,12 +38,6 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
const VoteWrappers = styled.section`
display: flex;
justify-content: center;
diff --git a/vote/src/pages/Vote/VoteMain.tsx b/vote/src/pages/Vote/VoteMain.tsx
index f02ff9c..46aac0f 100644
--- a/vote/src/pages/Vote/VoteMain.tsx
+++ b/vote/src/pages/Vote/VoteMain.tsx
@@ -8,6 +8,12 @@ const Section = styled.section`
flex-direction: column;
`;
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
const HeaderText = styled.h1`
display: flex;
justify-content: center;
@@ -17,12 +23,6 @@ const HeaderText = styled.h1`
${({ theme }) => theme.fonts.Headline1};
`;
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
const VoteWrappers = styled.section`
display: flex;
width: 94.8rem;
From ec339ed56b361594bfa1064207d46e253d87151d Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 20 Jun 2024 17:34:18 +0900
Subject: [PATCH 24/72] =?UTF-8?q?design:=20theme=20=ED=8F=B0=ED=8A=B8=20?=
=?UTF-8?q?=EC=82=AC=EC=9D=B4=EC=A6=88=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/styles/theme.ts | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/vote/src/styles/theme.ts b/vote/src/styles/theme.ts
index 7496eea..42d3195 100644
--- a/vote/src/styles/theme.ts
+++ b/vote/src/styles/theme.ts
@@ -17,9 +17,19 @@ const fonts = {
line-height: normal;
`,
+ Headline2: css`
+ color: black;
+
+ font-family: Inter;
+ font-size: 3rem;
+ font-style: normal;
+ font-weight: 600;
+ line-height: normal;
+ `,
+
SignBtnText: css`
font-family: Inter;
- font-size: 2rem;
+ font-size: 1.25rem;
font-style: normal;
font-weight: 400;
line-height: normal;
From 7028a89db09f9d316db1bc69e3eac0c5109818b9 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 20 Jun 2024 17:34:31 +0900
Subject: [PATCH 25/72] =?UTF-8?q?design:=20=ED=9A=8C=EC=9B=90=EA=B0=80?=
=?UTF-8?q?=EC=9E=85=20=ED=8E=98=EC=9D=B4=EC=A7=80=20UI?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/SignUp.tsx | 154 +++++++++++++++++++++++++++++++++++++-
1 file changed, 152 insertions(+), 2 deletions(-)
diff --git a/vote/src/pages/SignUp.tsx b/vote/src/pages/SignUp.tsx
index 4015270..3fd10ae 100644
--- a/vote/src/pages/SignUp.tsx
+++ b/vote/src/pages/SignUp.tsx
@@ -1,3 +1,153 @@
-export default function Signup() {
- return 회원가입페이지입니다
;
+import styled from "styled-components";
+import { useState } from "react";
+import { BtnSign } from "@styles/BtnStyle";
+import InputContainer from "@components/common/InputContainer";
+
+const Wrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ gap: 2.4rem;
+ padding: 0 20.25rem;
+`;
+
+const Header = styled.h1`
+ ${({ theme }) => theme.fonts.Headline2};
+`;
+
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+
+ padding: 6rem 4rem 2rem;
+
+ border-radius: 1.25rem;
+ background-color: ${({ theme }) => theme.colors.light_blue};
+`;
+
+const FilledInput = styled.section`
+ display: flex;
+ flex-direction: column;
+ gap: 2.25rem;
+`;
+
+const VerifyBtn = styled(BtnSign)`
+ width: 100%;
+ height: 3.625rem;
+`;
+
+const Toggle = styled.section`
+ display: flex;
+ flex-direction: column;
+
+ gap: 1.5rem;
+ margin-top: 7.4rem;
+`;
+
+const Title = styled.p`
+ ${({ theme }) => theme.fonts.TeamName_Small};
+`;
+
+const ToggleContainer = styled.section`
+ display: flex;
+ justify-content: space-around;
+`;
+
+const Dropdown = styled.select`
+ width: 16.625rem;
+ height: 5rem;
+
+ padding: 0.5rem;
+ ${({ theme }) => theme.fonts.SignBtnText};
+ color: ${({ theme }) => theme.colors.white};
+ background-color: ${({ theme }) => theme.colors.main_blue};
+`;
+
+const BtnContainer = styled.section`
+ display: flex;
+ justify-content: center;
+
+ margin-top: 5rem;
+`;
+
+const SignUpBtn = styled(BtnSign)`
+ width: 12.625rem;
+ height: 3.625rem;
+`;
+
+const options = {
+ teams: ["Team A", "Team B", "Team C"],
+ parts: ["Part 1", "Part 2", "Part 3"],
+};
+
+export default function SignUp() {
+ const [name, setName] = useState("");
+ const [ID, setId] = useState("");
+ const [PW, setPw] = useState("");
+ const [pwCheck, setPwCheck] = useState("");
+ const [email, setEmail] = useState("");
+ const [selectedTeam, setSelectedTeam] = useState("");
+ const [selectedPart, setSelectedPart] = useState("");
+
+ return (
+
+
+
+
+ );
}
From d68d6df1a8dab6f718bfbc9f5fb858e2e75eb28e Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 20 Jun 2024 17:34:44 +0900
Subject: [PATCH 26/72] =?UTF-8?q?design:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?=
=?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20UI?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/SignIn.tsx | 64 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 63 insertions(+), 1 deletion(-)
diff --git a/vote/src/pages/SignIn.tsx b/vote/src/pages/SignIn.tsx
index a4251a7..c15d5c3 100644
--- a/vote/src/pages/SignIn.tsx
+++ b/vote/src/pages/SignIn.tsx
@@ -1,3 +1,65 @@
+import styled from "styled-components";
+import InputContainer from "@components/common/InputContainer";
+import { useState } from "react";
+import { BtnSign } from "@styles/BtnStyle";
+
+const Wrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+
+ gap: 2.4rem;
+ padding: 14.5rem 20.25rem;
+`;
+
+const Header = styled.h1`
+ ${({ theme }) => theme.fonts.Headline2};
+`;
+
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+
+ padding: 6rem 4rem 2rem;
+ gap: 7.4rem;
+
+ border-radius: 1.25rem;
+
+ background-color: ${({ theme }) => theme.colors.light_blue};
+`;
+
+const FilledInput = styled.section`
+ display: flex;
+ flex-direction: column;
+
+ gap: 2.25rem;
+`;
+
+const Container = styled.section`
+ display: flex;
+ justify-content: center;
+`;
+
+const SignInBtn = styled(BtnSign)`
+ width: 12.625rem;
+ height: 3.625rem;
+`;
+
export default function SignIn() {
- return 로그인 페이지입니다
;
+ const [ID, setId] = useState("");
+ const [PW, setPw] = useState("");
+
+ return (
+
+
+
+
+ );
}
From f86507045430a991025abdf3d836a8730b2ac5a0 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 20 Jun 2024 17:35:00 +0900
Subject: [PATCH 27/72] =?UTF-8?q?design:=20=EC=9D=B8=ED=92=8B=ED=95=84?=
=?UTF-8?q?=EB=93=9C=20=EC=B1=84=EC=9A=B0=EA=B8=B0=20UI?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/InputContainer.tsx | 58 +++++++++++++++++++
1 file changed, 58 insertions(+)
create mode 100644 vote/src/components/common/InputContainer.tsx
diff --git a/vote/src/components/common/InputContainer.tsx b/vote/src/components/common/InputContainer.tsx
new file mode 100644
index 0000000..d4acf4a
--- /dev/null
+++ b/vote/src/components/common/InputContainer.tsx
@@ -0,0 +1,58 @@
+import { ReactNode } from "react";
+import styled from "styled-components";
+
+interface InputContainerProps {
+ name?: string;
+ state?: string;
+ setState?: React.Dispatch>;
+ custom?: boolean;
+ children?: ReactNode;
+}
+
+const Container = styled.div`
+ display: grid;
+ grid-template-columns: auto 60%;
+ align-items: center;
+
+ & label {
+ ${({ theme }) => theme.fonts.TeamName_Small};
+ }
+
+ & input {
+ height: 2.5rem;
+ padding: 0.5rem;
+ font-size: 1.2rem;
+ border-radius: 0.5rem;
+ }
+
+ & > div {
+ display: grid;
+ grid-template-columns: 8fr 2fr;
+ gap: 1rem;
+ }
+`;
+
+export default function InputContainer({
+ custom = false, // provide default value
+ name,
+ state,
+ setState,
+ children,
+}: InputContainerProps) {
+ if (custom) {
+ return {children};
+ }
+
+ return (
+
+
+ setState?.(e.target.value)}
+ />
+
+ );
+}
From 79686ebefa9d4a3bd43afd567eae075e0597ca8f Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 20 Jun 2024 17:35:33 +0900
Subject: [PATCH 28/72] =?UTF-8?q?feat:=20=EB=B2=84=ED=8A=BC=20=ED=81=B4?=
=?UTF-8?q?=EB=A6=AD=EC=8B=9C=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=9D=B4?=
=?UTF-8?q?=EB=8F=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/SignBtn.tsx | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/vote/src/components/common/SignBtn.tsx b/vote/src/components/common/SignBtn.tsx
index caf6176..39f5cae 100644
--- a/vote/src/components/common/SignBtn.tsx
+++ b/vote/src/components/common/SignBtn.tsx
@@ -1,6 +1,6 @@
import styled from "styled-components";
import { BtnSmall } from "@styles/BtnStyle";
-
+import { useNavigate } from "react-router-dom";
interface SignBtnProps {
text: string;
}
@@ -15,9 +15,14 @@ const Button = styled(BtnSmall)<{ $isSignUp: boolean }>`
export default function SignBtn(props: SignBtnProps) {
const { text } = props;
const $isSignUp = text === "회원가입";
+ const navigate = useNavigate();
+
+ function movePages() {
+ $isSignUp ? navigate("/signup") : navigate("/signin");
+ }
return (
-
+
{text}
);
From 2b5e9b53b671af35ff773d635be95f5ea6bac650 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 24 Jun 2024 15:23:12 +0900
Subject: [PATCH 29/72] feat: postEmail api
---
vote/src/api/postEmail.ts | 11 +++++++++++
vote/src/hooks/usePostEmail.ts | 13 +++++++++++++
vote/src/types/postEmailTypes.ts | 3 +++
3 files changed, 27 insertions(+)
create mode 100644 vote/src/api/postEmail.ts
create mode 100644 vote/src/hooks/usePostEmail.ts
create mode 100644 vote/src/types/postEmailTypes.ts
diff --git a/vote/src/api/postEmail.ts b/vote/src/api/postEmail.ts
new file mode 100644
index 0000000..7980059
--- /dev/null
+++ b/vote/src/api/postEmail.ts
@@ -0,0 +1,11 @@
+import { postEmailTypes } from "types/postEmailTypes";
+import { customAxios } from "./customAxios";
+
+export async function postEmail(props: postEmailTypes) {
+ const { email } = props;
+ const response = await customAxios.post("/api/users/verify", {
+ email: email,
+ });
+
+ return response;
+}
diff --git a/vote/src/hooks/usePostEmail.ts b/vote/src/hooks/usePostEmail.ts
new file mode 100644
index 0000000..5c5811b
--- /dev/null
+++ b/vote/src/hooks/usePostEmail.ts
@@ -0,0 +1,13 @@
+import { useMutation } from "react-query";
+import { postEmail } from "@api/postEmail";
+
+export function usePostEmail() {
+ return useMutation(postEmail, {
+ onSuccess: () => {
+ console.log("이메일 인증 성공");
+ },
+ onError: (error) => {
+ console.log("이메일 인증 실패", error);
+ },
+ });
+}
diff --git a/vote/src/types/postEmailTypes.ts b/vote/src/types/postEmailTypes.ts
new file mode 100644
index 0000000..4c65d37
--- /dev/null
+++ b/vote/src/types/postEmailTypes.ts
@@ -0,0 +1,3 @@
+export interface postEmailTypes {
+ email: string;
+}
From 35f0185fdb13f732b09100e3d6aca00a71563d4f Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 24 Jun 2024 15:23:34 +0900
Subject: [PATCH 30/72] feat: postSignIn api
---
vote/src/api/postSignIn.ts | 12 ++++++++++++
vote/src/hooks/usePostSingIn.ts | 17 +++++++++++++++++
vote/src/types/postSignInTypes.ts | 4 ++++
3 files changed, 33 insertions(+)
create mode 100644 vote/src/api/postSignIn.ts
create mode 100644 vote/src/hooks/usePostSingIn.ts
create mode 100644 vote/src/types/postSignInTypes.ts
diff --git a/vote/src/api/postSignIn.ts b/vote/src/api/postSignIn.ts
new file mode 100644
index 0000000..d8dc626
--- /dev/null
+++ b/vote/src/api/postSignIn.ts
@@ -0,0 +1,12 @@
+import { postSignInTypes } from "types/postSignInTypes";
+import { customAxios } from "./customAxios";
+
+export async function postSignIn(props: postSignInTypes) {
+ const { username, password } = props;
+ const response = await customAxios.post("/api/users/login", {
+ username: username,
+ password: password,
+ });
+
+ return response;
+}
diff --git a/vote/src/hooks/usePostSingIn.ts b/vote/src/hooks/usePostSingIn.ts
new file mode 100644
index 0000000..83036ef
--- /dev/null
+++ b/vote/src/hooks/usePostSingIn.ts
@@ -0,0 +1,17 @@
+import { useMutation } from "react-query";
+import { postSignIn } from "@api/postSignIn";
+import { useNavigate } from "react-router-dom";
+
+export function usePostSignIn() {
+ const navigate = useNavigate();
+
+ return useMutation(postSignIn, {
+ onSuccess: () => {
+ console.log("로그인 성공");
+ navigate("/vote/main");
+ },
+ onError: (error) => {
+ console.log("로그인 실패", error);
+ },
+ });
+}
diff --git a/vote/src/types/postSignInTypes.ts b/vote/src/types/postSignInTypes.ts
new file mode 100644
index 0000000..9417f81
--- /dev/null
+++ b/vote/src/types/postSignInTypes.ts
@@ -0,0 +1,4 @@
+export interface postSignInTypes {
+ username: string;
+ password: string;
+}
From 07027b6d9b6a62f3aa75964686123bef09d04c4c Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 24 Jun 2024 15:24:25 +0900
Subject: [PATCH 31/72] feat: postSignUp api
---
vote/src/api/postSignUp.ts | 16 ++++++++++++++++
vote/src/hooks/usePostSignUp.ts | 17 +++++++++++++++++
vote/src/types/postSignUpTypes.ts | 8 ++++++++
3 files changed, 41 insertions(+)
create mode 100644 vote/src/api/postSignUp.ts
create mode 100644 vote/src/hooks/usePostSignUp.ts
create mode 100644 vote/src/types/postSignUpTypes.ts
diff --git a/vote/src/api/postSignUp.ts b/vote/src/api/postSignUp.ts
new file mode 100644
index 0000000..1ffaf20
--- /dev/null
+++ b/vote/src/api/postSignUp.ts
@@ -0,0 +1,16 @@
+import { postSignUpTypes } from "types/postSignUpTypes";
+import { customAxios } from "./customAxios";
+
+export async function postSignUp(props: postSignUpTypes) {
+ const { username, password, email, part, team, name } = props;
+ const response = await customAxios.post("/api/users/signup", {
+ username: username,
+ password: password,
+ email: email,
+ part: part,
+ team: team,
+ name: name,
+ });
+
+ return response;
+}
diff --git a/vote/src/hooks/usePostSignUp.ts b/vote/src/hooks/usePostSignUp.ts
new file mode 100644
index 0000000..9615fd4
--- /dev/null
+++ b/vote/src/hooks/usePostSignUp.ts
@@ -0,0 +1,17 @@
+import { useMutation } from "react-query";
+import { postSignUp } from "@api/postSignUp";
+import { useNavigate } from "react-router-dom";
+
+export function usePostSignUp() {
+ const navigate = useNavigate();
+
+ return useMutation(postSignUp, {
+ onSuccess: () => {
+ console.log("회원가입 성공");
+ navigate("/signin");
+ },
+ onError: (error) => {
+ console.log("회원가입 실패", error);
+ },
+ });
+}
diff --git a/vote/src/types/postSignUpTypes.ts b/vote/src/types/postSignUpTypes.ts
new file mode 100644
index 0000000..d2d3e51
--- /dev/null
+++ b/vote/src/types/postSignUpTypes.ts
@@ -0,0 +1,8 @@
+export interface postSignUpTypes {
+ username: string;
+ password: string;
+ email: string;
+ part: string;
+ team: string;
+ name: string;
+}
From 4130b748479faecbfbbe9c2e154dc4a9015c4152 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 24 Jun 2024 15:24:40 +0900
Subject: [PATCH 32/72] feat: getTopics api
---
vote/src/api/getTopics.ts | 27 +++++++++++++++++++++++++++
vote/src/hooks/useGetTopics.ts | 20 ++++++++++++++++++++
2 files changed, 47 insertions(+)
create mode 100644 vote/src/api/getTopics.ts
create mode 100644 vote/src/hooks/useGetTopics.ts
diff --git a/vote/src/api/getTopics.ts b/vote/src/api/getTopics.ts
new file mode 100644
index 0000000..4f180a2
--- /dev/null
+++ b/vote/src/api/getTopics.ts
@@ -0,0 +1,27 @@
+import { AxiosResponse } from "axios";
+import { customAxios } from "./customAxios";
+
+export interface VotingOptionDtoTypes {
+ id: number;
+ name: string;
+}
+
+export interface ResponseTypes {
+ id: number;
+ name: string;
+ minimumVotesRequired: number;
+ votingOptionDto: VotingOptionDtoTypes[];
+}
+
+interface GetTopicsTypes {
+ success: boolean;
+ response: ResponseTypes[];
+}
+
+export async function getTopics(): Promise {
+ const { data }: AxiosResponse =
+ await customAxios.get("/api/topics");
+
+ const { response } = data;
+ return response;
+}
diff --git a/vote/src/hooks/useGetTopics.ts b/vote/src/hooks/useGetTopics.ts
new file mode 100644
index 0000000..5c53b39
--- /dev/null
+++ b/vote/src/hooks/useGetTopics.ts
@@ -0,0 +1,20 @@
+import { useQuery } from "react-query";
+import { getTopics } from "@api/getTopics";
+import { ResponseTypes } from "@api/getTopics";
+
+export default function useGetTopics() {
+ const result = useQuery(["getTopics"], getTopics, {
+ onError: (error) => {
+ console.log("에러 발생", error);
+ },
+ });
+
+ return result;
+}
+
+// 컴포넌트에서 이렇게 data 불러와서 쓰면 돼 !!
+
+// const { data } = useGetMyPageComment();
+
+// data?.map((data) =>
+// return
From ac9bd022e709351c7448c282dc043a75533255d7 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 24 Jun 2024 15:24:52 +0900
Subject: [PATCH 33/72] feat: signIn, signUp page
---
vote/src/pages/SignIn.tsx | 23 +++++++---
vote/src/pages/SignUp.tsx | 95 ++++++++++++++++++++++++++++++++++-----
2 files changed, 102 insertions(+), 16 deletions(-)
diff --git a/vote/src/pages/SignIn.tsx b/vote/src/pages/SignIn.tsx
index c15d5c3..5f2909e 100644
--- a/vote/src/pages/SignIn.tsx
+++ b/vote/src/pages/SignIn.tsx
@@ -2,6 +2,8 @@ import styled from "styled-components";
import InputContainer from "@components/common/InputContainer";
import { useState } from "react";
import { BtnSign } from "@styles/BtnStyle";
+import { usePostSignIn } from "@hooks/usePostSingIn";
+import { useNavigate } from "react-router-dom";
const Wrapper = styled.div`
display: flex;
@@ -34,9 +36,9 @@ const FilledInput = styled.section`
gap: 2.25rem;
`;
-const Container = styled.section`
+const BtnContainer = styled.section`
display: flex;
- justify-content: center;
+ justify-content: space-around;
`;
const SignInBtn = styled(BtnSign)`
@@ -47,6 +49,16 @@ const SignInBtn = styled(BtnSign)`
export default function SignIn() {
const [ID, setId] = useState("");
const [PW, setPw] = useState("");
+ const { mutate: postSignInMutate } = usePostSignIn();
+ const navigate = useNavigate();
+
+ function handleSignIn() {
+ postSignInMutate({ username: ID, password: PW });
+ }
+
+ function moveToSignUp() {
+ navigate("/signup");
+ }
return (
@@ -56,9 +68,10 @@ export default function SignIn() {
-
- 로그인
-
+
+ 로그인
+ 회원가입
+
);
diff --git a/vote/src/pages/SignUp.tsx b/vote/src/pages/SignUp.tsx
index 3fd10ae..600b8d9 100644
--- a/vote/src/pages/SignUp.tsx
+++ b/vote/src/pages/SignUp.tsx
@@ -2,6 +2,8 @@ import styled from "styled-components";
import { useState } from "react";
import { BtnSign } from "@styles/BtnStyle";
import InputContainer from "@components/common/InputContainer";
+import { usePostSignUp } from "@hooks/usePostSignUp";
+import { usePostEmail } from "@hooks/usePostEmail";
const Wrapper = styled.div`
display: flex;
@@ -35,6 +37,20 @@ const VerifyBtn = styled(BtnSign)`
height: 3.625rem;
`;
+const ConfirmText = styled.p<{ $passwordMatch: boolean }>`
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ width: 100%;
+ height: 3.625rem;
+
+ background-color: ${({ $passwordMatch, theme }) =>
+ $passwordMatch ? theme.colors.active : theme.colors.confirm};
+ color: ${({ theme }) => theme.colors.black};
+ ${({ theme }) => theme.fonts.SignBtnText};
+`;
+
const Toggle = styled.section`
display: flex;
flex-direction: column;
@@ -75,8 +91,8 @@ const SignUpBtn = styled(BtnSign)`
`;
const options = {
- teams: ["Team A", "Team B", "Team C"],
- parts: ["Part 1", "Part 2", "Part 3"],
+ teams: ["AZITO", "TIG", "커플로그", "펫플레이트", "비트버디"],
+ parts: ["BACKEND", "FRONTEND"],
};
export default function SignUp() {
@@ -85,8 +101,33 @@ export default function SignUp() {
const [PW, setPw] = useState("");
const [pwCheck, setPwCheck] = useState("");
const [email, setEmail] = useState("");
+ const [emailCheck, setEmailCheck] = useState("");
const [selectedTeam, setSelectedTeam] = useState("");
const [selectedPart, setSelectedPart] = useState("");
+ const [isEmailClicked, setIsEmailClicked] = useState(false);
+
+ const { mutate: postSignUpMutate } = usePostSignUp();
+ const { mutate: postEmailMutate } = usePostEmail();
+
+ const passwordMatch = PW !== "" && PW === pwCheck;
+
+ function handleEmail() {
+ postEmailMutate({ email: email });
+ setIsEmailClicked(true);
+ }
+
+ function handleSignUp() {
+ postSignUpMutate({
+ username: ID,
+ password: PW,
+ email: email,
+ part: selectedPart,
+ team: selectedTeam,
+ name: name,
+ });
+ }
+
+ function handleEmailCheck() {}
return (
@@ -96,24 +137,51 @@ export default function SignUp() {
-
-
+
+
+ setPwCheck(e.target.value)}
+ />
+ PW 확인
+
+
+
+
setEmail(e.target.value)}
/>
- 인증
+
+ 이메일 인증
+
+ {isEmailClicked && (
+
+
+
+ setEmailCheck(e.target.value)}
+ />
+
+ 인증코드 확인
+
+
+
+ )}
팀 명 / 파트
@@ -145,7 +213,12 @@ export default function SignUp() {
- 가입하기
+
+ 가입하기
+
From 4b4f4e918206216ad32b6a6cb18719ba8bead438 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 24 Jun 2024 15:25:00 +0900
Subject: [PATCH 34/72] =?UTF-8?q?design:=20theme=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/styles/theme.ts | 3 +++
1 file changed, 3 insertions(+)
diff --git a/vote/src/styles/theme.ts b/vote/src/styles/theme.ts
index 42d3195..338ba0a 100644
--- a/vote/src/styles/theme.ts
+++ b/vote/src/styles/theme.ts
@@ -4,6 +4,9 @@ const colors = {
main_blue: "#384084",
white: "#fff",
light_blue: "rgba(56, 64, 132, 0.50)",
+ confirm: "#5A6072",
+ black: "#000000",
+ active: "#FFD702",
};
const fonts = {
From 19eafa252ac14adef7bff111a6c7e64c174f1a60 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 24 Jun 2024 15:25:12 +0900
Subject: [PATCH 35/72] feat: custom axios
---
vote/src/api/customAxios.ts | 8 ++++++++
vote/src/main.tsx | 15 ++++++++++++++-
2 files changed, 22 insertions(+), 1 deletion(-)
create mode 100644 vote/src/api/customAxios.ts
diff --git a/vote/src/api/customAxios.ts b/vote/src/api/customAxios.ts
new file mode 100644
index 0000000..b11f876
--- /dev/null
+++ b/vote/src/api/customAxios.ts
@@ -0,0 +1,8 @@
+import axios from 'axios';
+
+export const customAxios = axios.create({
+ baseURL: `${import.meta.env.VITE_APP_BASE_URL}`,
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+});
diff --git a/vote/src/main.tsx b/vote/src/main.tsx
index b5c0092..d808532 100644
--- a/vote/src/main.tsx
+++ b/vote/src/main.tsx
@@ -1,9 +1,22 @@
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.tsx";
+import { QueryClient, QueryClientProvider } from "react-query";
+
+const queryClient = new QueryClient({
+ defaultOptions: {
+ queries: {
+ suspense: true,
+ useErrorBoundary: true,
+ retry: 0,
+ },
+ },
+});
ReactDOM.createRoot(document.getElementById("root")!).render(
-
+
+
+
,
);
From e6081b7a1f77b0f85e5c25076611885e14024e08 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Mon, 24 Jun 2024 15:25:25 +0900
Subject: [PATCH 36/72] =?UTF-8?q?etc:=20=ED=95=84=EC=9A=94=ED=95=9C=20?=
=?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=EB=9F=AC=EB=A6=AC=20=EC=84=A4?=
=?UTF-8?q?=EC=B9=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/package.json | 2 +
vote/yarn.lock | 147 +++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 148 insertions(+), 1 deletion(-)
diff --git a/vote/package.json b/vote/package.json
index 19e101b..946f84d 100644
--- a/vote/package.json
+++ b/vote/package.json
@@ -11,8 +11,10 @@
},
"dependencies": {
"@types/react-router-dom": "^5.3.3",
+ "axios": "^1.7.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
+ "react-query": "^3.39.3",
"react-router-dom": "^6.23.1",
"styled-components": "^6.1.11",
"styled-reset": "^4.5.2"
diff --git a/vote/yarn.lock b/vote/yarn.lock
index defc512..1decba8 100644
--- a/vote/yarn.lock
+++ b/vote/yarn.lock
@@ -320,6 +320,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.0"
+"@babel/runtime@^7.23.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2":
+ version "7.24.7"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12"
+ integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
"@babel/template@^7.22.15", "@babel/template@^7.24.0":
version "7.24.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50"
@@ -1061,11 +1068,30 @@ array-union@^2.1.0:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+axios@^1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621"
+ integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==
+ dependencies:
+ follow-redirects "^1.15.6"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
+
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+big-integer@^1.6.16:
+ version "1.6.52"
+ resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85"
+ integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -1088,6 +1114,20 @@ braces@^3.0.3:
dependencies:
fill-range "^7.1.1"
+broadcast-channel@^3.4.1:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-3.7.0.tgz#2dfa5c7b4289547ac3f6705f9c00af8723889937"
+ integrity sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==
+ dependencies:
+ "@babel/runtime" "^7.7.2"
+ detect-node "^2.1.0"
+ js-sha3 "0.8.0"
+ microseconds "0.2.0"
+ nano-time "1.0.0"
+ oblivious-set "1.0.0"
+ rimraf "3.0.2"
+ unload "2.2.0"
+
browserslist@^4.22.2:
version "4.23.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
@@ -1159,6 +1199,13 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+combined-stream@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -1219,6 +1266,16 @@ deep-is@^0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+detect-node@^2.0.4, detect-node@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
+ integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
+
dir-glob@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
@@ -1494,6 +1551,20 @@ flatted@^3.2.9:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
+follow-redirects@^1.15.6:
+ version "1.15.6"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
+ integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
+
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -1649,6 +1720,11 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+js-sha3@0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840"
+ integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -1744,6 +1820,14 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
+match-sorter@^6.0.2:
+ version "6.3.4"
+ resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.4.tgz#afa779d8e922c81971fbcb4781c7003ace781be7"
+ integrity sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==
+ dependencies:
+ "@babel/runtime" "^7.23.8"
+ remove-accents "0.5.0"
+
merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
@@ -1757,6 +1841,23 @@ micromatch@^4.0.4:
braces "^3.0.3"
picomatch "^2.3.1"
+microseconds@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39"
+ integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==
+
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12:
+ version "2.1.35"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
@@ -1776,6 +1877,13 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+nano-time@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/nano-time/-/nano-time-1.0.0.tgz#b0554f69ad89e22d0907f7a12b0993a5d96137ef"
+ integrity sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==
+ dependencies:
+ big-integer "^1.6.16"
+
nanoid@^3.3.7:
version "3.3.7"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
@@ -1799,6 +1907,11 @@ node-releases@^2.0.14:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
+oblivious-set@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.0.0.tgz#c8316f2c2fb6ff7b11b6158db3234c49f733c566"
+ integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==
+
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -1910,6 +2023,11 @@ prettier@^3.2.5:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368"
integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
punycode@^2.1.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
@@ -1933,6 +2051,15 @@ react-is@^16.7.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+react-query@^3.39.3:
+ version "3.39.3"
+ resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.39.3.tgz#4cea7127c6c26bdea2de5fb63e51044330b03f35"
+ integrity sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ broadcast-channel "^3.4.1"
+ match-sorter "^6.0.2"
+
react-refresh@^0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
@@ -1960,6 +2087,16 @@ react@^18.2.0:
dependencies:
loose-envify "^1.1.0"
+regenerator-runtime@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
+ integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
+
+remove-accents@0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.5.0.tgz#77991f37ba212afba162e375b627631315bed687"
+ integrity sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==
+
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
@@ -1970,7 +2107,7 @@ reusify@^1.0.4:
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-rimraf@^3.0.2:
+rimraf@3.0.2, rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
@@ -2179,6 +2316,14 @@ undici-types@~5.26.4:
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+unload@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/unload/-/unload-2.2.0.tgz#ccc88fdcad345faa06a92039ec0f80b488880ef7"
+ integrity sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==
+ dependencies:
+ "@babel/runtime" "^7.6.2"
+ detect-node "^2.0.4"
+
update-browserslist-db@^1.0.13:
version "1.0.16"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356"
From 4cdf75389aeb6cec7ecc4318fc9b528415f22734 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 25 Jun 2024 03:00:16 +0900
Subject: [PATCH 37/72] =?UTF-8?q?feat:=20=ED=88=AC=ED=91=9C,=20=ED=88=AC?=
=?UTF-8?q?=ED=91=9C=20=EA=B2=B0=EA=B3=BC=20api?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/api/getFinalResult.ts | 22 +++++++++++++++
vote/src/api/getTopicById.ts | 28 +++++++++++++++++++
vote/src/api/getVotingOptionById.ts | 23 +++++++++++++++
vote/src/api/getVotingOptions.ts | 21 ++++++++++++++
vote/src/api/getVotingOptionsByTopicId.ts | 23 +++++++++++++++
vote/src/api/postVote.ts | 12 ++++++++
vote/src/hooks/useGetFinalResult.ts | 17 +++++++++++
vote/src/hooks/useGetTopicById.ts | 17 +++++++++++
vote/src/hooks/useGetVotingOptionById.ts | 17 +++++++++++
vote/src/hooks/useGetVotingOptionByTopicId.ts | 20 +++++++++++++
vote/src/hooks/useGetVotingOptions.ts | 17 +++++++++++
vote/src/hooks/usePostVote.ts | 17 +++++++++++
vote/src/types/postVoteTypes.ts | 4 +++
13 files changed, 238 insertions(+)
create mode 100644 vote/src/api/getFinalResult.ts
create mode 100644 vote/src/api/getTopicById.ts
create mode 100644 vote/src/api/getVotingOptionById.ts
create mode 100644 vote/src/api/getVotingOptions.ts
create mode 100644 vote/src/api/getVotingOptionsByTopicId.ts
create mode 100644 vote/src/api/postVote.ts
create mode 100644 vote/src/hooks/useGetFinalResult.ts
create mode 100644 vote/src/hooks/useGetTopicById.ts
create mode 100644 vote/src/hooks/useGetVotingOptionById.ts
create mode 100644 vote/src/hooks/useGetVotingOptionByTopicId.ts
create mode 100644 vote/src/hooks/useGetVotingOptions.ts
create mode 100644 vote/src/hooks/usePostVote.ts
create mode 100644 vote/src/types/postVoteTypes.ts
diff --git a/vote/src/api/getFinalResult.ts b/vote/src/api/getFinalResult.ts
new file mode 100644
index 0000000..3614aa8
--- /dev/null
+++ b/vote/src/api/getFinalResult.ts
@@ -0,0 +1,22 @@
+import { AxiosResponse } from "axios";
+import { customAxios } from "./customAxios";
+
+export interface ResponseTypes {
+ votingOptionCount: number;
+ votingOptionName: string;
+ votingOptionId: number;
+}
+
+interface GetFinalResultTypes {
+ success: boolean;
+ response: ResponseTypes;
+}
+
+export async function getFinalResult(topicID: number): Promise {
+ const { data }: AxiosResponse = await customAxios.get(
+ `/api/topics/${topicID}/results`,
+ );
+
+ const { response } = data;
+ return response;
+}
diff --git a/vote/src/api/getTopicById.ts b/vote/src/api/getTopicById.ts
new file mode 100644
index 0000000..1ffcfb8
--- /dev/null
+++ b/vote/src/api/getTopicById.ts
@@ -0,0 +1,28 @@
+import { AxiosResponse } from "axios";
+import { customAxios } from "./customAxios";
+
+export interface VotingOptionDtoTypes {
+ id: number;
+ name: string;
+}
+
+export interface ResponseTypes {
+ id: number;
+ name: string;
+ minimumVotesRequired: number;
+ votingOptionDto: VotingOptionDtoTypes[];
+}
+
+interface GetTopicByIdTypes {
+ success: boolean;
+ response: ResponseTypes;
+}
+
+export async function getTopicById(topicID: number): Promise {
+ const { data }: AxiosResponse = await customAxios.get(
+ `/api/topics/${topicID}`,
+ );
+
+ const { response } = data;
+ return response;
+}
diff --git a/vote/src/api/getVotingOptionById.ts b/vote/src/api/getVotingOptionById.ts
new file mode 100644
index 0000000..dd912fa
--- /dev/null
+++ b/vote/src/api/getVotingOptionById.ts
@@ -0,0 +1,23 @@
+import { AxiosResponse } from "axios";
+import { customAxios } from "./customAxios";
+
+export interface ResponseTypes {
+ id: number;
+ name: string;
+ voteCount: number;
+}
+
+interface GetVotingOptionByIdTypes {
+ success: boolean;
+ response: ResponseTypes;
+}
+
+export async function getVotingOptionById(
+ votingOptionID: number,
+): Promise {
+ const { data }: AxiosResponse =
+ await customAxios.get(`/api/votingoptions/${votingOptionID}`);
+
+ const { response } = data;
+ return response;
+}
diff --git a/vote/src/api/getVotingOptions.ts b/vote/src/api/getVotingOptions.ts
new file mode 100644
index 0000000..842982b
--- /dev/null
+++ b/vote/src/api/getVotingOptions.ts
@@ -0,0 +1,21 @@
+import { AxiosResponse } from "axios";
+import { customAxios } from "./customAxios";
+
+export interface ResponseTypes {
+ id: number;
+ name: string;
+ voteCount: number;
+}
+
+interface GetVotingOptionsTypes {
+ success: boolean;
+ response: ResponseTypes[];
+}
+
+export async function getVotingOptions(): Promise {
+ const { data }: AxiosResponse =
+ await customAxios.get("/api/votingoptions");
+
+ const { response } = data;
+ return response;
+}
diff --git a/vote/src/api/getVotingOptionsByTopicId.ts b/vote/src/api/getVotingOptionsByTopicId.ts
new file mode 100644
index 0000000..00bf302
--- /dev/null
+++ b/vote/src/api/getVotingOptionsByTopicId.ts
@@ -0,0 +1,23 @@
+import { AxiosResponse } from "axios";
+import { customAxios } from "./customAxios";
+
+export interface ResponseTypes {
+ id: number;
+ name: string;
+ voteCount: number;
+}
+
+interface GetVotingOptionsByTopicIdTypes {
+ success: boolean;
+ response: ResponseTypes;
+}
+
+export async function getVotingOptionsByTopicId(
+ topicID: number,
+): Promise {
+ const { data }: AxiosResponse =
+ await customAxios.get(`/api/votingoptions/topics/${topicID}`);
+
+ const { response } = data;
+ return response;
+}
diff --git a/vote/src/api/postVote.ts b/vote/src/api/postVote.ts
new file mode 100644
index 0000000..e91bab0
--- /dev/null
+++ b/vote/src/api/postVote.ts
@@ -0,0 +1,12 @@
+import { postVoteTypes } from "types/postVoteTypes";
+import { customAxios } from "./customAxios";
+
+export async function postVote(props: postVoteTypes) {
+ const { topicId, votingOptionId } = props;
+ const response = await customAxios.post("/api/votes", {
+ topicId: topicId,
+ votingOptionId: votingOptionId,
+ });
+
+ return response;
+}
diff --git a/vote/src/hooks/useGetFinalResult.ts b/vote/src/hooks/useGetFinalResult.ts
new file mode 100644
index 0000000..28a7e7d
--- /dev/null
+++ b/vote/src/hooks/useGetFinalResult.ts
@@ -0,0 +1,17 @@
+import { useQuery } from "react-query";
+import { getFinalResult } from "@api/getFinalResult";
+import { ResponseTypes } from "@api/getFinalResult";
+
+export default function useGetFinalResult(topicID: number) {
+ const result = useQuery(
+ ["getFinalResult", topicID],
+ () => getFinalResult(topicID),
+ {
+ onError: (error) => {
+ console.log("해당 Topic이 존재하지 않습니다.", error);
+ },
+ },
+ );
+
+ return result;
+}
diff --git a/vote/src/hooks/useGetTopicById.ts b/vote/src/hooks/useGetTopicById.ts
new file mode 100644
index 0000000..c4e8463
--- /dev/null
+++ b/vote/src/hooks/useGetTopicById.ts
@@ -0,0 +1,17 @@
+import { useQuery } from "react-query";
+import { getTopicById } from "@api/getTopicById";
+import { ResponseTypes } from "@api/getTopicById";
+
+export default function useGetTopicById(topicID: number) {
+ const result = useQuery(
+ ["getTopicById", topicID],
+ () => getTopicById(topicID),
+ {
+ onError: (error) => {
+ console.log("해당 Topic이 존재하지 않습니다.", error);
+ },
+ },
+ );
+
+ return result;
+}
diff --git a/vote/src/hooks/useGetVotingOptionById.ts b/vote/src/hooks/useGetVotingOptionById.ts
new file mode 100644
index 0000000..1765fde
--- /dev/null
+++ b/vote/src/hooks/useGetVotingOptionById.ts
@@ -0,0 +1,17 @@
+import { useQuery } from "react-query";
+import { getVotingOptionById } from "@api/getVotingOptionById";
+import { ResponseTypes } from "@api/getVotingOptionById";
+
+export default function useGetVotingOptionById(votingOptionID: number) {
+ const result = useQuery(
+ ["getVotingOptionById", votingOptionID],
+ () => getVotingOptionById(votingOptionID),
+ {
+ onError: (error) => {
+ console.log("Voting Option이 존재하지 않습니다.", error);
+ },
+ },
+ );
+
+ return result;
+}
diff --git a/vote/src/hooks/useGetVotingOptionByTopicId.ts b/vote/src/hooks/useGetVotingOptionByTopicId.ts
new file mode 100644
index 0000000..2e13daa
--- /dev/null
+++ b/vote/src/hooks/useGetVotingOptionByTopicId.ts
@@ -0,0 +1,20 @@
+import { useQuery } from "react-query";
+import { getVotingOptionsByTopicId } from "@api/getVotingOptionsByTopicId";
+import { ResponseTypes } from "@api/getVotingOptionsByTopicId";
+
+export default function useGetVotingOptionsByTopicId(topicID: number) {
+ const result = useQuery(
+ ["getVotingOptionsByTopicId", topicID],
+ () => getVotingOptionsByTopicId(topicID),
+ {
+ onError: (error) => {
+ console.log(
+ "해당 Topic 또는 Voting Option이 존재하지 않습니다.",
+ error,
+ );
+ },
+ },
+ );
+
+ return result;
+}
diff --git a/vote/src/hooks/useGetVotingOptions.ts b/vote/src/hooks/useGetVotingOptions.ts
new file mode 100644
index 0000000..4d8b5e8
--- /dev/null
+++ b/vote/src/hooks/useGetVotingOptions.ts
@@ -0,0 +1,17 @@
+import { useQuery } from "react-query";
+import { getVotingOptions } from "@api/getVotingOptions";
+import { ResponseTypes } from "@api/getVotingOptions";
+
+export default function useGetVotingOptions() {
+ const result = useQuery(
+ ["getVotingOptions"],
+ getVotingOptions,
+ {
+ onError: (error) => {
+ console.log("Voting Option이 존재하지 않습니다.", error);
+ },
+ },
+ );
+
+ return result;
+}
diff --git a/vote/src/hooks/usePostVote.ts b/vote/src/hooks/usePostVote.ts
new file mode 100644
index 0000000..551f1a5
--- /dev/null
+++ b/vote/src/hooks/usePostVote.ts
@@ -0,0 +1,17 @@
+import { useMutation } from "react-query";
+import { postVote } from "@api/postVote";
+import { useNavigate } from "react-router-dom";
+
+export function usePostVote() {
+ const navigate = useNavigate();
+
+ return useMutation(postVote, {
+ onSuccess: () => {
+ console.log("투표 성공");
+ navigate("/vote/main");
+ },
+ onError: (error) => {
+ console.log("투표 실패", error);
+ },
+ });
+}
diff --git a/vote/src/types/postVoteTypes.ts b/vote/src/types/postVoteTypes.ts
new file mode 100644
index 0000000..3bd45b2
--- /dev/null
+++ b/vote/src/types/postVoteTypes.ts
@@ -0,0 +1,4 @@
+export interface postVoteTypes {
+ topicId: number;
+ votingOptionId: number;
+}
From 22e90387eee1299bf42266939ce34888252770ac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 25 Jun 2024 04:24:23 +0900
Subject: [PATCH 38/72] =?UTF-8?q?feat:=20=ED=88=AC=ED=91=9C=20=ED=8E=98?=
=?UTF-8?q?=EC=9D=B4=EC=A7=80=20topicId=EC=97=90=20=EB=94=B0=EB=A5=B8=20?=
=?UTF-8?q?=ED=9B=84=EB=B3=B4=20=EC=B6=9C=EB=A0=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/App.tsx | 11 +--
.../api/{getTopicById.ts => getTopicsById.ts} | 6 +-
vote/src/hooks/useGetFinalResult.ts | 2 +-
vote/src/hooks/useGetTopics.ts | 6 +-
...useGetTopicById.ts => useGetTopicsById.ts} | 10 +--
vote/src/hooks/useGetVotingOptionById.ts | 2 +-
vote/src/hooks/useGetVotingOptionByTopicId.ts | 2 +-
vote/src/hooks/useGetVotingOptions.ts | 2 +-
vote/src/pages/Vote/VoteBack.tsx | 66 +++++++-----------
vote/src/pages/Vote/VoteDemo.tsx | 60 ++++++++--------
vote/src/pages/Vote/VoteFront.tsx | 69 ++++++++-----------
11 files changed, 106 insertions(+), 130 deletions(-)
rename vote/src/api/{getTopicById.ts => getTopicsById.ts} (69%)
rename vote/src/hooks/{useGetTopicById.ts => useGetTopicsById.ts} (51%)
diff --git a/vote/src/App.tsx b/vote/src/App.tsx
index f70de90..b8795f5 100644
--- a/vote/src/App.tsx
+++ b/vote/src/App.tsx
@@ -1,3 +1,4 @@
+import { Suspense } from "react";
import { Router } from "router";
import { RouterProvider } from "react-router-dom";
import { ThemeProvider } from "styled-components";
@@ -6,10 +7,12 @@ import theme from "@styles/theme";
function App() {
return (
-
-
-
-
+
+
+
+
+
+
);
}
diff --git a/vote/src/api/getTopicById.ts b/vote/src/api/getTopicsById.ts
similarity index 69%
rename from vote/src/api/getTopicById.ts
rename to vote/src/api/getTopicsById.ts
index 1ffcfb8..fe19943 100644
--- a/vote/src/api/getTopicById.ts
+++ b/vote/src/api/getTopicsById.ts
@@ -13,13 +13,13 @@ export interface ResponseTypes {
votingOptionDto: VotingOptionDtoTypes[];
}
-interface GetTopicByIdTypes {
+interface GetTopicsByIdTypes {
success: boolean;
response: ResponseTypes;
}
-export async function getTopicById(topicID: number): Promise {
- const { data }: AxiosResponse = await customAxios.get(
+export async function getTopicsById(topicID: number): Promise {
+ const { data }: AxiosResponse = await customAxios.get(
`/api/topics/${topicID}`,
);
diff --git a/vote/src/hooks/useGetFinalResult.ts b/vote/src/hooks/useGetFinalResult.ts
index 28a7e7d..63d06df 100644
--- a/vote/src/hooks/useGetFinalResult.ts
+++ b/vote/src/hooks/useGetFinalResult.ts
@@ -2,7 +2,7 @@ import { useQuery } from "react-query";
import { getFinalResult } from "@api/getFinalResult";
import { ResponseTypes } from "@api/getFinalResult";
-export default function useGetFinalResult(topicID: number) {
+export function useGetFinalResult(topicID: number) {
const result = useQuery(
["getFinalResult", topicID],
() => getFinalResult(topicID),
diff --git a/vote/src/hooks/useGetTopics.ts b/vote/src/hooks/useGetTopics.ts
index 5c53b39..db585fe 100644
--- a/vote/src/hooks/useGetTopics.ts
+++ b/vote/src/hooks/useGetTopics.ts
@@ -2,7 +2,7 @@ import { useQuery } from "react-query";
import { getTopics } from "@api/getTopics";
import { ResponseTypes } from "@api/getTopics";
-export default function useGetTopics() {
+export function useGetTopics() {
const result = useQuery(["getTopics"], getTopics, {
onError: (error) => {
console.log("에러 발생", error);
@@ -12,9 +12,9 @@ export default function useGetTopics() {
return result;
}
-// 컴포넌트에서 이렇게 data 불러와서 쓰면 돼 !!
+// 컴포넌트에서 이렇게 data 불러와서 쓰면 돼 !!
// const { data } = useGetMyPageComment();
// data?.map((data) =>
-// return
+// return
diff --git a/vote/src/hooks/useGetTopicById.ts b/vote/src/hooks/useGetTopicsById.ts
similarity index 51%
rename from vote/src/hooks/useGetTopicById.ts
rename to vote/src/hooks/useGetTopicsById.ts
index c4e8463..5e8c24a 100644
--- a/vote/src/hooks/useGetTopicById.ts
+++ b/vote/src/hooks/useGetTopicsById.ts
@@ -1,11 +1,11 @@
import { useQuery } from "react-query";
-import { getTopicById } from "@api/getTopicById";
-import { ResponseTypes } from "@api/getTopicById";
+import { getTopicsById } from "@api/getTopicsById";
+import { ResponseTypes } from "@api/getTopicsById";
-export default function useGetTopicById(topicID: number) {
+export function useGetTopicsById(topicID: number) {
const result = useQuery(
- ["getTopicById", topicID],
- () => getTopicById(topicID),
+ ["getTopicsById", topicID],
+ () => getTopicsById(topicID),
{
onError: (error) => {
console.log("해당 Topic이 존재하지 않습니다.", error);
diff --git a/vote/src/hooks/useGetVotingOptionById.ts b/vote/src/hooks/useGetVotingOptionById.ts
index 1765fde..b5656ec 100644
--- a/vote/src/hooks/useGetVotingOptionById.ts
+++ b/vote/src/hooks/useGetVotingOptionById.ts
@@ -2,7 +2,7 @@ import { useQuery } from "react-query";
import { getVotingOptionById } from "@api/getVotingOptionById";
import { ResponseTypes } from "@api/getVotingOptionById";
-export default function useGetVotingOptionById(votingOptionID: number) {
+export function useGetVotingOptionById(votingOptionID: number) {
const result = useQuery(
["getVotingOptionById", votingOptionID],
() => getVotingOptionById(votingOptionID),
diff --git a/vote/src/hooks/useGetVotingOptionByTopicId.ts b/vote/src/hooks/useGetVotingOptionByTopicId.ts
index 2e13daa..e9827a7 100644
--- a/vote/src/hooks/useGetVotingOptionByTopicId.ts
+++ b/vote/src/hooks/useGetVotingOptionByTopicId.ts
@@ -2,7 +2,7 @@ import { useQuery } from "react-query";
import { getVotingOptionsByTopicId } from "@api/getVotingOptionsByTopicId";
import { ResponseTypes } from "@api/getVotingOptionsByTopicId";
-export default function useGetVotingOptionsByTopicId(topicID: number) {
+export function useGetVotingOptionsByTopicId(topicID: number) {
const result = useQuery(
["getVotingOptionsByTopicId", topicID],
() => getVotingOptionsByTopicId(topicID),
diff --git a/vote/src/hooks/useGetVotingOptions.ts b/vote/src/hooks/useGetVotingOptions.ts
index 4d8b5e8..4bd59ff 100644
--- a/vote/src/hooks/useGetVotingOptions.ts
+++ b/vote/src/hooks/useGetVotingOptions.ts
@@ -2,7 +2,7 @@ import { useQuery } from "react-query";
import { getVotingOptions } from "@api/getVotingOptions";
import { ResponseTypes } from "@api/getVotingOptions";
-export default function useGetVotingOptions() {
+export function useGetVotingOptions() {
const result = useQuery(
["getVotingOptions"],
getVotingOptions,
diff --git a/vote/src/pages/Vote/VoteBack.tsx b/vote/src/pages/Vote/VoteBack.tsx
index f947985..7666851 100644
--- a/vote/src/pages/Vote/VoteBack.tsx
+++ b/vote/src/pages/Vote/VoteBack.tsx
@@ -4,19 +4,7 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
-
-const BackItems = [
- { key: 1, name: "이진우", team: "Buldog" },
- { key: 2, name: "임형준", team: "BeatBuddy" },
- { key: 3, name: "박시영", team: "CoupleLog" },
- { key: 4, name: "박수빈", team: "BeatBuddy" },
- { key: 5, name: "장영환", team: "TIG" },
- { key: 6, name: "정기민", team: "TIG" },
- { key: 7, name: "김성현", team: "CoupleLog" },
- { key: 8, name: "이도현", team: "azito" },
- { key: 9, name: "전민", team: "Buldog" },
- { key: 10, name: "권찬", team: "azito" },
-];
+import { useGetTopicsById } from "@hooks/useGetTopicsById";
const Section = styled.section`
display: flex;
@@ -50,10 +38,6 @@ const TeamNameMidText = styled.span`
${({ theme }) => theme.fonts.TeamName_Mid};
`;
-const TeamNameSmallText = styled.span`
- ${({ theme }) => theme.fonts.TeamName_Small};
-`;
-
const ButtonWrapper = styled.section`
display: flex;
justify-content: space-between;
@@ -63,6 +47,7 @@ const ButtonWrapper = styled.section`
export default function VoteBack() {
const navigate = useNavigate();
const [selectedBack, setSelectedBack] = useState(null);
+ const { data } = useGetTopicsById(2);
const handleSelected = (itemKey: any) => {
if (selectedBack === itemKey) {
@@ -77,27 +62,28 @@ export default function VoteBack() {
/* API 연결 */
};
- return (
-
-
-
- BE 파트장 투표
-
- {BackItems.map((item) => (
- handleSelected(item.key)}
- $isSelected={selectedBack === item.key}>
- {item.team}
- {item.name}
-
- ))}
-
-
-
- navigate("/result/back")} />
-
-
-
- );
+ if (data && data.votingOptionDto) {
+ return (
+
+
+
+ BE 파트장 투표
+
+ {data.votingOptionDto.map((item) => (
+ handleSelected(item.id)}
+ $isSelected={selectedBack === item.id}>
+ {item.name}
+
+ ))}
+
+
+
+ navigate("/result/back")} />
+
+
+
+ );
+ }
}
diff --git a/vote/src/pages/Vote/VoteDemo.tsx b/vote/src/pages/Vote/VoteDemo.tsx
index 6f726df..1a4660e 100644
--- a/vote/src/pages/Vote/VoteDemo.tsx
+++ b/vote/src/pages/Vote/VoteDemo.tsx
@@ -4,14 +4,7 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
-
-const DemoItems = [
- { key: 1, name: "azito" },
- { key: 2, name: "BeatBuddy" },
- { key: 3, name: "Buldog" },
- { key: 4, name: "CoupleLog" },
- { key: 5, name: "TIG" },
-];
+import { useGetTopicsById } from "@hooks/useGetTopicsById";
const Section = styled.section`
display: flex;
@@ -54,6 +47,7 @@ const ButtonWrapper = styled.section`
export default function VoteDemo() {
const navigate = useNavigate();
const [selectedTeam, setSelectedTeam] = useState(null);
+ const { data } = useGetTopicsById(3);
const handleSelected = (itemKey: any) => {
if (selectedTeam === itemKey) {
@@ -68,28 +62,30 @@ export default function VoteDemo() {
/* API 연결 */
};
- return (
-
-
-
- 데모데이 투표
-
- {DemoItems.map((item) => (
- handleSelected(item.key)}
- $isSelected={selectedTeam === item.key}>
- {item.name}
-
- ))}
-
-
-
- navigate("/result/demo")} />
-
-
-
- );
+ if (data && data.votingOptionDto) {
+ return (
+
+
+
+ 데모데이 투표
+
+ {data.votingOptionDto.map((item) => (
+ handleSelected(item.id)}
+ $isSelected={selectedTeam === item.id}>
+ {item.name}
+
+ ))}
+
+
+
+ navigate("/result/demo")} />
+
+
+
+ );
+ }
}
diff --git a/vote/src/pages/Vote/VoteFront.tsx b/vote/src/pages/Vote/VoteFront.tsx
index d54e48d..dceae13 100644
--- a/vote/src/pages/Vote/VoteFront.tsx
+++ b/vote/src/pages/Vote/VoteFront.tsx
@@ -4,19 +4,9 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
+import { useGetTopicsById } from "@hooks/useGetTopicsById";
-const FrontItems = [
- { key: 1, name: "김다희", team: "Buldog" },
- { key: 2, name: "김동혁", team: "BeatBuddy" },
- { key: 3, name: "김민영", team: "CoupleLog" },
- { key: 4, name: "김수현", team: "BeatBuddy" },
- { key: 5, name: "김승완", team: "TIG" },
- { key: 6, name: "송은수", team: "TIG" },
- { key: 7, name: "안혜연", team: "CoupleLog" },
- { key: 8, name: "이나현", team: "azito" },
- { key: 9, name: "이지인", team: "Buldog" },
- { key: 10, name: "조유담", team: "azito" },
-];
+//const { data } = useGetMyPageComment();
const Section = styled.section`
display: flex;
@@ -50,10 +40,6 @@ const TeamNameMidText = styled.span`
${({ theme }) => theme.fonts.TeamName_Mid};
`;
-const TeamNameSmallText = styled.span`
- ${({ theme }) => theme.fonts.TeamName_Small};
-`;
-
const ButtonWrapper = styled.section`
display: flex;
justify-content: space-between;
@@ -63,6 +49,7 @@ const ButtonWrapper = styled.section`
export default function VoteFront() {
const navigate = useNavigate();
const [selectedFront, setSelectedFront] = useState(null);
+ const { data } = useGetTopicsById(1);
const handleSelected = (itemKey: any) => {
if (selectedFront === itemKey) {
@@ -77,27 +64,31 @@ export default function VoteFront() {
/* API 연결 */
};
- return (
-
-
-
- FE 파트장 투표
-
- {FrontItems.map((item) => (
- handleSelected(item.key)}
- $isSelected={selectedFront === item.key}>
- {item.team}
- {item.name}
-
- ))}
-
-
-
- navigate("/result/front")} />
-
-
-
- );
+ if (data && data.votingOptionDto) {
+ return (
+
+
+
+ FE 파트장 투표
+
+ {data.votingOptionDto.map((item) => (
+ handleSelected(item.id)}
+ $isSelected={selectedFront === item.id}>
+ {item.name}
+
+ ))}
+
+
+
+ navigate("/result/front")}
+ />
+
+
+
+ );
+ }
}
From 7c5ff2d3a587a025b27b268d084379f7cbcf7b89 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 25 Jun 2024 12:22:13 +0900
Subject: [PATCH 39/72] =?UTF-8?q?etc:=20=ED=9B=84=EB=B3=B4=20=EC=B6=9C?=
=?UTF-8?q?=EB=A0=A5=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/api/getVotingOptionsByTopicId.ts | 4 ++--
...cId.ts => useGetVotingOptionsByTopicId.ts} | 2 +-
vote/src/pages/Vote/VoteBack.tsx | 19 ++++++++++++-----
vote/src/pages/Vote/VoteDemo.tsx | 19 ++++++++++++-----
vote/src/pages/Vote/VoteFront.tsx | 21 ++++++++++++-------
5 files changed, 45 insertions(+), 20 deletions(-)
rename vote/src/hooks/{useGetVotingOptionByTopicId.ts => useGetVotingOptionsByTopicId.ts} (91%)
diff --git a/vote/src/api/getVotingOptionsByTopicId.ts b/vote/src/api/getVotingOptionsByTopicId.ts
index 00bf302..46e485f 100644
--- a/vote/src/api/getVotingOptionsByTopicId.ts
+++ b/vote/src/api/getVotingOptionsByTopicId.ts
@@ -9,12 +9,12 @@ export interface ResponseTypes {
interface GetVotingOptionsByTopicIdTypes {
success: boolean;
- response: ResponseTypes;
+ response: ResponseTypes[];
}
export async function getVotingOptionsByTopicId(
topicID: number,
-): Promise {
+): Promise {
const { data }: AxiosResponse =
await customAxios.get(`/api/votingoptions/topics/${topicID}`);
diff --git a/vote/src/hooks/useGetVotingOptionByTopicId.ts b/vote/src/hooks/useGetVotingOptionsByTopicId.ts
similarity index 91%
rename from vote/src/hooks/useGetVotingOptionByTopicId.ts
rename to vote/src/hooks/useGetVotingOptionsByTopicId.ts
index e9827a7..dc044dd 100644
--- a/vote/src/hooks/useGetVotingOptionByTopicId.ts
+++ b/vote/src/hooks/useGetVotingOptionsByTopicId.ts
@@ -3,7 +3,7 @@ import { getVotingOptionsByTopicId } from "@api/getVotingOptionsByTopicId";
import { ResponseTypes } from "@api/getVotingOptionsByTopicId";
export function useGetVotingOptionsByTopicId(topicID: number) {
- const result = useQuery(
+ const result = useQuery(
["getVotingOptionsByTopicId", topicID],
() => getVotingOptionsByTopicId(topicID),
{
diff --git a/vote/src/pages/Vote/VoteBack.tsx b/vote/src/pages/Vote/VoteBack.tsx
index 7666851..d6912d8 100644
--- a/vote/src/pages/Vote/VoteBack.tsx
+++ b/vote/src/pages/Vote/VoteBack.tsx
@@ -4,7 +4,8 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
-import { useGetTopicsById } from "@hooks/useGetTopicsById";
+import { useGetVotingOptionsByTopicId } from "@hooks/useGetVotingOptionsByTopicId";
+import { usePostVote } from "@hooks/usePostVote";
const Section = styled.section`
display: flex;
@@ -47,7 +48,8 @@ const ButtonWrapper = styled.section`
export default function VoteBack() {
const navigate = useNavigate();
const [selectedBack, setSelectedBack] = useState(null);
- const { data } = useGetTopicsById(2);
+ const { data } = useGetVotingOptionsByTopicId(2);
+ const { mutate: postVoteMutate } = usePostVote();
const handleSelected = (itemKey: any) => {
if (selectedBack === itemKey) {
@@ -59,17 +61,24 @@ export default function VoteBack() {
const handleSubmit = () => {
console.log("선택된 항목:", selectedBack);
- /* API 연결 */
+ if (selectedBack !== null) {
+ postVoteMutate({
+ topicId: 2,
+ votingOptionId: selectedBack,
+ });
+ } else {
+ console.error("선택된 항목이 없습니다.");
+ }
};
- if (data && data.votingOptionDto) {
+ if (data) {
return (
BE 파트장 투표
- {data.votingOptionDto.map((item) => (
+ {data.map((item) => (
handleSelected(item.id)}
diff --git a/vote/src/pages/Vote/VoteDemo.tsx b/vote/src/pages/Vote/VoteDemo.tsx
index 1a4660e..e08dfc4 100644
--- a/vote/src/pages/Vote/VoteDemo.tsx
+++ b/vote/src/pages/Vote/VoteDemo.tsx
@@ -4,7 +4,8 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
-import { useGetTopicsById } from "@hooks/useGetTopicsById";
+import { useGetVotingOptionsByTopicId } from "@hooks/useGetVotingOptionsByTopicId";
+import { usePostVote } from "@hooks/usePostVote";
const Section = styled.section`
display: flex;
@@ -47,7 +48,8 @@ const ButtonWrapper = styled.section`
export default function VoteDemo() {
const navigate = useNavigate();
const [selectedTeam, setSelectedTeam] = useState(null);
- const { data } = useGetTopicsById(3);
+ const { data } = useGetVotingOptionsByTopicId(3);
+ const { mutate: postVoteMutate } = usePostVote();
const handleSelected = (itemKey: any) => {
if (selectedTeam === itemKey) {
@@ -59,17 +61,24 @@ export default function VoteDemo() {
const handleSubmit = () => {
console.log("선택된 항목:", selectedTeam);
- /* API 연결 */
+ if (selectedTeam !== null) {
+ postVoteMutate({
+ topicId: 3,
+ votingOptionId: selectedTeam,
+ });
+ } else {
+ console.error("선택된 항목이 없습니다.");
+ }
};
- if (data && data.votingOptionDto) {
+ if (data) {
return (
데모데이 투표
- {data.votingOptionDto.map((item) => (
+ {data.map((item) => (
{
if (selectedFront === itemKey) {
@@ -61,17 +61,24 @@ export default function VoteFront() {
const handleSubmit = () => {
console.log("선택된 항목:", selectedFront);
- /* API 연결 */
+ if (selectedFront !== null) {
+ postVoteMutate({
+ topicId: 1,
+ votingOptionId: selectedFront,
+ });
+ } else {
+ console.error("선택된 항목이 없습니다.");
+ }
};
- if (data && data.votingOptionDto) {
+ if (data) {
return (
FE 파트장 투표
- {data.votingOptionDto.map((item) => (
+ {data.map((item: any) => (
handleSelected(item.id)}
From cc20234ab72a7afd4c73cf04ad2ee864bf0da767 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 25 Jun 2024 12:36:48 +0900
Subject: [PATCH 40/72] =?UTF-8?q?feat:=20=ED=88=AC=ED=91=9C=20=EA=B2=B0?=
=?UTF-8?q?=EA=B3=BC=20=EC=B6=9C=EB=A0=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/api/getFinalResult.ts | 6 ++-
vote/src/hooks/useGetFinalResult.ts | 2 +-
vote/src/pages/Result/ResultBack.tsx | 77 +++++++++++----------------
vote/src/pages/Result/ResultDemo.tsx | 67 +++++++++++------------
vote/src/pages/Result/ResultFront.tsx | 77 +++++++++++----------------
vote/src/pages/Vote/VoteBack.tsx | 1 -
vote/src/pages/Vote/VoteDemo.tsx | 1 -
vote/src/pages/Vote/VoteFront.tsx | 1 -
8 files changed, 98 insertions(+), 134 deletions(-)
diff --git a/vote/src/api/getFinalResult.ts b/vote/src/api/getFinalResult.ts
index 3614aa8..b43e95f 100644
--- a/vote/src/api/getFinalResult.ts
+++ b/vote/src/api/getFinalResult.ts
@@ -9,10 +9,12 @@ export interface ResponseTypes {
interface GetFinalResultTypes {
success: boolean;
- response: ResponseTypes;
+ response: ResponseTypes[];
}
-export async function getFinalResult(topicID: number): Promise {
+export async function getFinalResult(
+ topicID: number,
+): Promise {
const { data }: AxiosResponse = await customAxios.get(
`/api/topics/${topicID}/results`,
);
diff --git a/vote/src/hooks/useGetFinalResult.ts b/vote/src/hooks/useGetFinalResult.ts
index 63d06df..282fa01 100644
--- a/vote/src/hooks/useGetFinalResult.ts
+++ b/vote/src/hooks/useGetFinalResult.ts
@@ -3,7 +3,7 @@ import { getFinalResult } from "@api/getFinalResult";
import { ResponseTypes } from "@api/getFinalResult";
export function useGetFinalResult(topicID: number) {
- const result = useQuery(
+ const result = useQuery(
["getFinalResult", topicID],
() => getFinalResult(topicID),
{
diff --git a/vote/src/pages/Result/ResultBack.tsx b/vote/src/pages/Result/ResultBack.tsx
index b2c0dc2..f9dcdba 100644
--- a/vote/src/pages/Result/ResultBack.tsx
+++ b/vote/src/pages/Result/ResultBack.tsx
@@ -3,19 +3,7 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
-
-const BackItems = [
- { key: 1, name: "이진우", team: "Buldog", count: 1 },
- { key: 2, name: "임형준", team: "BeatBuddy", count: 1 },
- { key: 3, name: "박시영", team: "CoupleLog", count: 1 },
- { key: 4, name: "박수빈", team: "BeatBuddy", count: 1 },
- { key: 5, name: "장영환", team: "TIG", count: 1 },
- { key: 6, name: "정기민", team: "TIG", count: 1 },
- { key: 7, name: "김성현", team: "CoupleLog", count: 1 },
- { key: 8, name: "이도현", team: "azito", count: 1 },
- { key: 9, name: "전민", team: "Buldog", count: 1 },
- { key: 10, name: "권찬", team: "azito", count: 1 },
-];
+import { useGetFinalResult } from "@hooks/useGetFinalResult";
const Section = styled.section`
display: flex;
@@ -64,10 +52,6 @@ const TeamNameMidText = styled.span`
${({ theme }) => theme.fonts.TeamName_Mid};
`;
-const TeamNameSmallText = styled.span`
- ${({ theme }) => theme.fonts.TeamName_Small};
-`;
-
const CountText = styled.span`
${({ theme }) => theme.fonts.Count};
`;
@@ -86,34 +70,35 @@ const RankBox = styled.div`
export default function ResultBack() {
const navigate = useNavigate();
- /* const Data = API 연결 . . 지금은 그냥 예시 */
+ const { data } = useGetFinalResult(2);
- return (
-
-
-
- BE 파트장 투표 결과
-
- {BackItems.map((item) => (
-
-
-
- 2
- {item.name}
- {item.team}
-
- {item.count}
-
-
- ))}
-
- navigate(-1)} />
-
-
- );
+ if (data) {
+ return (
+
+
+
+ BE 파트장 투표 결과
+
+ {data.map((item) => (
+
+
+
+ 2
+ {item.votingOptionName}
+
+ {item.votingOptionCount}
+
+
+ ))}
+
+ navigate(-1)} />
+
+
+ );
+ }
}
diff --git a/vote/src/pages/Result/ResultDemo.tsx b/vote/src/pages/Result/ResultDemo.tsx
index 6c679aa..acbf9a1 100644
--- a/vote/src/pages/Result/ResultDemo.tsx
+++ b/vote/src/pages/Result/ResultDemo.tsx
@@ -3,14 +3,7 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
-
-const DemoItems = [
- { key: 1, name: "azito", count: 1 },
- { key: 2, name: "BeatBuddy", count: 1 },
- { key: 3, name: "Buldog", count: 1 },
- { key: 4, name: "CoupleLog", count: 1 },
- { key: 5, name: "TIG", count: 1 },
-];
+import { useGetFinalResult } from "@hooks/useGetFinalResult";
const Section = styled.section`
display: flex;
@@ -78,33 +71,35 @@ const RankBox = styled.div`
export default function ResultDemo() {
const navigate = useNavigate();
- /* const Data = API 연결 . . 지금은 그냥 예시 */
+ const { data } = useGetFinalResult(3);
- return (
-
-
-
- BE 파트장 투표 결과
-
- {DemoItems.map((item) => (
-
-
-
- 2
- {item.name}
-
- {item.count}
-
-
- ))}
-
- navigate(-1)} />
-
-
- );
+ if (data) {
+ return (
+
+
+
+ BE 파트장 투표 결과
+
+ {data.map((item) => (
+
+
+
+ 2
+ {item.votingOptionName}
+
+ {item.votingOptionCount}
+
+
+ ))}
+
+ navigate(-1)} />
+
+
+ );
+ }
}
diff --git a/vote/src/pages/Result/ResultFront.tsx b/vote/src/pages/Result/ResultFront.tsx
index 3ccaead..6f4fc02 100644
--- a/vote/src/pages/Result/ResultFront.tsx
+++ b/vote/src/pages/Result/ResultFront.tsx
@@ -3,19 +3,7 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
-
-const FrontItems = [
- { key: 1, name: "김다희", team: "Buldog", count: 1 },
- { key: 2, name: "김동혁", team: "BeatBuddy", count: 1 },
- { key: 3, name: "김민영", team: "CoupleLog", count: 1 },
- { key: 4, name: "김수현", team: "BeatBuddy", count: 1 },
- { key: 5, name: "김승완", team: "TIG", count: 1 },
- { key: 6, name: "송은수", team: "TIG", count: 1 },
- { key: 7, name: "안혜연", team: "CoupleLog", count: 1 },
- { key: 8, name: "이나현", team: "azito", count: 1 },
- { key: 9, name: "이지인", team: "Buldog", count: 1 },
- { key: 10, name: "조유담", team: "azito", count: 1 },
-];
+import { useGetFinalResult } from "@hooks/useGetFinalResult";
const Section = styled.section`
display: flex;
@@ -64,10 +52,6 @@ const TeamNameMidText = styled.span`
${({ theme }) => theme.fonts.TeamName_Mid};
`;
-const TeamNameSmallText = styled.span`
- ${({ theme }) => theme.fonts.TeamName_Small};
-`;
-
const CountText = styled.span`
${({ theme }) => theme.fonts.Count};
`;
@@ -86,34 +70,35 @@ const RankBox = styled.div`
export default function ResultFront() {
const navigate = useNavigate();
- /* const Data = API 연결 . . 지금은 그냥 예시 */
+ const { data } = useGetFinalResult(1);
- return (
-
-
-
- FE 파트장 투표 결과
-
- {FrontItems.map((item) => (
-
-
-
- 2
- {item.name}
- {item.team}
-
- {item.count}
-
-
- ))}
-
- navigate(-1)} />
-
-
- );
+ if (data) {
+ return (
+
+
+
+ FE 파트장 투표 결과
+
+ {data.map((item) => (
+
+
+
+ 2
+ {item.votingOptionName}
+
+ {item.votingOptionCount}
+
+
+ ))}
+
+ navigate(-1)} />
+
+
+ );
+ }
}
diff --git a/vote/src/pages/Vote/VoteBack.tsx b/vote/src/pages/Vote/VoteBack.tsx
index d6912d8..646a8ee 100644
--- a/vote/src/pages/Vote/VoteBack.tsx
+++ b/vote/src/pages/Vote/VoteBack.tsx
@@ -60,7 +60,6 @@ export default function VoteBack() {
};
const handleSubmit = () => {
- console.log("선택된 항목:", selectedBack);
if (selectedBack !== null) {
postVoteMutate({
topicId: 2,
diff --git a/vote/src/pages/Vote/VoteDemo.tsx b/vote/src/pages/Vote/VoteDemo.tsx
index e08dfc4..ec28a5b 100644
--- a/vote/src/pages/Vote/VoteDemo.tsx
+++ b/vote/src/pages/Vote/VoteDemo.tsx
@@ -60,7 +60,6 @@ export default function VoteDemo() {
};
const handleSubmit = () => {
- console.log("선택된 항목:", selectedTeam);
if (selectedTeam !== null) {
postVoteMutate({
topicId: 3,
diff --git a/vote/src/pages/Vote/VoteFront.tsx b/vote/src/pages/Vote/VoteFront.tsx
index 051e855..d87f1bb 100644
--- a/vote/src/pages/Vote/VoteFront.tsx
+++ b/vote/src/pages/Vote/VoteFront.tsx
@@ -60,7 +60,6 @@ export default function VoteFront() {
};
const handleSubmit = () => {
- console.log("선택된 항목:", selectedFront);
if (selectedFront !== null) {
postVoteMutate({
topicId: 1,
From 01ce2a9b2f411872239855de44cd50b91083fa6f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 25 Jun 2024 12:47:17 +0900
Subject: [PATCH 41/72] =?UTF-8?q?feat:=20=ED=88=AC=ED=91=9C=20=EA=B2=B0?=
=?UTF-8?q?=EA=B3=BC=20=EB=82=B4=EB=A6=BC=EC=B0=A8=EC=88=9C=20=EC=A0=95?=
=?UTF-8?q?=EB=A0=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/Result/ResultBack.tsx | 9 +++++++--
vote/src/pages/Result/ResultDemo.tsx | 9 +++++++--
vote/src/pages/Result/ResultFront.tsx | 9 +++++++--
3 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/vote/src/pages/Result/ResultBack.tsx b/vote/src/pages/Result/ResultBack.tsx
index f9dcdba..3cc8cb3 100644
--- a/vote/src/pages/Result/ResultBack.tsx
+++ b/vote/src/pages/Result/ResultBack.tsx
@@ -73,13 +73,18 @@ export default function ResultBack() {
const { data } = useGetFinalResult(2);
if (data) {
+ // votingOptionCount 기준으로 data를 내림차순 정렬
+ const sortedData = [...data].sort(
+ (a, b) => b.votingOptionCount - a.votingOptionCount,
+ );
+
return (
BE 파트장 투표 결과
- {data.map((item) => (
+ {sortedData.map((item, index) => (
- 2
+ {index + 1}
{item.votingOptionName}
{item.votingOptionCount}
diff --git a/vote/src/pages/Result/ResultDemo.tsx b/vote/src/pages/Result/ResultDemo.tsx
index acbf9a1..6e0a2ab 100644
--- a/vote/src/pages/Result/ResultDemo.tsx
+++ b/vote/src/pages/Result/ResultDemo.tsx
@@ -74,13 +74,18 @@ export default function ResultDemo() {
const { data } = useGetFinalResult(3);
if (data) {
+ // votingOptionCount 기준으로 data를 내림차순 정렬
+ const sortedData = [...data].sort(
+ (a, b) => b.votingOptionCount - a.votingOptionCount,
+ );
+
return (
BE 파트장 투표 결과
- {data.map((item) => (
+ {sortedData.map((item, index) => (
- 2
+ {index + 1}
{item.votingOptionName}
{item.votingOptionCount}
diff --git a/vote/src/pages/Result/ResultFront.tsx b/vote/src/pages/Result/ResultFront.tsx
index 6f4fc02..a3778ae 100644
--- a/vote/src/pages/Result/ResultFront.tsx
+++ b/vote/src/pages/Result/ResultFront.tsx
@@ -73,13 +73,18 @@ export default function ResultFront() {
const { data } = useGetFinalResult(1);
if (data) {
+ // votingOptionCount 기준으로 data를 내림차순 정렬
+ const sortedData = [...data].sort(
+ (a, b) => b.votingOptionCount - a.votingOptionCount,
+ );
+
return (
FE 파트장 투표 결과
- {data.map((item) => (
+ {sortedData.map((item, index) => (
- 2
+ {index + 1}
{item.votingOptionName}
{item.votingOptionCount}
From da41a691381c0e0c210e26b4fbc7621371457f74 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Tue, 25 Jun 2024 13:37:21 +0900
Subject: [PATCH 42/72] =?UTF-8?q?refactor:=20=EC=BD=94=EB=93=9C=20?=
=?UTF-8?q?=EC=A0=95=EB=A6=AC=20=EB=B0=8F=20=EB=84=A4=EC=9D=B4=EB=B0=8D=20?=
=?UTF-8?q?=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/api/getTopics.ts | 27 -------------------
vote/src/api/getVotingOptionById.ts | 23 ----------------
vote/src/api/getVotingOptions.ts | 21 ---------------
...nsByTopicId.ts => getVotingOptionsById.ts} | 6 ++---
vote/src/hooks/useGetTopics.ts | 20 --------------
vote/src/hooks/useGetVotingOptionById.ts | 17 ------------
vote/src/hooks/useGetVotingOptions.ts | 17 ------------
vote/src/hooks/useGetVotingOptionsById.ts | 20 ++++++++++++++
.../src/hooks/useGetVotingOptionsByTopicId.ts | 20 --------------
vote/src/pages/Result/ResultBack.tsx | 2 +-
vote/src/pages/Result/ResultDemo.tsx | 2 +-
vote/src/pages/Result/ResultFront.tsx | 2 +-
vote/src/pages/Vote/VoteBack.tsx | 4 +--
vote/src/pages/Vote/VoteDemo.tsx | 4 +--
vote/src/pages/Vote/VoteFront.tsx | 4 +--
15 files changed, 32 insertions(+), 157 deletions(-)
delete mode 100644 vote/src/api/getTopics.ts
delete mode 100644 vote/src/api/getVotingOptionById.ts
delete mode 100644 vote/src/api/getVotingOptions.ts
rename vote/src/api/{getVotingOptionsByTopicId.ts => getVotingOptionsById.ts} (71%)
delete mode 100644 vote/src/hooks/useGetTopics.ts
delete mode 100644 vote/src/hooks/useGetVotingOptionById.ts
delete mode 100644 vote/src/hooks/useGetVotingOptions.ts
create mode 100644 vote/src/hooks/useGetVotingOptionsById.ts
delete mode 100644 vote/src/hooks/useGetVotingOptionsByTopicId.ts
diff --git a/vote/src/api/getTopics.ts b/vote/src/api/getTopics.ts
deleted file mode 100644
index 4f180a2..0000000
--- a/vote/src/api/getTopics.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { AxiosResponse } from "axios";
-import { customAxios } from "./customAxios";
-
-export interface VotingOptionDtoTypes {
- id: number;
- name: string;
-}
-
-export interface ResponseTypes {
- id: number;
- name: string;
- minimumVotesRequired: number;
- votingOptionDto: VotingOptionDtoTypes[];
-}
-
-interface GetTopicsTypes {
- success: boolean;
- response: ResponseTypes[];
-}
-
-export async function getTopics(): Promise {
- const { data }: AxiosResponse =
- await customAxios.get("/api/topics");
-
- const { response } = data;
- return response;
-}
diff --git a/vote/src/api/getVotingOptionById.ts b/vote/src/api/getVotingOptionById.ts
deleted file mode 100644
index dd912fa..0000000
--- a/vote/src/api/getVotingOptionById.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { AxiosResponse } from "axios";
-import { customAxios } from "./customAxios";
-
-export interface ResponseTypes {
- id: number;
- name: string;
- voteCount: number;
-}
-
-interface GetVotingOptionByIdTypes {
- success: boolean;
- response: ResponseTypes;
-}
-
-export async function getVotingOptionById(
- votingOptionID: number,
-): Promise {
- const { data }: AxiosResponse =
- await customAxios.get(`/api/votingoptions/${votingOptionID}`);
-
- const { response } = data;
- return response;
-}
diff --git a/vote/src/api/getVotingOptions.ts b/vote/src/api/getVotingOptions.ts
deleted file mode 100644
index 842982b..0000000
--- a/vote/src/api/getVotingOptions.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { AxiosResponse } from "axios";
-import { customAxios } from "./customAxios";
-
-export interface ResponseTypes {
- id: number;
- name: string;
- voteCount: number;
-}
-
-interface GetVotingOptionsTypes {
- success: boolean;
- response: ResponseTypes[];
-}
-
-export async function getVotingOptions(): Promise {
- const { data }: AxiosResponse =
- await customAxios.get("/api/votingoptions");
-
- const { response } = data;
- return response;
-}
diff --git a/vote/src/api/getVotingOptionsByTopicId.ts b/vote/src/api/getVotingOptionsById.ts
similarity index 71%
rename from vote/src/api/getVotingOptionsByTopicId.ts
rename to vote/src/api/getVotingOptionsById.ts
index 46e485f..9c049d1 100644
--- a/vote/src/api/getVotingOptionsByTopicId.ts
+++ b/vote/src/api/getVotingOptionsById.ts
@@ -7,15 +7,15 @@ export interface ResponseTypes {
voteCount: number;
}
-interface GetVotingOptionsByTopicIdTypes {
+interface GetVotingOptionsByIdTypes {
success: boolean;
response: ResponseTypes[];
}
-export async function getVotingOptionsByTopicId(
+export async function getVotingOptionsById(
topicID: number,
): Promise {
- const { data }: AxiosResponse =
+ const { data }: AxiosResponse =
await customAxios.get(`/api/votingoptions/topics/${topicID}`);
const { response } = data;
diff --git a/vote/src/hooks/useGetTopics.ts b/vote/src/hooks/useGetTopics.ts
deleted file mode 100644
index db585fe..0000000
--- a/vote/src/hooks/useGetTopics.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { useQuery } from "react-query";
-import { getTopics } from "@api/getTopics";
-import { ResponseTypes } from "@api/getTopics";
-
-export function useGetTopics() {
- const result = useQuery(["getTopics"], getTopics, {
- onError: (error) => {
- console.log("에러 발생", error);
- },
- });
-
- return result;
-}
-
-// 컴포넌트에서 이렇게 data 불러와서 쓰면 돼 !!
-
-// const { data } = useGetMyPageComment();
-
-// data?.map((data) =>
-// return
diff --git a/vote/src/hooks/useGetVotingOptionById.ts b/vote/src/hooks/useGetVotingOptionById.ts
deleted file mode 100644
index b5656ec..0000000
--- a/vote/src/hooks/useGetVotingOptionById.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { useQuery } from "react-query";
-import { getVotingOptionById } from "@api/getVotingOptionById";
-import { ResponseTypes } from "@api/getVotingOptionById";
-
-export function useGetVotingOptionById(votingOptionID: number) {
- const result = useQuery(
- ["getVotingOptionById", votingOptionID],
- () => getVotingOptionById(votingOptionID),
- {
- onError: (error) => {
- console.log("Voting Option이 존재하지 않습니다.", error);
- },
- },
- );
-
- return result;
-}
diff --git a/vote/src/hooks/useGetVotingOptions.ts b/vote/src/hooks/useGetVotingOptions.ts
deleted file mode 100644
index 4bd59ff..0000000
--- a/vote/src/hooks/useGetVotingOptions.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { useQuery } from "react-query";
-import { getVotingOptions } from "@api/getVotingOptions";
-import { ResponseTypes } from "@api/getVotingOptions";
-
-export function useGetVotingOptions() {
- const result = useQuery(
- ["getVotingOptions"],
- getVotingOptions,
- {
- onError: (error) => {
- console.log("Voting Option이 존재하지 않습니다.", error);
- },
- },
- );
-
- return result;
-}
diff --git a/vote/src/hooks/useGetVotingOptionsById.ts b/vote/src/hooks/useGetVotingOptionsById.ts
new file mode 100644
index 0000000..b09b902
--- /dev/null
+++ b/vote/src/hooks/useGetVotingOptionsById.ts
@@ -0,0 +1,20 @@
+import { useQuery } from "react-query";
+import { getVotingOptionsById } from "@api/getVotingOptionsById";
+import { ResponseTypes } from "@api/getVotingOptionsById";
+
+export function useGetVotingOptionsById(topicID: number) {
+ const result = useQuery(
+ ["getVotingOptionsById", topicID],
+ () => getVotingOptionsById(topicID),
+ {
+ onError: (error) => {
+ console.log(
+ "해당 Topic 또는 Voting Option이 존재하지 않습니다.",
+ error,
+ );
+ },
+ },
+ );
+
+ return result;
+}
diff --git a/vote/src/hooks/useGetVotingOptionsByTopicId.ts b/vote/src/hooks/useGetVotingOptionsByTopicId.ts
deleted file mode 100644
index dc044dd..0000000
--- a/vote/src/hooks/useGetVotingOptionsByTopicId.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { useQuery } from "react-query";
-import { getVotingOptionsByTopicId } from "@api/getVotingOptionsByTopicId";
-import { ResponseTypes } from "@api/getVotingOptionsByTopicId";
-
-export function useGetVotingOptionsByTopicId(topicID: number) {
- const result = useQuery(
- ["getVotingOptionsByTopicId", topicID],
- () => getVotingOptionsByTopicId(topicID),
- {
- onError: (error) => {
- console.log(
- "해당 Topic 또는 Voting Option이 존재하지 않습니다.",
- error,
- );
- },
- },
- );
-
- return result;
-}
diff --git a/vote/src/pages/Result/ResultBack.tsx b/vote/src/pages/Result/ResultBack.tsx
index 3cc8cb3..5eb0917 100644
--- a/vote/src/pages/Result/ResultBack.tsx
+++ b/vote/src/pages/Result/ResultBack.tsx
@@ -101,7 +101,7 @@ export default function ResultBack() {
))}
- navigate(-1)} />
+ navigate("/vote/main")} />
);
diff --git a/vote/src/pages/Result/ResultDemo.tsx b/vote/src/pages/Result/ResultDemo.tsx
index 6e0a2ab..212fbaf 100644
--- a/vote/src/pages/Result/ResultDemo.tsx
+++ b/vote/src/pages/Result/ResultDemo.tsx
@@ -102,7 +102,7 @@ export default function ResultDemo() {
))}
- navigate(-1)} />
+ navigate("/vote/main")} />
);
diff --git a/vote/src/pages/Result/ResultFront.tsx b/vote/src/pages/Result/ResultFront.tsx
index a3778ae..916ab65 100644
--- a/vote/src/pages/Result/ResultFront.tsx
+++ b/vote/src/pages/Result/ResultFront.tsx
@@ -101,7 +101,7 @@ export default function ResultFront() {
))}
- navigate(-1)} />
+ navigate("/vote/main")} />
);
diff --git a/vote/src/pages/Vote/VoteBack.tsx b/vote/src/pages/Vote/VoteBack.tsx
index 646a8ee..6e5525b 100644
--- a/vote/src/pages/Vote/VoteBack.tsx
+++ b/vote/src/pages/Vote/VoteBack.tsx
@@ -4,7 +4,7 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
-import { useGetVotingOptionsByTopicId } from "@hooks/useGetVotingOptionsByTopicId";
+import { useGetVotingOptionsById } from "@hooks/useGetVotingOptionsById";
import { usePostVote } from "@hooks/usePostVote";
const Section = styled.section`
@@ -48,7 +48,7 @@ const ButtonWrapper = styled.section`
export default function VoteBack() {
const navigate = useNavigate();
const [selectedBack, setSelectedBack] = useState(null);
- const { data } = useGetVotingOptionsByTopicId(2);
+ const { data } = useGetVotingOptionsById(2);
const { mutate: postVoteMutate } = usePostVote();
const handleSelected = (itemKey: any) => {
diff --git a/vote/src/pages/Vote/VoteDemo.tsx b/vote/src/pages/Vote/VoteDemo.tsx
index ec28a5b..cb92d07 100644
--- a/vote/src/pages/Vote/VoteDemo.tsx
+++ b/vote/src/pages/Vote/VoteDemo.tsx
@@ -4,7 +4,7 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
-import { useGetVotingOptionsByTopicId } from "@hooks/useGetVotingOptionsByTopicId";
+import { useGetVotingOptionsById } from "@hooks/useGetVotingOptionsById";
import { usePostVote } from "@hooks/usePostVote";
const Section = styled.section`
@@ -48,7 +48,7 @@ const ButtonWrapper = styled.section`
export default function VoteDemo() {
const navigate = useNavigate();
const [selectedTeam, setSelectedTeam] = useState(null);
- const { data } = useGetVotingOptionsByTopicId(3);
+ const { data } = useGetVotingOptionsById(3);
const { mutate: postVoteMutate } = usePostVote();
const handleSelected = (itemKey: any) => {
diff --git a/vote/src/pages/Vote/VoteFront.tsx b/vote/src/pages/Vote/VoteFront.tsx
index d87f1bb..14e83bd 100644
--- a/vote/src/pages/Vote/VoteFront.tsx
+++ b/vote/src/pages/Vote/VoteFront.tsx
@@ -4,7 +4,7 @@ import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
import { useNavigate } from "react-router-dom";
import styled from "styled-components";
-import { useGetVotingOptionsByTopicId } from "@hooks/useGetVotingOptionsByTopicId";
+import { useGetVotingOptionsById } from "@hooks/useGetVotingOptionsById";
import { usePostVote } from "@hooks/usePostVote";
const Section = styled.section`
@@ -48,7 +48,7 @@ const ButtonWrapper = styled.section`
export default function VoteFront() {
const navigate = useNavigate();
const [selectedFront, setSelectedFront] = useState(null);
- const { data } = useGetVotingOptionsByTopicId(1);
+ const { data } = useGetVotingOptionsById(1);
const { mutate: postVoteMutate } = usePostVote();
const handleSelected = (itemKey: any) => {
From 78f854bdeee06f6af4d3d723079db8eaa03e7530 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Tue, 25 Jun 2024 15:39:03 +0900
Subject: [PATCH 43/72] feat: customAxios
---
vote/src/api/customAxios.ts | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/vote/src/api/customAxios.ts b/vote/src/api/customAxios.ts
index b11f876..f9f05bb 100644
--- a/vote/src/api/customAxios.ts
+++ b/vote/src/api/customAxios.ts
@@ -1,8 +1,9 @@
-import axios from 'axios';
+import axios from "axios";
export const customAxios = axios.create({
baseURL: `${import.meta.env.VITE_APP_BASE_URL}`,
headers: {
- 'Content-Type': 'application/json',
+ "Content-Type": "application/json",
+ "Access-Control-Allow-Origin": "*",
},
});
From 8eed89864d249e618322cf5f3bbea400ee35006a Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Tue, 25 Jun 2024 15:39:21 +0900
Subject: [PATCH 44/72] =?UTF-8?q?feat:=20postSignUp=20=ED=8C=8C=EB=9D=BC?=
=?UTF-8?q?=EB=AF=B8=ED=84=B0=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/api/postSignUp.ts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/vote/src/api/postSignUp.ts b/vote/src/api/postSignUp.ts
index 1ffaf20..9695a1d 100644
--- a/vote/src/api/postSignUp.ts
+++ b/vote/src/api/postSignUp.ts
@@ -2,13 +2,14 @@ import { postSignUpTypes } from "types/postSignUpTypes";
import { customAxios } from "./customAxios";
export async function postSignUp(props: postSignUpTypes) {
- const { username, password, email, part, team, name } = props;
+ const { username, password, email, part, team, name, role } = props;
const response = await customAxios.post("/api/users/signup", {
username: username,
password: password,
email: email,
part: part,
team: team,
+ role: role,
name: name,
});
From 73d29826d7c22041f14fd31d0800ef3e7ccf39b0 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Tue, 25 Jun 2024 15:39:31 +0900
Subject: [PATCH 45/72] =?UTF-8?q?design:=20=ED=97=A4=EB=8D=94=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/VoteHeader.tsx | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/vote/src/components/common/VoteHeader.tsx b/vote/src/components/common/VoteHeader.tsx
index 05e84f6..cc80e77 100644
--- a/vote/src/components/common/VoteHeader.tsx
+++ b/vote/src/components/common/VoteHeader.tsx
@@ -16,17 +16,30 @@ const HeaderContainer = styled.section`
const BtnContainer = styled.section`
display: flex;
- gap: 2rem;
+ gap: 1rem;
+`;
+
+const UserName = styled.p`
+ align-items: center;
+ padding: 1rem 2rem;
+
+ border-radius: 2rem;
+
+ ${({ theme }) => theme.fonts.TeamName_Small};
+ background-color: ${({ theme }) => theme.colors.active};
+ color: ${({ theme }) => theme.colors.black};
`;
/** header */
export default function VoteHeader() {
+ const savedData = localStorage.getItem("INFO");
+ const info = savedData ? JSON.parse(savedData) : [];
+
return (
-
-
+ {info} 님
From 99e020c7d84800852cc12e539b65edac0bf6362b Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Tue, 25 Jun 2024 15:40:27 +0900
Subject: [PATCH 46/72] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?=
=?UTF-8?q?=EC=9E=85=20=ED=8E=98=EC=9D=B4=EC=A7=80=20api?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/SignUp.tsx | 63 ++++++++++++++++++++++++++++-----------
1 file changed, 46 insertions(+), 17 deletions(-)
diff --git a/vote/src/pages/SignUp.tsx b/vote/src/pages/SignUp.tsx
index 600b8d9..597c79d 100644
--- a/vote/src/pages/SignUp.tsx
+++ b/vote/src/pages/SignUp.tsx
@@ -19,9 +19,7 @@ const Header = styled.h1`
const Section = styled.section`
display: flex;
flex-direction: column;
-
padding: 6rem 4rem 2rem;
-
border-radius: 1.25rem;
background-color: ${({ theme }) => theme.colors.light_blue};
`;
@@ -41,10 +39,8 @@ const ConfirmText = styled.p<{ $passwordMatch: boolean }>`
display: flex;
justify-content: center;
align-items: center;
-
width: 100%;
height: 3.625rem;
-
background-color: ${({ $passwordMatch, theme }) =>
$passwordMatch ? theme.colors.active : theme.colors.confirm};
color: ${({ theme }) => theme.colors.black};
@@ -54,7 +50,6 @@ const ConfirmText = styled.p<{ $passwordMatch: boolean }>`
const Toggle = styled.section`
display: flex;
flex-direction: column;
-
gap: 1.5rem;
margin-top: 7.4rem;
`;
@@ -68,26 +63,32 @@ const ToggleContainer = styled.section`
justify-content: space-around;
`;
-const Dropdown = styled.select`
+const Dropdown = styled.select<{ $selected: boolean }>`
width: 16.625rem;
height: 5rem;
-
padding: 0.5rem;
${({ theme }) => theme.fonts.SignBtnText};
- color: ${({ theme }) => theme.colors.white};
- background-color: ${({ theme }) => theme.colors.main_blue};
+ color: ${({ $selected, theme }) =>
+ $selected ? theme.colors.black : theme.colors.white};
+ background-color: ${({ $selected, theme }) =>
+ $selected ? theme.colors.active : theme.colors.main_blue};
`;
const BtnContainer = styled.section`
display: flex;
justify-content: center;
-
margin-top: 5rem;
`;
-const SignUpBtn = styled(BtnSign)`
+const SignUpBtn = styled(BtnSign)<{ $disabled: boolean }>`
width: 12.625rem;
height: 3.625rem;
+
+ cursor: ${({ $disabled }) => ($disabled ? "not-allowed" : "pointer")};
+ background-color: ${({ $disabled, theme }) =>
+ $disabled ? theme.colors.confirm : theme.colors.main_blue};
+ color: ${({ $disabled, theme }) =>
+ $disabled ? theme.colors.black : theme.colors.white};
`;
const options = {
@@ -105,15 +106,33 @@ export default function SignUp() {
const [selectedTeam, setSelectedTeam] = useState("");
const [selectedPart, setSelectedPart] = useState("");
const [isEmailClicked, setIsEmailClicked] = useState(false);
+ const [verificationCode, setVerificationCode] = useState("");
const { mutate: postSignUpMutate } = usePostSignUp();
const { mutate: postEmailMutate } = usePostEmail();
const passwordMatch = PW !== "" && PW === pwCheck;
+ const isSignUpDisabled =
+ !passwordMatch ||
+ ID === "" ||
+ PW === "" ||
+ name === "" ||
+ email === "" ||
+ // emailCheck === "" ||
+ selectedPart === "" ||
+ selectedTeam === "";
+
function handleEmail() {
- postEmailMutate({ email: email });
- setIsEmailClicked(true);
+ postEmailMutate(
+ { email: email },
+ {
+ onSuccess: (data) => {
+ setIsEmailClicked(true);
+ setVerificationCode(data.data);
+ },
+ },
+ );
}
function handleSignUp() {
@@ -123,11 +142,18 @@ export default function SignUp() {
email: email,
part: selectedPart,
team: selectedTeam,
+ role: true,
name: name,
});
}
- function handleEmailCheck() {}
+ function handleEmailCheck() {
+ if (emailCheck === verificationCode) {
+ alert("코드 일치");
+ } else {
+ alert("코드 불일치");
+ }
+ }
return (
@@ -151,10 +177,10 @@ export default function SignUp() {
-
+
setSelectedTeam(e.target.value)}>
setSelectedPart(e.target.value)}>
)}
From 618117ab5dba0bc0293b535d523f194f232be3ce Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Wed, 26 Jun 2024 00:51:32 +0900
Subject: [PATCH 56/72] =?UTF-8?q?design:=20Vote=20=ED=8E=98=EC=9D=B4?=
=?UTF-8?q?=EC=A7=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/VoteHeader.tsx | 14 ++++++++++++--
vote/src/pages/Vote/SelectPart.tsx | 11 ++++++++++-
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/vote/src/components/common/VoteHeader.tsx b/vote/src/components/common/VoteHeader.tsx
index cc80e77..388728f 100644
--- a/vote/src/components/common/VoteHeader.tsx
+++ b/vote/src/components/common/VoteHeader.tsx
@@ -1,10 +1,17 @@
import { LogoIc } from "@assets/index";
import styled from "styled-components";
import SignBtn from "@components/common/SignBtn";
+import { useNavigate } from "react-router-dom";
-const LogoIcon = styled(LogoIc)`
+const LogoWrapper = styled.div`
width: 10.75rem;
height: 4.5625rem;
+ cursor: pointer;
+`;
+
+const LogoIcon = styled(LogoIc)`
+ width: 100%;
+ height: 100%;
`;
const HeaderContainer = styled.section`
@@ -34,10 +41,13 @@ const UserName = styled.p`
export default function VoteHeader() {
const savedData = localStorage.getItem("INFO");
const info = savedData ? JSON.parse(savedData) : [];
+ const navigate = useNavigate();
return (
-
+ navigate("/vote/main")}>
+
+
{info} 님
diff --git a/vote/src/pages/Vote/SelectPart.tsx b/vote/src/pages/Vote/SelectPart.tsx
index c17967a..755e541 100644
--- a/vote/src/pages/Vote/SelectPart.tsx
+++ b/vote/src/pages/Vote/SelectPart.tsx
@@ -19,11 +19,19 @@ const HeaderText = styled.h1`
display: flex;
justify-content: center;
margin-top: 12.5rem;
- margin-bottom: 8.2rem;
${({ theme }) => theme.fonts.Headline1};
`;
+const SubTitleText = styled.h2`
+ display: flex;
+ justify-content: center;
+ margin-bottom: 5rem;
+
+ ${({ theme }) => theme.fonts.TeamName_Small};
+ color: ${({ theme }) => theme.colors.confirm};
+`;
+
const VoteWrappers = styled.section`
display: flex;
gap: 10rem;
@@ -44,6 +52,7 @@ export default function VotePart() {
파트장 투표
+ * 본인 파트 + 한 번 투표할 수 있습니다
Date: Wed, 26 Jun 2024 00:51:48 +0900
Subject: [PATCH 57/72] =?UTF-8?q?feat:=20postVote=20response=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/api/postVote.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/vote/src/api/postVote.ts b/vote/src/api/postVote.ts
index e91bab0..05479a4 100644
--- a/vote/src/api/postVote.ts
+++ b/vote/src/api/postVote.ts
@@ -8,5 +8,5 @@ export async function postVote(props: postVoteTypes) {
votingOptionId: votingOptionId,
});
- return response;
+ return response?.data.data;
}
From 3fe021147a6508cf7b9273cf76a195659093cd14 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Wed, 26 Jun 2024 16:33:48 +0900
Subject: [PATCH 58/72] =?UTF-8?q?feat:=20=ED=88=AC=ED=91=9C=ED=8E=98?=
=?UTF-8?q?=EC=9D=B4=EC=A7=80=20=ED=88=AC=ED=91=9C=20=EC=8B=A4=ED=8C=A8=20?=
=?UTF-8?q?=EC=8B=9C=20alert=20=EC=B0=BD=20=EC=B6=9C=EB=A0=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/hooks/usePostVote.ts | 22 ++++++++++++++++++++--
vote/src/pages/Vote/VoteFront.tsx | 1 -
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/vote/src/hooks/usePostVote.ts b/vote/src/hooks/usePostVote.ts
index 551f1a5..ffc5723 100644
--- a/vote/src/hooks/usePostVote.ts
+++ b/vote/src/hooks/usePostVote.ts
@@ -10,8 +10,26 @@ export function usePostVote() {
console.log("투표 성공");
navigate("/vote/main");
},
- onError: (error) => {
- console.log("투표 실패", error);
+ onError: (error: any) => {
+ // AxiosError 객체에서 response.data를 추출하여 접근
+ if (error.response && error.response.data) {
+ const errorData = error.response.data;
+ if (
+ errorData.success === false &&
+ errorData.success_or_error_code &&
+ errorData.success_or_error_code.status === 400
+ ) {
+ const message = errorData.success_or_error_code.message;
+ console.log(message);
+ alert(message); // alert 창으로 메시지 출력
+ } else {
+ console.log("투표 실패", error);
+ alert("투표에 실패하였습니다.");
+ }
+ } else {
+ console.log("투표 실패", error);
+ alert("투표에 실패하였습니다.");
+ }
},
});
}
diff --git a/vote/src/pages/Vote/VoteFront.tsx b/vote/src/pages/Vote/VoteFront.tsx
index 17e1719..14e83bd 100644
--- a/vote/src/pages/Vote/VoteFront.tsx
+++ b/vote/src/pages/Vote/VoteFront.tsx
@@ -60,7 +60,6 @@ export default function VoteFront() {
};
const handleSubmit = () => {
- console.log("투표 완료", selectedFront);
if (selectedFront !== null) {
postVoteMutate({
topicId: 1,
From 69cdd13f8e2f9de4a45cdfc4171beb493d55015c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Wed, 26 Jun 2024 17:45:09 +0900
Subject: [PATCH 59/72] =?UTF-8?q?refactor:=20VoteFront=EC=99=80=20VoteBack?=
=?UTF-8?q?=EC=9D=84=20VotePart=EB=A1=9C=20=ED=86=B5=ED=95=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/Vote/VoteBack.tsx | 97 -------------------
.../Vote/{VoteFront.tsx => VotePart.tsx} | 36 +++----
vote/src/router.tsx | 6 +-
3 files changed, 21 insertions(+), 118 deletions(-)
delete mode 100644 vote/src/pages/Vote/VoteBack.tsx
rename vote/src/pages/Vote/{VoteFront.tsx => VotePart.tsx} (71%)
diff --git a/vote/src/pages/Vote/VoteBack.tsx b/vote/src/pages/Vote/VoteBack.tsx
deleted file mode 100644
index 6e5525b..0000000
--- a/vote/src/pages/Vote/VoteBack.tsx
+++ /dev/null
@@ -1,97 +0,0 @@
-import { useState } from "react";
-import VoteHeader from "@components/common/VoteHeader";
-import VoteWrapper from "@components/common/VoteWrapper";
-import VoteBtn from "@components/common/VoteBtn";
-import { useNavigate } from "react-router-dom";
-import styled from "styled-components";
-import { useGetVotingOptionsById } from "@hooks/useGetVotingOptionsById";
-import { usePostVote } from "@hooks/usePostVote";
-
-const Section = styled.section`
- display: flex;
- flex-direction: column;
-`;
-
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
-const HeaderText = styled.h1`
- display: flex;
- justify-content: center;
- margin-top: 10.9rem;
- margin-bottom: 4.3rem;
-
- ${({ theme }) => theme.fonts.Headline1};
-`;
-
-const VoteWrappers = styled.section`
- display: flex;
- justify-content: center;
- gap: 3.2rem 5.4rem;
- flex-wrap: wrap;
- margin-bottom: 8.5rem;
-`;
-
-const TeamNameMidText = styled.span`
- ${({ theme }) => theme.fonts.TeamName_Mid};
-`;
-
-const ButtonWrapper = styled.section`
- display: flex;
- justify-content: space-between;
- gap: 1.3rem;
-`;
-
-export default function VoteBack() {
- const navigate = useNavigate();
- const [selectedBack, setSelectedBack] = useState(null);
- const { data } = useGetVotingOptionsById(2);
- const { mutate: postVoteMutate } = usePostVote();
-
- const handleSelected = (itemKey: any) => {
- if (selectedBack === itemKey) {
- setSelectedBack(null);
- } else {
- setSelectedBack(itemKey);
- }
- };
-
- const handleSubmit = () => {
- if (selectedBack !== null) {
- postVoteMutate({
- topicId: 2,
- votingOptionId: selectedBack,
- });
- } else {
- console.error("선택된 항목이 없습니다.");
- }
- };
-
- if (data) {
- return (
-
-
-
- BE 파트장 투표
-
- {data.map((item) => (
- handleSelected(item.id)}
- $isSelected={selectedBack === item.id}>
- {item.name}
-
- ))}
-
-
-
- navigate("/result/back")} />
-
-
-
- );
- }
-}
diff --git a/vote/src/pages/Vote/VoteFront.tsx b/vote/src/pages/Vote/VotePart.tsx
similarity index 71%
rename from vote/src/pages/Vote/VoteFront.tsx
rename to vote/src/pages/Vote/VotePart.tsx
index 14e83bd..c27e5f5 100644
--- a/vote/src/pages/Vote/VoteFront.tsx
+++ b/vote/src/pages/Vote/VotePart.tsx
@@ -1,9 +1,9 @@
import { useState } from "react";
+import { useNavigate, useParams } from "react-router-dom";
+import styled from "styled-components";
import VoteHeader from "@components/common/VoteHeader";
import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
-import { useNavigate } from "react-router-dom";
-import styled from "styled-components";
import { useGetVotingOptionsById } from "@hooks/useGetVotingOptionsById";
import { usePostVote } from "@hooks/usePostVote";
@@ -45,25 +45,23 @@ const ButtonWrapper = styled.section`
gap: 1.3rem;
`;
-export default function VoteFront() {
+export default function Vote() {
+ const { type } = useParams(); // useParams 훅을 통해 type 값을 받아와서 topicId와 HeaderText를 조건부로 설정
const navigate = useNavigate();
- const [selectedFront, setSelectedFront] = useState(null);
- const { data } = useGetVotingOptionsById(1);
+ const [selected, setSelected] = useState(null);
+ const topicId = type === "front" ? 1 : 2;
+ const { data } = useGetVotingOptionsById(topicId);
const { mutate: postVoteMutate } = usePostVote();
const handleSelected = (itemKey: any) => {
- if (selectedFront === itemKey) {
- setSelectedFront(null);
- } else {
- setSelectedFront(itemKey);
- }
+ setSelected(selected === itemKey ? null : itemKey);
};
const handleSubmit = () => {
- if (selectedFront !== null) {
+ if (selected !== null) {
postVoteMutate({
- topicId: 1,
- votingOptionId: selectedFront,
+ topicId,
+ votingOptionId: selected,
});
} else {
console.error("선택된 항목이 없습니다.");
@@ -75,13 +73,15 @@ export default function VoteFront() {
- FE 파트장 투표
+
+ {type === "front" ? "FE 파트장 투표" : "BE 파트장 투표"}
+
- {data.map((item: any) => (
+ {data.map((item) => (
handleSelected(item.id)}
- $isSelected={selectedFront === item.id}>
+ $isSelected={selected === item.id}>
{item.name}
))}
@@ -90,11 +90,13 @@ export default function VoteFront() {
navigate("/result/front")}
+ onClick={() => navigate(`/result/${type}`)}
/>
);
}
+
+ return null;
}
diff --git a/vote/src/router.tsx b/vote/src/router.tsx
index 43cc147..0ac73ec 100644
--- a/vote/src/router.tsx
+++ b/vote/src/router.tsx
@@ -7,9 +7,8 @@ import VoteLayout from "@components/layout/VoteLayout";
import VoteMain from "@pages/Vote/VoteMain";
import SelectPart from "@pages/Vote/SelectPart";
import SelectDemo from "@pages/Vote/SelectDemo";
-import VoteFront from "@pages/Vote/VoteFront";
-import VoteBack from "@pages/Vote/VoteBack";
import VoteDemo from "@pages/Vote/VoteDemo";
+import VotePart from "@pages/Vote/VotePart";
import ResultLayout from "@components/layout/VoteLayout";
import ResultFront from "@pages/Result/ResultFront";
import ResultBack from "@pages/Result/ResultBack";
@@ -31,8 +30,7 @@ export const Router = createBrowserRouter([
{ path: "/vote/main", element: },
{ path: "/vote/select/part", element: },
{ path: "/vote/select/demo", element: },
- { path: "/vote/front", element: },
- { path: "/vote/back", element: },
+ { path: "/vote/:type", element: },
{ path: "/vote/demo", element: },
],
},
From 850c1d9fc919b939acff75da772fe4698a24c4f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Wed, 26 Jun 2024 17:53:39 +0900
Subject: [PATCH 60/72] =?UTF-8?q?refactor:=20ResultFront=EC=99=80=20Result?=
=?UTF-8?q?Back=EC=9D=84=20ResultPart=EB=A1=9C=20=ED=86=B5=ED=95=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/Result/ResultFront.tsx | 109 ------------------
.../Result/{ResultBack.tsx => ResultPart.tsx} | 14 ++-
vote/src/pages/Vote/VotePart.tsx | 2 +-
vote/src/router.tsx | 8 +-
4 files changed, 13 insertions(+), 120 deletions(-)
delete mode 100644 vote/src/pages/Result/ResultFront.tsx
rename vote/src/pages/Result/{ResultBack.tsx => ResultPart.tsx} (88%)
diff --git a/vote/src/pages/Result/ResultFront.tsx b/vote/src/pages/Result/ResultFront.tsx
deleted file mode 100644
index 916ab65..0000000
--- a/vote/src/pages/Result/ResultFront.tsx
+++ /dev/null
@@ -1,109 +0,0 @@
-import VoteHeader from "@components/common/VoteHeader";
-import VoteWrapper from "@components/common/VoteWrapper";
-import VoteBtn from "@components/common/VoteBtn";
-import { useNavigate } from "react-router-dom";
-import styled from "styled-components";
-import { useGetFinalResult } from "@hooks/useGetFinalResult";
-
-const Section = styled.section`
- display: flex;
- flex-direction: column;
-`;
-
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
-const HeaderText = styled.h1`
- display: flex;
- justify-content: center;
- margin-top: 7.1rem;
- margin-bottom: 3.3rem;
-
- ${({ theme }) => theme.fonts.Headline1};
-`;
-
-const VoteWrappers = styled.section`
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-items: center;
- height: 50.1rem;
- flex-wrap: wrap;
- gap: 1.9rem 4.8rem;
- margin-bottom: 7.4rem;
-`;
-
-const TextWrapper = styled.div`
- display: flex;
- width: 42.7rem;
- justify-content: space-between;
-`;
-
-const LeftTextWrapper = styled.div`
- display: flex;
- gap: 2.7rem;
- align-items: center;
-`;
-
-const TeamNameMidText = styled.span`
- ${({ theme }) => theme.fonts.TeamName_Mid};
-`;
-
-const CountText = styled.span`
- ${({ theme }) => theme.fonts.Count};
-`;
-
-const RankBox = styled.div`
- ${({ theme }) => theme.fonts.Rank};
- display: inline-flex;
- height: 5.8rem;
- padding: 0rem 2rem;
- justify-content: center;
- align-items: center;
- border-radius: 1rem;
- border: 0.1rem solid ${({ theme }) => theme.colors.main_blue};
- background: ${({ theme }) => theme.colors.main_blue};
-`;
-
-export default function ResultFront() {
- const navigate = useNavigate();
- const { data } = useGetFinalResult(1);
-
- if (data) {
- // votingOptionCount 기준으로 data를 내림차순 정렬
- const sortedData = [...data].sort(
- (a, b) => b.votingOptionCount - a.votingOptionCount,
- );
-
- return (
-
-
-
- FE 파트장 투표 결과
-
- {sortedData.map((item, index) => (
-
-
-
- {index + 1}
- {item.votingOptionName}
-
- {item.votingOptionCount}
-
-
- ))}
-
- navigate("/vote/main")} />
-
-
- );
- }
-}
diff --git a/vote/src/pages/Result/ResultBack.tsx b/vote/src/pages/Result/ResultPart.tsx
similarity index 88%
rename from vote/src/pages/Result/ResultBack.tsx
rename to vote/src/pages/Result/ResultPart.tsx
index 5eb0917..dbc2fc4 100644
--- a/vote/src/pages/Result/ResultBack.tsx
+++ b/vote/src/pages/Result/ResultPart.tsx
@@ -1,8 +1,8 @@
+import { useNavigate, useParams } from "react-router-dom";
+import styled from "styled-components";
import VoteHeader from "@components/common/VoteHeader";
import VoteWrapper from "@components/common/VoteWrapper";
import VoteBtn from "@components/common/VoteBtn";
-import { useNavigate } from "react-router-dom";
-import styled from "styled-components";
import { useGetFinalResult } from "@hooks/useGetFinalResult";
const Section = styled.section`
@@ -68,9 +68,11 @@ const RankBox = styled.div`
background: ${({ theme }) => theme.colors.main_blue};
`;
-export default function ResultBack() {
+export default function ResultPart() {
+ const { type } = useParams();
const navigate = useNavigate();
- const { data } = useGetFinalResult(2);
+ const topicId = type === "front" ? 1 : 2;
+ const { data } = useGetFinalResult(topicId);
if (data) {
// votingOptionCount 기준으로 data를 내림차순 정렬
@@ -82,7 +84,9 @@ export default function ResultBack() {
- BE 파트장 투표 결과
+
+ {type === "front" ? "FE 파트장 투표 결과" : "BE 파트장 투표 결과"}
+
{sortedData.map((item, index) => (
,
children: [
- { path: "/result/front", element: },
- { path: "/result/back", element: },
+ { path: "/result/:type", element: },
{ path: "/result/demo", element: },
],
},
From f554750af8ad60768c4f90b8e8502f618794e44d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Wed, 26 Jun 2024 18:05:09 +0900
Subject: [PATCH 61/72] =?UTF-8?q?etc:=20=EC=A3=BC=EC=84=9D=20=EC=B6=94?=
=?UTF-8?q?=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/Result/ResultPart.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/vote/src/pages/Result/ResultPart.tsx b/vote/src/pages/Result/ResultPart.tsx
index dbc2fc4..a17bfce 100644
--- a/vote/src/pages/Result/ResultPart.tsx
+++ b/vote/src/pages/Result/ResultPart.tsx
@@ -69,7 +69,7 @@ const RankBox = styled.div`
`;
export default function ResultPart() {
- const { type } = useParams();
+ const { type } = useParams(); // useParams 훅을 통해 type 값을 받아와서 topicId와 HeaderText를 조건부로 설정
const navigate = useNavigate();
const topicId = type === "front" ? 1 : 2;
const { data } = useGetFinalResult(topicId);
From 7b289b3b0ea4d76e1c659a606791873a57ba76f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Wed, 26 Jun 2024 21:01:32 +0900
Subject: [PATCH 62/72] =?UTF-8?q?feat:=20=ED=95=9C=20topic=EC=9D=98=20?=
=?UTF-8?q?=ED=88=AC=ED=91=9C=20=EC=84=A0=ED=83=9D=EC=A7=80=20=EB=B0=98?=
=?UTF-8?q?=ED=99=98=EC=97=90=EC=84=9C=20=EC=97=90=EB=9F=AC=20alert=20?=
=?UTF-8?q?=EC=B0=BD=EC=9C=BC=EB=A1=9C=20=EC=B6=9C=EB=A0=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/hooks/useGetVotingOptionsById.ts | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/vote/src/hooks/useGetVotingOptionsById.ts b/vote/src/hooks/useGetVotingOptionsById.ts
index b09b902..4f14fdb 100644
--- a/vote/src/hooks/useGetVotingOptionsById.ts
+++ b/vote/src/hooks/useGetVotingOptionsById.ts
@@ -7,11 +7,20 @@ export function useGetVotingOptionsById(topicID: number) {
["getVotingOptionsById", topicID],
() => getVotingOptionsById(topicID),
{
- onError: (error) => {
- console.log(
- "해당 Topic 또는 Voting Option이 존재하지 않습니다.",
- error,
- );
+ onError: (error: any) => {
+ // AxiosError 객체에서 response.data를 추출하여 접근
+ if (error.response && error.response.data) {
+ const errorData = error.response.data;
+ if (
+ errorData.success === false &&
+ errorData.success_or_error_code &&
+ errorData.success_or_error_code.status === 400
+ ) {
+ const message = errorData.success_or_error_code.message;
+ console.log(message);
+ alert(message); // alert 창으로 메시지 출력
+ }
+ }
},
},
);
From e856fe8cc052d71505f62ad291293c3ed3c37fb0 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 27 Jun 2024 11:52:47 +0900
Subject: [PATCH 63/72] =?UTF-8?q?etc:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?=
=?UTF-8?q?=EC=95=88=ED=95=B4=EB=8F=84=20=EA=B2=B0=EA=B3=BC=EB=8A=94=20?=
=?UTF-8?q?=EB=B3=B4=EC=9D=B4=EA=B2=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/VoteHeader.tsx | 7 +++++--
vote/src/router.tsx | 2 +-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/vote/src/components/common/VoteHeader.tsx b/vote/src/components/common/VoteHeader.tsx
index 388728f..553ca34 100644
--- a/vote/src/components/common/VoteHeader.tsx
+++ b/vote/src/components/common/VoteHeader.tsx
@@ -43,14 +43,17 @@ export default function VoteHeader() {
const info = savedData ? JSON.parse(savedData) : [];
const navigate = useNavigate();
+ console.log(info);
+
return (
navigate("/vote/main")}>
- {info} 님
-
+ {info && {info} 님}
+ {!info && }
+ {!info && }
);
diff --git a/vote/src/router.tsx b/vote/src/router.tsx
index a92e4e2..390c470 100644
--- a/vote/src/router.tsx
+++ b/vote/src/router.tsx
@@ -19,7 +19,7 @@ export const Router = createBrowserRouter([
element: ,
errorElement: ,
children: [
- { index: true, element: },
+ { index: true, element: },
{ path: "/signin", element: },
{ path: "/signup", element: },
{
From 75147dee3e6f54e7771de2983790e828421298a1 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 27 Jun 2024 13:48:37 +0900
Subject: [PATCH 64/72] =?UTF-8?q?feat:=20=EA=B2=B0=EA=B3=BC=EB=A7=8C=20?=
=?UTF-8?q?=EB=B3=B4=EC=97=AC=EC=A3=BC=EA=B8=B0=20=ED=8E=98=EC=9D=B4?=
=?UTF-8?q?=EC=A7=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../components/layout/ResultsOnlyLayout.tsx | 41 +++++++++++
vote/src/pages/ResultsOnly/ResultsOnly.tsx | 72 +++++++++++++++++++
.../src/pages/ResultsOnly/ResultsOnlyDemo.tsx | 10 +++
.../src/pages/ResultsOnly/ResultsOnlyPart.tsx | 10 +++
4 files changed, 133 insertions(+)
create mode 100644 vote/src/components/layout/ResultsOnlyLayout.tsx
create mode 100644 vote/src/pages/ResultsOnly/ResultsOnly.tsx
create mode 100644 vote/src/pages/ResultsOnly/ResultsOnlyDemo.tsx
create mode 100644 vote/src/pages/ResultsOnly/ResultsOnlyPart.tsx
diff --git a/vote/src/components/layout/ResultsOnlyLayout.tsx b/vote/src/components/layout/ResultsOnlyLayout.tsx
new file mode 100644
index 0000000..9df2ebd
--- /dev/null
+++ b/vote/src/components/layout/ResultsOnlyLayout.tsx
@@ -0,0 +1,41 @@
+import { useNavigate } from "react-router-dom";
+import styled from "styled-components";
+import { LogoIc } from "@assets/index";
+import VoteBtn from "@components/common/VoteBtn";
+
+const LogoWrapper = styled.div`
+ width: 10.75rem;
+ height: 4.5625rem;
+ cursor: pointer;
+`;
+
+const LogoIcon = styled(LogoIc)`
+ width: 100%;
+ height: 100%;
+`;
+
+const BtnWrapper = styled.div`
+ display: flex;
+ justify-content: center;
+`;
+
+/** RootLayout */
+export default function ResultsOnlyLayout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ const navigate = useNavigate();
+
+ return (
+ <>
+ navigate("/signin")}>
+
+
+ <>{children}>
+
+ navigate("/signin")} />
+
+ >
+ );
+}
diff --git a/vote/src/pages/ResultsOnly/ResultsOnly.tsx b/vote/src/pages/ResultsOnly/ResultsOnly.tsx
new file mode 100644
index 0000000..0e3b9f0
--- /dev/null
+++ b/vote/src/pages/ResultsOnly/ResultsOnly.tsx
@@ -0,0 +1,72 @@
+import styled from "styled-components";
+import { useNavigate } from "react-router-dom";
+import ResultsOnlyLayout from "@components/layout/ResultsOnlyLayout";
+
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+`;
+
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+
+ padding: 0 5rem 5rem;
+`;
+
+const HeaderText = styled.h1`
+ display: flex;
+ justify-content: center;
+ margin-top: 8.2rem;
+ margin-bottom: 8.2rem;
+
+ ${({ theme }) => theme.fonts.Headline1};
+`;
+
+const VoteWrappers = styled.section`
+ display: flex;
+ gap: 5rem;
+ justify-content: space-between;
+`;
+
+const VoteWrapper = styled.button`
+ width: 30rem;
+ height: 30rem;
+
+ ${({ theme }) => theme.fonts.Headline2};
+ background-color: ${({ theme }) => theme.colors.white};
+ border-radius: 2rem;
+ border: 1px solid ${({ theme }) => theme.colors.main_blue};
+`;
+
+export default function ResultsOnly() {
+ const navigate = useNavigate();
+
+ return (
+
+
+
+ 결과 보기
+
+ navigate("/results-only/front")}>
+ FE 파트장 투표결과
+
+ 바로가기
+
+ navigate("/results-only/back")}>
+ BE 파트장 투표결과
+
+ 바로가기
+
+ navigate("/results-only/demo")}>
+ 데모데이 투표결과
+
+ 바로가기
+
+
+
+
+
+ );
+}
diff --git a/vote/src/pages/ResultsOnly/ResultsOnlyDemo.tsx b/vote/src/pages/ResultsOnly/ResultsOnlyDemo.tsx
new file mode 100644
index 0000000..1906637
--- /dev/null
+++ b/vote/src/pages/ResultsOnly/ResultsOnlyDemo.tsx
@@ -0,0 +1,10 @@
+import ResultsOnlyLayout from "@components/layout/ResultsOnlyLayout";
+import Demo from "@components/result/Demo";
+
+export default function ResultsOnlyDemo() {
+ return (
+
+
+
+ );
+}
diff --git a/vote/src/pages/ResultsOnly/ResultsOnlyPart.tsx b/vote/src/pages/ResultsOnly/ResultsOnlyPart.tsx
new file mode 100644
index 0000000..db268a5
--- /dev/null
+++ b/vote/src/pages/ResultsOnly/ResultsOnlyPart.tsx
@@ -0,0 +1,10 @@
+import ResultsOnlyLayout from "@components/layout/ResultsOnlyLayout";
+import Part from "@components/result/Part";
+
+export default function ResultsOnlyPart() {
+ return (
+
+
+
+ );
+}
From 9dade54c1a8c2e0042a540deb4ff49c3440ea93e Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 27 Jun 2024 13:49:03 +0900
Subject: [PATCH 65/72] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?=
=?UTF-8?q?=ED=9B=84=20=EA=B2=B0=EA=B3=BC=EC=B0=BD=EA=B3=BC=20=EA=B2=B0?=
=?UTF-8?q?=EA=B3=BC=EB=A7=8C=EB=B3=B4=EC=97=AC=EC=A3=BC=EA=B8=B0=20?=
=?UTF-8?q?=EB=B6=84=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/layout/ResultLayout.tsx | 16 ++-
vote/src/pages/Result/ResultDemo.tsx | 114 ++----------------
vote/src/pages/Result/ResultPart.tsx | 121 ++------------------
vote/src/router.tsx | 22 ++--
4 files changed, 41 insertions(+), 232 deletions(-)
diff --git a/vote/src/components/layout/ResultLayout.tsx b/vote/src/components/layout/ResultLayout.tsx
index 08320b7..fe861fc 100644
--- a/vote/src/components/layout/ResultLayout.tsx
+++ b/vote/src/components/layout/ResultLayout.tsx
@@ -1,9 +1,19 @@
-import { Outlet } from "react-router-dom";
+import { useNavigate } from "react-router-dom";
+import VoteHeader from "@components/common/VoteHeader";
+import VoteBtn from "@components/common/VoteBtn";
+
+export default function ResultLayout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ const navigate = useNavigate();
-export default function VoteLayout() {
return (
<>
-
+
+ <>{children}>
+ navigate("/vote/main")} />
>
);
}
diff --git a/vote/src/pages/Result/ResultDemo.tsx b/vote/src/pages/Result/ResultDemo.tsx
index 212fbaf..e1ea68e 100644
--- a/vote/src/pages/Result/ResultDemo.tsx
+++ b/vote/src/pages/Result/ResultDemo.tsx
@@ -1,110 +1,10 @@
-import VoteHeader from "@components/common/VoteHeader";
-import VoteWrapper from "@components/common/VoteWrapper";
-import VoteBtn from "@components/common/VoteBtn";
-import { useNavigate } from "react-router-dom";
-import styled from "styled-components";
-import { useGetFinalResult } from "@hooks/useGetFinalResult";
-
-const Section = styled.section`
- display: flex;
- flex-direction: column;
-`;
-
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
-const HeaderText = styled.h1`
- display: flex;
- justify-content: center;
- margin-top: 6.8rem;
- margin-bottom: 4.9rem;
-
- ${({ theme }) => theme.fonts.Headline1};
-`;
-
-const VoteWrappers = styled.section`
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-items: center;
- height: 50.1rem;
- flex-wrap: wrap;
- gap: 1.9rem 4.8rem;
- margin-bottom: 7.4rem;
-`;
-
-const TextWrapper = styled.div`
- display: flex;
- width: 65.7rem;
- justify-content: space-between;
-`;
-
-const LeftTextWrapper = styled.div`
- display: flex;
- gap: 5.73rem;
- align-items: center;
-`;
-
-const TeamNameMidText = styled.span`
- ${({ theme }) => theme.fonts.TeamName_Mid};
-`;
-
-const CountText = styled.span`
- ${({ theme }) => theme.fonts.Count};
-`;
-
-const RankBox = styled.div`
- ${({ theme }) => theme.fonts.Rank};
- display: inline-flex;
- width: 5.23rem;
- height: 5.8rem;
- padding: 0rem 2rem;
- justify-content: center;
- align-items: center;
- border-radius: 1rem;
- border: 0.1rem solid ${({ theme }) => theme.colors.main_blue};
- background: ${({ theme }) => theme.colors.main_blue};
-`;
+import ResultLayout from "@components/layout/ResultLayout";
+import Demo from "@components/result/Demo";
export default function ResultDemo() {
- const navigate = useNavigate();
- const { data } = useGetFinalResult(3);
-
- if (data) {
- // votingOptionCount 기준으로 data를 내림차순 정렬
- const sortedData = [...data].sort(
- (a, b) => b.votingOptionCount - a.votingOptionCount,
- );
-
- return (
-
-
-
- BE 파트장 투표 결과
-
- {sortedData.map((item, index) => (
-
-
-
- {index + 1}
- {item.votingOptionName}
-
- {item.votingOptionCount}
-
-
- ))}
-
- navigate("/vote/main")} />
-
-
- );
- }
+ return (
+
+
+
+ );
}
diff --git a/vote/src/pages/Result/ResultPart.tsx b/vote/src/pages/Result/ResultPart.tsx
index a17bfce..1c45661 100644
--- a/vote/src/pages/Result/ResultPart.tsx
+++ b/vote/src/pages/Result/ResultPart.tsx
@@ -1,113 +1,10 @@
-import { useNavigate, useParams } from "react-router-dom";
-import styled from "styled-components";
-import VoteHeader from "@components/common/VoteHeader";
-import VoteWrapper from "@components/common/VoteWrapper";
-import VoteBtn from "@components/common/VoteBtn";
-import { useGetFinalResult } from "@hooks/useGetFinalResult";
-
-const Section = styled.section`
- display: flex;
- flex-direction: column;
-`;
-
-const CenterWrapper = styled.section`
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
-const HeaderText = styled.h1`
- display: flex;
- justify-content: center;
- margin-top: 7.1rem;
- margin-bottom: 3.3rem;
-
- ${({ theme }) => theme.fonts.Headline1};
-`;
-
-const VoteWrappers = styled.section`
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- align-items: center;
- height: 50.1rem;
- flex-wrap: wrap;
- gap: 1.9rem 4.8rem;
- margin-bottom: 7.4rem;
-`;
-
-const TextWrapper = styled.div`
- display: flex;
- width: 42.7rem;
- justify-content: space-between;
-`;
-
-const LeftTextWrapper = styled.div`
- display: flex;
- gap: 2.7rem;
- align-items: center;
-`;
-
-const TeamNameMidText = styled.span`
- ${({ theme }) => theme.fonts.TeamName_Mid};
-`;
-
-const CountText = styled.span`
- ${({ theme }) => theme.fonts.Count};
-`;
-
-const RankBox = styled.div`
- ${({ theme }) => theme.fonts.Rank};
- display: inline-flex;
- height: 5.8rem;
- padding: 0rem 2rem;
- justify-content: center;
- align-items: center;
- border-radius: 1rem;
- border: 0.1rem solid ${({ theme }) => theme.colors.main_blue};
- background: ${({ theme }) => theme.colors.main_blue};
-`;
-
-export default function ResultPart() {
- const { type } = useParams(); // useParams 훅을 통해 type 값을 받아와서 topicId와 HeaderText를 조건부로 설정
- const navigate = useNavigate();
- const topicId = type === "front" ? 1 : 2;
- const { data } = useGetFinalResult(topicId);
-
- if (data) {
- // votingOptionCount 기준으로 data를 내림차순 정렬
- const sortedData = [...data].sort(
- (a, b) => b.votingOptionCount - a.votingOptionCount,
- );
-
- return (
-
-
-
-
- {type === "front" ? "FE 파트장 투표 결과" : "BE 파트장 투표 결과"}
-
-
- {sortedData.map((item, index) => (
-
-
-
- {index + 1}
- {item.votingOptionName}
-
- {item.votingOptionCount}
-
-
- ))}
-
- navigate("/vote/main")} />
-
-
- );
- }
+import ResultLayout from "@components/layout/ResultLayout";
+import Part from "@components/result/Part";
+
+export default function ResultDemo() {
+ return (
+
+
+
+ );
}
diff --git a/vote/src/router.tsx b/vote/src/router.tsx
index 390c470..378704a 100644
--- a/vote/src/router.tsx
+++ b/vote/src/router.tsx
@@ -9,9 +9,11 @@ import SelectPart from "@pages/Vote/SelectPart";
import SelectDemo from "@pages/Vote/SelectDemo";
import VotePart from "@pages/Vote/VotePart";
import VoteDemo from "@pages/Vote/VoteDemo";
-import ResultLayout from "@components/layout/VoteLayout";
import ResultPart from "@pages/Result/ResultPart";
import ResultDemo from "@pages/Result/ResultDemo";
+import ResultsOnly from "@pages/ResultsOnly/ResultsOnly";
+import ResultsOnlyDemo from "@pages/ResultsOnly/ResultsOnlyDemo";
+import ResultsOnlyPart from "@pages/ResultsOnly/ResultsOnlyPart";
export const Router = createBrowserRouter([
{
@@ -19,9 +21,14 @@ export const Router = createBrowserRouter([
element: ,
errorElement: ,
children: [
- { index: true, element: },
+ { index: true, element: },
{ path: "/signin", element: },
{ path: "/signup", element: },
+
+ { path: "/results-only", element: },
+ { path: "/results-only/demo", element: },
+ { path: "results-only/:type", element: },
+
{
path: "/vote",
element: ,
@@ -33,14 +40,9 @@ export const Router = createBrowserRouter([
{ path: "/vote/demo", element: },
],
},
- {
- path: "/result",
- element: ,
- children: [
- { path: "/result/:type", element: },
- { path: "/result/demo", element: },
- ],
- },
+
+ { path: "/result/:type", element: },
+ { path: "/result/demo", element: },
],
},
]);
From 8425e957fa98cf42f46956d16765839d90b0d964 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 27 Jun 2024 13:50:09 +0900
Subject: [PATCH 66/72] =?UTF-8?q?design:=20=EB=B2=84=ED=8A=BC=20=EC=8A=A4?=
=?UTF-8?q?=ED=83=80=EC=9D=BC=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/common/VoteBtn.tsx | 13 ++++++++++---
vote/src/components/common/VoteHeader.tsx | 7 +------
vote/src/pages/SignIn.tsx | 21 ++++++++++++++++++++-
3 files changed, 31 insertions(+), 10 deletions(-)
diff --git a/vote/src/components/common/VoteBtn.tsx b/vote/src/components/common/VoteBtn.tsx
index 3c8591e..58e96ce 100644
--- a/vote/src/components/common/VoteBtn.tsx
+++ b/vote/src/components/common/VoteBtn.tsx
@@ -6,6 +6,11 @@ interface VoteBtnProps {
text: string;
}
+const Wrapper = styled.section`
+ display: flex;
+ justify-content: center;
+`;
+
const Button = styled(BtnMid)<{
width?: string;
height?: string;
@@ -21,8 +26,10 @@ export default function VoteBtn(props: VoteBtnProps) {
const $seeResult = text === "결과보기";
return (
-
- {text}
-
+
+
+ {text}
+
+
);
}
diff --git a/vote/src/components/common/VoteHeader.tsx b/vote/src/components/common/VoteHeader.tsx
index 553ca34..c0d674a 100644
--- a/vote/src/components/common/VoteHeader.tsx
+++ b/vote/src/components/common/VoteHeader.tsx
@@ -1,6 +1,5 @@
import { LogoIc } from "@assets/index";
import styled from "styled-components";
-import SignBtn from "@components/common/SignBtn";
import { useNavigate } from "react-router-dom";
const LogoWrapper = styled.div`
@@ -50,11 +49,7 @@ export default function VoteHeader() {
navigate("/vote/main")}>
-
- {info && {info} 님}
- {!info && }
- {!info && }
-
+ {info && {info} 님}
);
}
diff --git a/vote/src/pages/SignIn.tsx b/vote/src/pages/SignIn.tsx
index f0d65c3..d52b060 100644
--- a/vote/src/pages/SignIn.tsx
+++ b/vote/src/pages/SignIn.tsx
@@ -12,6 +12,11 @@ const Wrapper = styled.div`
padding: 14.5rem 20.25rem;
`;
+const Container = styled.div`
+ display: flex;
+ justify-content: space-between;
+`;
+
const Header = styled.h1`
${({ theme }) => theme.fonts.Headline2};
`;
@@ -41,6 +46,15 @@ const SignInBtn = styled(BtnSign)`
height: 3.625rem;
`;
+const ShowResultBtn = styled.button`
+ width: 25rem;
+ height: 5rem;
+
+ color: ${({ theme }) => theme.colors.black};
+ ${({ theme }) => theme.fonts.TeamDetail};
+ background-color: ${({ theme }) => theme.colors.active};
+`;
+
export default function SignIn() {
const [ID, setId] = useState("");
const [PW, setPw] = useState("");
@@ -65,7 +79,12 @@ export default function SignIn() {
return (
-
+
+
+ navigate("/results-only")}>
+ 결과만 보기
+
+
From 0943ebacbcb3c40237e1cbbe841a1b8cadaa321c Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 27 Jun 2024 13:50:26 +0900
Subject: [PATCH 67/72] =?UTF-8?q?feat:=20Layout=20=EB=B9=BC=EA=B3=A0=20?=
=?UTF-8?q?=EA=B2=B0=EA=B3=BC=EB=A7=8C=20=EB=B3=B4=EC=97=AC=EC=A3=BC?=
=?UTF-8?q?=EB=8A=94=20=EA=B2=83=EC=9D=84=20=EB=B6=84=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/result/Demo.tsx | 104 +++++++++++++++++++++++++++
vote/src/components/result/Part.tsx | 108 ++++++++++++++++++++++++++++
2 files changed, 212 insertions(+)
create mode 100644 vote/src/components/result/Demo.tsx
create mode 100644 vote/src/components/result/Part.tsx
diff --git a/vote/src/components/result/Demo.tsx b/vote/src/components/result/Demo.tsx
new file mode 100644
index 0000000..927b9dc
--- /dev/null
+++ b/vote/src/components/result/Demo.tsx
@@ -0,0 +1,104 @@
+import VoteWrapper from "@components/common/VoteWrapper";
+import styled from "styled-components";
+import { useGetFinalResult } from "@hooks/useGetFinalResult";
+
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+`;
+
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const HeaderText = styled.h1`
+ display: flex;
+ justify-content: center;
+ margin-top: 6.8rem;
+ margin-bottom: 4.9rem;
+
+ ${({ theme }) => theme.fonts.Headline1};
+`;
+
+const VoteWrappers = styled.section`
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+ height: 50.1rem;
+ flex-wrap: wrap;
+ gap: 1.9rem 4.8rem;
+ margin-bottom: 7.4rem;
+`;
+
+const TextWrapper = styled.div`
+ display: flex;
+ width: 65.7rem;
+ justify-content: space-between;
+`;
+
+const LeftTextWrapper = styled.div`
+ display: flex;
+ gap: 5.73rem;
+ align-items: center;
+`;
+
+const TeamNameMidText = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Mid};
+`;
+
+const CountText = styled.span`
+ ${({ theme }) => theme.fonts.Count};
+`;
+
+const RankBox = styled.div`
+ ${({ theme }) => theme.fonts.Rank};
+ display: inline-flex;
+ width: 5.23rem;
+ height: 5.8rem;
+ padding: 0rem 2rem;
+ justify-content: center;
+ align-items: center;
+ border-radius: 1rem;
+ border: 0.1rem solid ${({ theme }) => theme.colors.main_blue};
+ background: ${({ theme }) => theme.colors.main_blue};
+`;
+
+export default function Demo() {
+ const { data } = useGetFinalResult(3);
+
+ if (data) {
+ // votingOptionCount 기준으로 data를 내림차순 정렬
+ const sortedData = [...data].sort(
+ (a, b) => b.votingOptionCount - a.votingOptionCount,
+ );
+
+ return (
+
+
+ BE 파트장 투표 결과
+
+ {sortedData.map((item, index) => (
+
+
+
+ {index + 1}
+ {item.votingOptionName}
+
+ {item.votingOptionCount}
+
+
+ ))}
+
+
+
+ );
+ }
+}
diff --git a/vote/src/components/result/Part.tsx b/vote/src/components/result/Part.tsx
new file mode 100644
index 0000000..a344da5
--- /dev/null
+++ b/vote/src/components/result/Part.tsx
@@ -0,0 +1,108 @@
+import { useParams } from "react-router-dom";
+import styled from "styled-components";
+import VoteWrapper from "@components/common/VoteWrapper";
+import { useGetFinalResult } from "@hooks/useGetFinalResult";
+
+const Section = styled.section`
+ display: flex;
+ flex-direction: column;
+`;
+
+const CenterWrapper = styled.section`
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+`;
+
+const HeaderText = styled.h1`
+ display: flex;
+ justify-content: center;
+ margin-top: 7.1rem;
+ margin-bottom: 3.3rem;
+
+ ${({ theme }) => theme.fonts.Headline1};
+`;
+
+const VoteWrappers = styled.section`
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+ height: 50.1rem;
+ flex-wrap: wrap;
+ gap: 1.9rem 4.8rem;
+ margin-bottom: 7.4rem;
+`;
+
+const TextWrapper = styled.div`
+ display: flex;
+ width: 42.7rem;
+ justify-content: space-between;
+`;
+
+const LeftTextWrapper = styled.div`
+ display: flex;
+ gap: 2.7rem;
+ align-items: center;
+`;
+
+const TeamNameMidText = styled.span`
+ ${({ theme }) => theme.fonts.TeamName_Mid};
+`;
+
+const CountText = styled.span`
+ ${({ theme }) => theme.fonts.Count};
+`;
+
+const RankBox = styled.div`
+ ${({ theme }) => theme.fonts.Rank};
+ display: inline-flex;
+ height: 5.8rem;
+ padding: 0rem 2rem;
+ justify-content: center;
+ align-items: center;
+ border-radius: 1rem;
+ border: 0.1rem solid ${({ theme }) => theme.colors.main_blue};
+ background: ${({ theme }) => theme.colors.main_blue};
+`;
+
+export default function Part() {
+ const { type } = useParams(); // useParams 훅을 통해 type 값을 받아와서 topicId와 HeaderText를 조건부로 설정
+ const topicId = type === "front" ? 1 : 2;
+ const { data } = useGetFinalResult(topicId);
+
+ if (data) {
+ // votingOptionCount 기준으로 data를 내림차순 정렬
+ const sortedData = [...data].sort(
+ (a, b) => b.votingOptionCount - a.votingOptionCount,
+ );
+
+ return (
+
+
+
+ {type === "front" ? "FE 파트장 투표 결과" : "BE 파트장 투표 결과"}
+
+
+ {sortedData.map((item, index) => (
+
+
+
+ {index + 1}
+ {item.votingOptionName}
+
+ {item.votingOptionCount}
+
+
+ ))}
+
+
+
+ );
+ }
+}
From fa18ad2483a1ea3f0bb4b11d47f4d78f7fe73595 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 27 Jun 2024 14:51:33 +0900
Subject: [PATCH 68/72] =?UTF-8?q?design:=20=EB=B2=84=ED=8A=BC=20=ED=98=B8?=
=?UTF-8?q?=EB=B2=84=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/pages/ResultsOnly/ResultsOnly.tsx | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/vote/src/pages/ResultsOnly/ResultsOnly.tsx b/vote/src/pages/ResultsOnly/ResultsOnly.tsx
index 0e3b9f0..d76f23f 100644
--- a/vote/src/pages/ResultsOnly/ResultsOnly.tsx
+++ b/vote/src/pages/ResultsOnly/ResultsOnly.tsx
@@ -38,6 +38,12 @@ const VoteWrapper = styled.button`
background-color: ${({ theme }) => theme.colors.white};
border-radius: 2rem;
border: 1px solid ${({ theme }) => theme.colors.main_blue};
+ transition: background-color 0.3s ease;
+
+ &:hover {
+ background-color: ${({ theme }) => theme.colors.main_blue};
+ color: ${({ theme }) => theme.colors.white};
+ }
`;
export default function ResultsOnly() {
From 197cbb9c8715e37ff67999ad7a1d5a5a44f02d45 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 27 Jun 2024 15:24:27 +0900
Subject: [PATCH 69/72] =?UTF-8?q?fix:=20=EB=B0=B0=ED=8F=AC=20404=EC=97=90?=
=?UTF-8?q?=EB=9F=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/App.tsx | 12 ++++++-----
vote/src/api/customAxios.ts | 14 +++++++++++--
vote/src/components/Interceptors.tsx | 8 ++++++++
vote/src/components/layout/RootLayout.tsx | 10 ---------
vote/src/hooks/useSetInterceptors.ts | 25 +++++++++++++++++++++++
vote/src/main.tsx | 21 ++++++-------------
vote/src/pages/ErrorHandler.tsx | 20 ------------------
vote/src/router.tsx | 4 ++--
8 files changed, 60 insertions(+), 54 deletions(-)
create mode 100644 vote/src/components/Interceptors.tsx
delete mode 100644 vote/src/components/layout/RootLayout.tsx
create mode 100644 vote/src/hooks/useSetInterceptors.ts
delete mode 100644 vote/src/pages/ErrorHandler.tsx
diff --git a/vote/src/App.tsx b/vote/src/App.tsx
index 10ad474..c011579 100644
--- a/vote/src/App.tsx
+++ b/vote/src/App.tsx
@@ -4,18 +4,20 @@ import { RouterProvider } from "react-router-dom";
import { ThemeProvider } from "styled-components";
import GlobalStyle from "@styles/globalStyle";
import theme from "@styles/theme";
-import { ErrorHandler } from "@pages/ErrorHandler";
+import { QueryClient, QueryClientProvider } from "react-query";
+
+const queryClient = new QueryClient();
function App() {
return (
-
-
+
+
-
-
+
+
);
}
diff --git a/vote/src/api/customAxios.ts b/vote/src/api/customAxios.ts
index f9f05bb..d00a8ec 100644
--- a/vote/src/api/customAxios.ts
+++ b/vote/src/api/customAxios.ts
@@ -1,6 +1,16 @@
-import axios from "axios";
+// import axios from "axios";
-export const customAxios = axios.create({
+// export const customAxios = axios.create({
+// baseURL: `${import.meta.env.VITE_APP_BASE_URL}`,
+// headers: {
+// "Content-Type": "application/json",
+// "Access-Control-Allow-Origin": "*",
+// },
+// });
+
+import axios, { AxiosInstance } from "axios";
+
+export const customAxios: AxiosInstance = axios.create({
baseURL: `${import.meta.env.VITE_APP_BASE_URL}`,
headers: {
"Content-Type": "application/json",
diff --git a/vote/src/components/Interceptors.tsx b/vote/src/components/Interceptors.tsx
new file mode 100644
index 0000000..4405e4b
--- /dev/null
+++ b/vote/src/components/Interceptors.tsx
@@ -0,0 +1,8 @@
+import { Outlet } from "react-router-dom";
+import useSetInterceptors from "@hooks/useSetInterceptors";
+
+/** RootLayout */
+export default function Interceptors() {
+ useSetInterceptors();
+ return ;
+}
diff --git a/vote/src/components/layout/RootLayout.tsx b/vote/src/components/layout/RootLayout.tsx
deleted file mode 100644
index 7f496af..0000000
--- a/vote/src/components/layout/RootLayout.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from "react-router-dom";
-
-/** RootLayout */
-export default function RootLayout() {
- return (
- <>
-
- >
- );
-}
diff --git a/vote/src/hooks/useSetInterceptors.ts b/vote/src/hooks/useSetInterceptors.ts
new file mode 100644
index 0000000..46cb519
--- /dev/null
+++ b/vote/src/hooks/useSetInterceptors.ts
@@ -0,0 +1,25 @@
+import { getCookie } from "@api/cookie";
+import { customAxios } from "@api/customAxios";
+import { useLayoutEffect } from "react";
+
+export default function useSetInterceptors() {
+ useLayoutEffect(() => {
+ const requestInterceptor = customAxios.interceptors.request.use(
+ (request) => {
+ const accessToken = getCookie("accessToken");
+ if (accessToken) {
+ request.headers.Authorization = accessToken;
+ }
+ return request;
+ },
+ (error) => {
+ console.error("Request error:", error);
+ return Promise.reject(error);
+ },
+ );
+
+ return () => {
+ customAxios.interceptors.request.eject(requestInterceptor);
+ };
+ }, []);
+}
diff --git a/vote/src/main.tsx b/vote/src/main.tsx
index d808532..3b038a6 100644
--- a/vote/src/main.tsx
+++ b/vote/src/main.tsx
@@ -1,22 +1,13 @@
import React from "react";
import ReactDOM from "react-dom/client";
-import App from "./App.tsx";
-import { QueryClient, QueryClientProvider } from "react-query";
+import { CookiesProvider } from "react-cookie";
-const queryClient = new QueryClient({
- defaultOptions: {
- queries: {
- suspense: true,
- useErrorBoundary: true,
- retry: 0,
- },
- },
-});
+import App from "./App.tsx";
ReactDOM.createRoot(document.getElementById("root")!).render(
-
-
+
+
-
- ,
+
+ ,
);
diff --git a/vote/src/pages/ErrorHandler.tsx b/vote/src/pages/ErrorHandler.tsx
deleted file mode 100644
index e343527..0000000
--- a/vote/src/pages/ErrorHandler.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import { getCookie } from "@api/cookie";
-import { customAxios } from "@api/customAxios";
-
-export const ErrorHandler = ({ children }: { children: React.ReactNode }) => {
- customAxios.interceptors.request.use(
- (request) => {
- const accessToken = getCookie("accessToken");
- if (accessToken) {
- request.headers.Authorization = accessToken;
- }
- return request;
- },
- (error) => {
- console.error("Request error:", error);
- return Promise.reject(error);
- },
- );
-
- return <>{children}>;
-};
diff --git a/vote/src/router.tsx b/vote/src/router.tsx
index 378704a..1285a3e 100644
--- a/vote/src/router.tsx
+++ b/vote/src/router.tsx
@@ -1,5 +1,4 @@
import { createBrowserRouter } from "react-router-dom";
-import RootLayout from "@components/layout/RootLayout";
import Error from "@pages/Error";
import SignIn from "@pages/SignIn";
import Signup from "@pages/SignUp";
@@ -14,11 +13,12 @@ import ResultDemo from "@pages/Result/ResultDemo";
import ResultsOnly from "@pages/ResultsOnly/ResultsOnly";
import ResultsOnlyDemo from "@pages/ResultsOnly/ResultsOnlyDemo";
import ResultsOnlyPart from "@pages/ResultsOnly/ResultsOnlyPart";
+import Interceptors from "@components/Interceptors";
export const Router = createBrowserRouter([
{
path: "/",
- element: ,
+ element: ,
errorElement: ,
children: [
{ index: true, element: },
From 302f05755d42fd9622e9a305926b6e7aa1bd3525 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 27 Jun 2024 16:00:31 +0900
Subject: [PATCH 70/72] Create .htaccess
---
vote/.htaccess | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 vote/.htaccess
diff --git a/vote/.htaccess b/vote/.htaccess
new file mode 100644
index 0000000..152dce1
--- /dev/null
+++ b/vote/.htaccess
@@ -0,0 +1,4 @@
+Options -MultiViews
+RewriteEngine On
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^ index.html [QSA,L]
\ No newline at end of file
From 0ca2d6ed3413ce53ef2033d38e805f66374f8e30 Mon Sep 17 00:00:00 2001
From: Rose <120544840+Rose-my@users.noreply.github.com>
Date: Thu, 27 Jun 2024 16:10:56 +0900
Subject: [PATCH 71/72] =?UTF-8?q?vercel.json=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/.htaccess | 4 ----
vote/vercel.json | 6 ++++++
2 files changed, 6 insertions(+), 4 deletions(-)
delete mode 100644 vote/.htaccess
create mode 100644 vote/vercel.json
diff --git a/vote/.htaccess b/vote/.htaccess
deleted file mode 100644
index 152dce1..0000000
--- a/vote/.htaccess
+++ /dev/null
@@ -1,4 +0,0 @@
-Options -MultiViews
-RewriteEngine On
-RewriteCond %{REQUEST_FILENAME} !-f
-RewriteRule ^ index.html [QSA,L]
\ No newline at end of file
diff --git a/vote/vercel.json b/vote/vercel.json
new file mode 100644
index 0000000..4ca0ff8
--- /dev/null
+++ b/vote/vercel.json
@@ -0,0 +1,6 @@
+{
+ "routes": [
+ { "handle": "filesystem" },
+ { "src": "/.*", "dest": "/index.html" }
+ ]
+}
From a4d682dd91357ca426433d08fdbd844bf5fec304 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=95=88=ED=98=9C=EC=97=B0?=
Date: Fri, 28 Jun 2024 17:29:06 +0900
Subject: [PATCH 72/72] =?UTF-8?q?etc:=20=EB=8D=B0=EB=AA=A8=EB=8D=B0?=
=?UTF-8?q?=EC=9D=B4=20=ED=97=A4=EB=8D=94=ED=85=8D=EC=8A=A4=ED=8A=B8=20?=
=?UTF-8?q?=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
vote/src/components/result/Demo.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/vote/src/components/result/Demo.tsx b/vote/src/components/result/Demo.tsx
index 927b9dc..db84c46 100644
--- a/vote/src/components/result/Demo.tsx
+++ b/vote/src/components/result/Demo.tsx
@@ -78,7 +78,7 @@ export default function Demo() {
return (
- BE 파트장 투표 결과
+ 데모데이 투표 결과
{sortedData.map((item, index) => (