From b3347a6553ff28bba7542bacc4c493fa42736b75 Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 14:32:38 +0900 Subject: [PATCH 01/14] =?UTF-8?q?init:=20=EC=B4=88=EA=B8=B0=20=EC=84=B8?= =?UTF-8?q?=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/.gitignore | 24 + week4-ts/index.html | 13 + week4-ts/package.json | 25 + week4-ts/src/App.css | 42 ++ week4-ts/src/App.tsx | 45 ++ week4-ts/src/favicon.svg | 15 + week4-ts/src/index.css | 13 + week4-ts/src/logo.svg | 7 + week4-ts/src/main.tsx | 10 + week4-ts/src/vite-env.d.ts | 1 + week4-ts/tsconfig.json | 21 + week4-ts/tsconfig.node.json | 8 + week4-ts/vite.config.ts | 7 + week4-ts/yarn.lock | 904 ++++++++++++++++++++++++++++++++++++ 14 files changed, 1135 insertions(+) create mode 100644 week4-ts/.gitignore create mode 100644 week4-ts/index.html create mode 100644 week4-ts/package.json create mode 100644 week4-ts/src/App.css create mode 100644 week4-ts/src/App.tsx create mode 100644 week4-ts/src/favicon.svg create mode 100644 week4-ts/src/index.css create mode 100644 week4-ts/src/logo.svg create mode 100644 week4-ts/src/main.tsx create mode 100644 week4-ts/src/vite-env.d.ts create mode 100644 week4-ts/tsconfig.json create mode 100644 week4-ts/tsconfig.node.json create mode 100644 week4-ts/vite.config.ts create mode 100644 week4-ts/yarn.lock diff --git a/week4-ts/.gitignore b/week4-ts/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/week4-ts/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/week4-ts/index.html b/week4-ts/index.html new file mode 100644 index 0000000..38f3861 --- /dev/null +++ b/week4-ts/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite App + + +
+ + + diff --git a/week4-ts/package.json b/week4-ts/package.json new file mode 100644 index 0000000..c3a8f72 --- /dev/null +++ b/week4-ts/package.json @@ -0,0 +1,25 @@ +{ + "name": "week4-ts", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@types/styled-components": "^5.1.25", + "axios": "^0.27.2", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "styled-components": "^5.3.5", + "styled-reset": "^4.4.1" + }, + "devDependencies": { + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", + "@vitejs/plugin-react": "^1.3.0", + "typescript": "^4.6.3", + "vite": "^2.9.9" + } +} diff --git a/week4-ts/src/App.css b/week4-ts/src/App.css new file mode 100644 index 0000000..8da3fde --- /dev/null +++ b/week4-ts/src/App.css @@ -0,0 +1,42 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +button { + font-size: calc(10px + 2vmin); +} diff --git a/week4-ts/src/App.tsx b/week4-ts/src/App.tsx new file mode 100644 index 0000000..3d9bd71 --- /dev/null +++ b/week4-ts/src/App.tsx @@ -0,0 +1,45 @@ +import { useState } from 'react' +import logo from './logo.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( +
+
+ logo +

Hello Vite + React!

+

+ +

+

+ Edit App.tsx and save to test HMR updates. +

+

+ + Learn React + + {' | '} + + Vite Docs + +

+
+
+ ) +} + +export default App diff --git a/week4-ts/src/favicon.svg b/week4-ts/src/favicon.svg new file mode 100644 index 0000000..de4aedd --- /dev/null +++ b/week4-ts/src/favicon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/week4-ts/src/index.css b/week4-ts/src/index.css new file mode 100644 index 0000000..ec2585e --- /dev/null +++ b/week4-ts/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/week4-ts/src/logo.svg b/week4-ts/src/logo.svg new file mode 100644 index 0000000..6b60c10 --- /dev/null +++ b/week4-ts/src/logo.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/week4-ts/src/main.tsx b/week4-ts/src/main.tsx new file mode 100644 index 0000000..4a1b150 --- /dev/null +++ b/week4-ts/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + +) diff --git a/week4-ts/src/vite-env.d.ts b/week4-ts/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/week4-ts/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/week4-ts/tsconfig.json b/week4-ts/tsconfig.json new file mode 100644 index 0000000..3d0a51a --- /dev/null +++ b/week4-ts/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/week4-ts/tsconfig.node.json b/week4-ts/tsconfig.node.json new file mode 100644 index 0000000..e993792 --- /dev/null +++ b/week4-ts/tsconfig.node.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "composite": true, + "module": "esnext", + "moduleResolution": "node" + }, + "include": ["vite.config.ts"] +} diff --git a/week4-ts/vite.config.ts b/week4-ts/vite.config.ts new file mode 100644 index 0000000..b1b5f91 --- /dev/null +++ b/week4-ts/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/week4-ts/yarn.lock b/week4-ts/yarn.lock new file mode 100644 index 0000000..7829044 --- /dev/null +++ b/week4-ts/yarn.lock @@ -0,0 +1,904 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.17.10": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" + integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== + +"@babel/core@^7.17.10": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.2" + "@babel/parser" "^7.18.5" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.5" + "@babel/types" "^7.18.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== + dependencies: + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" + integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" + +"@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== + +"@babel/helper-simple-access@^7.17.7": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== + dependencies: + "@babel/types" "^7.18.2" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helpers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" + integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + +"@babel/highlight@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.16.7", "@babel/parser@^7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" + integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== + +"@babel/plugin-syntax-jsx@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" + integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-react-jsx-development@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" + integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.16.7" + +"@babel/plugin-transform-react-jsx-self@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.17.12.tgz#7f2e9b8c08d6a4204733138d8c29d4dba4bb66c2" + integrity sha512-7S9G2B44EnYOx74mue02t1uD8ckWZ/ee6Uz/qfdzc35uWHX5NgRy9i+iJSb2LFRgMd+QV9zNcStQaazzzZ3n3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-react-jsx-source@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz#1879c3f23629d287cc6186a6c683154509ec70c0" + integrity sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.17.3": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz#2aa20022709cd6a3f40b45d60603d5f269586dba" + integrity sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/types" "^7.17.12" + +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.4.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" + integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.18.5" + "@babel/types" "^7.18.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@emotion/is-prop-valid@^1.1.0": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.3.tgz#f0907a416368cf8df9e410117068e20fe87c0a3a" + integrity sha512-RFg04p6C+1uO19uG8N+vqanzKqiM9eeV1LDOG3bmkYmuOj7NbKNlFC/4EZq5gnwAIlcC/jOT24f8Td0iax2SXA== + dependencies: + "@emotion/memoize" "^0.7.4" + +"@emotion/memoize@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" + integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@rollup/pluginutils@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + +"@types/hoist-non-react-statics@*": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react-dom@^18.0.0": + version "18.0.5" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.5.tgz#330b2d472c22f796e5531446939eacef8378444a" + integrity sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18.0.0": + version "18.0.14" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.14.tgz#e016616ffff51dba01b04945610fe3671fdbe06d" + integrity sha512-x4gGuASSiWmo0xjDLpm5mPb52syZHJx02VKbqUKdLmKtAwIh63XClGsiTI1K6DO5q7ox4xAsQrU+Gl3+gGXF9Q== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/styled-components@^5.1.25": + version "5.1.25" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.25.tgz#0177c4ab5fa7c6ed0565d36f597393dae3f380ad" + integrity sha512-fgwl+0Pa8pdkwXRoVPP9JbqF0Ivo9llnmsm+7TCI330kbPIFd9qv1Lrhr37shf4tnxCOSu+/IgqM7uJXLWZZNQ== + dependencies: + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + csstype "^3.0.2" + +"@vitejs/plugin-react@^1.3.0": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-1.3.2.tgz#2fcf0b6ce9bcdcd4cec5c760c199779d5657ece1" + integrity sha512-aurBNmMo0kz1O4qRoY+FM4epSA39y3ShWGuqfLRA/3z0oEJAdtoSfgA3aO98/PCCHAqMaduLxIxErWrVKIFzXA== + dependencies: + "@babel/core" "^7.17.10" + "@babel/plugin-transform-react-jsx" "^7.17.3" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-jsx-self" "^7.16.7" + "@babel/plugin-transform-react-jsx-source" "^7.16.7" + "@rollup/pluginutils" "^4.2.1" + react-refresh "^0.13.0" + resolve "^1.22.0" + +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" + +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@^0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + +"babel-plugin-styled-components@>= 1.12.0": + version "2.0.7" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" + integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + picomatch "^2.3.0" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== + +browserslist@^4.20.2: + version "4.21.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" + integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== + dependencies: + caniuse-lite "^1.0.30001358" + electron-to-chromium "^1.4.164" + node-releases "^2.0.5" + update-browserslist-db "^1.0.0" + +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg== + +caniuse-lite@^1.0.30001358: + version "1.0.30001358" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz#473d35dabf5e448b463095cab7924e96ccfb8c00" + integrity sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw== + +chalk@^2.0.0: + 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" + +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-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== + +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" + +convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +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.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +csstype@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" + integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== + +debug@^4.1.0: + 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" + +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== + +electron-to-chromium@^1.4.164: + version "1.4.167" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz#72424aebc85df12c5331d37b1bcfd1ae01322c55" + integrity sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q== + +esbuild-android-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.47.tgz#ef95b42c67bcf4268c869153fa3ad1466c4cea6b" + integrity sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g== + +esbuild-android-arm64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.47.tgz#4ebd7ce9fb250b4695faa3ee46fd3b0754ecd9e6" + integrity sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ== + +esbuild-darwin-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.47.tgz#e0da6c244f497192f951807f003f6a423ed23188" + integrity sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA== + +esbuild-darwin-arm64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.47.tgz#cd40fd49a672fca581ed202834239dfe540a9028" + integrity sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw== + +esbuild-freebsd-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.47.tgz#8da6a14c095b29c01fc8087a16cb7906debc2d67" + integrity sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ== + +esbuild-freebsd-arm64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.47.tgz#ad31f9c92817ff8f33fd253af7ab5122dc1b83f6" + integrity sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ== + +esbuild-linux-32@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.47.tgz#de085e4db2e692ea30c71208ccc23fdcf5196c58" + integrity sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw== + +esbuild-linux-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.47.tgz#2a9321bbccb01f01b04cebfcfccbabeba3658ba1" + integrity sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw== + +esbuild-linux-arm64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.47.tgz#b9da7b6fc4b0ca7a13363a0c5b7bb927e4bc535a" + integrity sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw== + +esbuild-linux-arm@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.47.tgz#56fec2a09b9561c337059d4af53625142aded853" + integrity sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA== + +esbuild-linux-mips64le@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.47.tgz#9db21561f8f22ed79ef2aedb7bbef082b46cf823" + integrity sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg== + +esbuild-linux-ppc64le@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.47.tgz#dc3a3da321222b11e96e50efafec9d2de408198b" + integrity sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w== + +esbuild-linux-riscv64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.47.tgz#9bd6dcd3dca6c0357084ecd06e1d2d4bf105335f" + integrity sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g== + +esbuild-linux-s390x@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.47.tgz#a458af939b52f2cd32fc561410d441a51f69d41f" + integrity sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw== + +esbuild-netbsd-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.47.tgz#6388e785d7e7e4420cb01348d7483ab511b16aa8" + integrity sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ== + +esbuild-openbsd-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.47.tgz#309af806db561aa886c445344d1aacab850dbdc5" + integrity sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw== + +esbuild-sunos-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.47.tgz#3f19612dcdb89ba6c65283a7ff6e16f8afbf8aaa" + integrity sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ== + +esbuild-windows-32@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.47.tgz#a92d279c8458d5dc319abcfeb30aa49e8f2e6f7f" + integrity sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ== + +esbuild-windows-64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.47.tgz#2564c3fcf0c23d701edb71af8c52d3be4cec5f8a" + integrity sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ== + +esbuild-windows-arm64@0.14.47: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.47.tgz#86d9db1a22d83360f726ac5fba41c2f625db6878" + integrity sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ== + +esbuild@^0.14.27: + version "0.14.47" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.47.tgz#0d6415f6bd8eb9e73a58f7f9ae04c5276cda0e4d" + integrity sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA== + optionalDependencies: + esbuild-android-64 "0.14.47" + esbuild-android-arm64 "0.14.47" + esbuild-darwin-64 "0.14.47" + esbuild-darwin-arm64 "0.14.47" + esbuild-freebsd-64 "0.14.47" + esbuild-freebsd-arm64 "0.14.47" + esbuild-linux-32 "0.14.47" + esbuild-linux-64 "0.14.47" + esbuild-linux-arm "0.14.47" + esbuild-linux-arm64 "0.14.47" + esbuild-linux-mips64le "0.14.47" + esbuild-linux-ppc64le "0.14.47" + esbuild-linux-riscv64 "0.14.47" + esbuild-linux-s390x "0.14.47" + esbuild-netbsd-64 "0.14.47" + esbuild-openbsd-64 "0.14.47" + esbuild-sunos-64 "0.14.47" + esbuild-windows-32 "0.14.47" + esbuild-windows-64 "0.14.47" + esbuild-windows-arm64 "0.14.47" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +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== + +estree-walker@^2.0.1: + 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== + +follow-redirects@^1.14.9: + version "1.15.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" + integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== + +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" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +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== + +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== + +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@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hoist-non-react-statics@^3.0.0, 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" + +is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +"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== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +lodash@^4.17.11: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +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" + +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" + +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.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +node-releases@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.2.2, picomatch@^2.3.0: + version "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: + 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.13: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +react-dom@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +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.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.13.0.tgz#cbd01a4482a177a5da8d44c9755ebb1f26d5a1c1" + integrity sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg== + +react@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +resolve@^1.22.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rollup@^2.59.0: + version "2.75.7" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.7.tgz#221ff11887ae271e37dcc649ba32ce1590aaa0b9" + integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== + optionalDependencies: + fsevents "~2.3.2" + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +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== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +styled-components@^5.3.5: + version "5.3.5" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.5.tgz#a750a398d01f1ca73af16a241dec3da6deae5ec4" + integrity sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^1.1.0" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +styled-reset@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/styled-reset/-/styled-reset-4.4.1.tgz#c7b3aa247d4f8c5d14f1dc72fde9d02b8bee1758" + integrity sha512-7j99JIwzotNQmoS8MQJu8OTBDE48gaMEr6SYvuH8xfL0K/a5vNHSRaccTfAiGBs9D3mjLDPxg5iLh3HqFvefPQ== + +supports-color@^5.3.0, supports-color@^5.5.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-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +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== + +typescript@^4.6.3: + version "4.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + +update-browserslist-db@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.3.tgz#6c47cb996f34afb363e924748e2f6e4d983c6fc1" + integrity sha512-ufSazemeh9Gty0qiWtoRpJ9F5Q5W3xdIPm1UZQqYQv/q0Nyb9EMHUB2lu+O9x1re9WsorpMAUu4Y6Lxcs5n+XQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +vite@^2.9.9: + version "2.9.12" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.12.tgz#b1d636b0a8ac636afe9d83e3792d4895509a941b" + integrity sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew== + dependencies: + esbuild "^0.14.27" + postcss "^8.4.13" + resolve "^1.22.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2" From 38b80a566d1f5887d32f4ea016033e61055bc855 Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 14:39:01 +0900 Subject: [PATCH 02/14] =?UTF-8?q?chore:=20=ED=8F=B4=EB=8D=94=20=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/src/App.css | 42 --------------------- week4-ts/src/App.tsx | 46 +---------------------- week4-ts/src/components/ResultSection.tsx | 3 ++ week4-ts/src/components/SearchSection.tsx | 3 ++ week4-ts/src/components/StoreCard.tsx | 3 ++ week4-ts/src/index.css | 13 ------- week4-ts/src/logo.svg | 7 ---- week4-ts/src/main.tsx | 1 - week4-ts/src/pages/MainPage.tsx | 3 ++ 9 files changed, 14 insertions(+), 107 deletions(-) delete mode 100644 week4-ts/src/App.css create mode 100644 week4-ts/src/components/ResultSection.tsx create mode 100644 week4-ts/src/components/SearchSection.tsx create mode 100644 week4-ts/src/components/StoreCard.tsx delete mode 100644 week4-ts/src/index.css delete mode 100644 week4-ts/src/logo.svg create mode 100644 week4-ts/src/pages/MainPage.tsx diff --git a/week4-ts/src/App.css b/week4-ts/src/App.css deleted file mode 100644 index 8da3fde..0000000 --- a/week4-ts/src/App.css +++ /dev/null @@ -1,42 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -button { - font-size: calc(10px + 2vmin); -} diff --git a/week4-ts/src/App.tsx b/week4-ts/src/App.tsx index 3d9bd71..1f1b34b 100644 --- a/week4-ts/src/App.tsx +++ b/week4-ts/src/App.tsx @@ -1,45 +1,3 @@ -import { useState } from 'react' -import logo from './logo.svg' -import './App.css' - -function App() { - const [count, setCount] = useState(0) - - return ( -
-
- logo -

Hello Vite + React!

-

- -

-

- Edit App.tsx and save to test HMR updates. -

-

- - Learn React - - {' | '} - - Vite Docs - -

-
-
- ) +export default function App() { + return
App
; } - -export default App diff --git a/week4-ts/src/components/ResultSection.tsx b/week4-ts/src/components/ResultSection.tsx new file mode 100644 index 0000000..119bfb9 --- /dev/null +++ b/week4-ts/src/components/ResultSection.tsx @@ -0,0 +1,3 @@ +export default function ResultSection() { + return
ResultSection
; +} diff --git a/week4-ts/src/components/SearchSection.tsx b/week4-ts/src/components/SearchSection.tsx new file mode 100644 index 0000000..0151b17 --- /dev/null +++ b/week4-ts/src/components/SearchSection.tsx @@ -0,0 +1,3 @@ +export default function SearchSection() { + return
SearchSection
; +} diff --git a/week4-ts/src/components/StoreCard.tsx b/week4-ts/src/components/StoreCard.tsx new file mode 100644 index 0000000..276ef2d --- /dev/null +++ b/week4-ts/src/components/StoreCard.tsx @@ -0,0 +1,3 @@ +export default function StoreCard() { + return
StoreCard
; +} diff --git a/week4-ts/src/index.css b/week4-ts/src/index.css deleted file mode 100644 index ec2585e..0000000 --- a/week4-ts/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/week4-ts/src/logo.svg b/week4-ts/src/logo.svg deleted file mode 100644 index 6b60c10..0000000 --- a/week4-ts/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/week4-ts/src/main.tsx b/week4-ts/src/main.tsx index 4a1b150..eaad244 100644 --- a/week4-ts/src/main.tsx +++ b/week4-ts/src/main.tsx @@ -1,7 +1,6 @@ import React from 'react' import ReactDOM from 'react-dom/client' import App from './App' -import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( diff --git a/week4-ts/src/pages/MainPage.tsx b/week4-ts/src/pages/MainPage.tsx new file mode 100644 index 0000000..0593c1c --- /dev/null +++ b/week4-ts/src/pages/MainPage.tsx @@ -0,0 +1,3 @@ +export default function MainPage() { + return
MainPage
; +} From 24b583c24de10f9fbb36414e5f5acd3f90840831 Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 14:42:05 +0900 Subject: [PATCH 03/14] =?UTF-8?q?chore:=20=EC=8A=A4=ED=83=80=EC=9D=BC=20?= =?UTF-8?q?=EB=B0=8F=20=ED=83=80=EC=9E=85=20=ED=8F=B4=EB=8D=94=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1,=20=EC=A0=84=EC=97=AD=20=EC=8A=A4=ED=83=80=EC=9D=BC?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/src/App.tsx | 9 ++++++- week4-ts/src/styles/global.ts | 47 +++++++++++++++++++++++++++++++++++ week4-ts/src/types/index.ts | 0 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 week4-ts/src/styles/global.ts create mode 100644 week4-ts/src/types/index.ts diff --git a/week4-ts/src/App.tsx b/week4-ts/src/App.tsx index 1f1b34b..cfe4718 100644 --- a/week4-ts/src/App.tsx +++ b/week4-ts/src/App.tsx @@ -1,3 +1,10 @@ +import GlobalStyle from "./styles/global"; +import MainPage from "./pages/MainPage"; export default function App() { - return
App
; + return ( + <> + + + + ); } diff --git a/week4-ts/src/styles/global.ts b/week4-ts/src/styles/global.ts new file mode 100644 index 0000000..efda1b2 --- /dev/null +++ b/week4-ts/src/styles/global.ts @@ -0,0 +1,47 @@ +import { createGlobalStyle } from "styled-components"; +import reset from "styled-reset"; + +const GlobalStyle = createGlobalStyle` + ${reset}; + html, + body { + max-width: 100vw; + margin: 0 auto; + } + + * { + box-sizing: border-box; + } + button { + cursor: pointer; + border: none; + outline: none; + -webkit-appearance: none; + border-radius: 0; + padding: 0; + } + input { + -webkit-appearance: none; + -webkit-border-radius: 0; + } + input:focus { + outline: none; + } + textarea { + box-sizing: border-box; + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + } + textarea:focus { + outline: none; + } + a { + text-decoration:none; + } + input[disabled] { + background-color: white; + } +`; + +export default GlobalStyle; diff --git a/week4-ts/src/types/index.ts b/week4-ts/src/types/index.ts new file mode 100644 index 0000000..e69de29 From f96553537148e9d8ff12e1fa66300b2e045bb3ab Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 15:27:51 +0900 Subject: [PATCH 04/14] =?UTF-8?q?feat:=20=EA=B2=80=EC=83=89=20=EC=84=B9?= =?UTF-8?q?=EC=85=98=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/src/components/SearchSection.tsx | 62 ++++++++++++++++++++++- week4-ts/src/pages/MainPage.tsx | 36 ++++++++++++- week4-ts/src/styles/global.ts | 9 ++-- 3 files changed, 100 insertions(+), 7 deletions(-) diff --git a/week4-ts/src/components/SearchSection.tsx b/week4-ts/src/components/SearchSection.tsx index 0151b17..7157a5d 100644 --- a/week4-ts/src/components/SearchSection.tsx +++ b/week4-ts/src/components/SearchSection.tsx @@ -1,3 +1,63 @@ +import styled from "styled-components"; + export default function SearchSection() { - return
SearchSection
; + return ( + + + + + + + + + + + + 검색하기 + + ); } + +const StWrapper = styled.div` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 10px 0; + gap: 10px; + font-size: 20px; + color: #fff; + border-bottom: 2px solid #fff; + width: 100%; +`; +const StCheckBoxWrapper = styled.div` + display: flex; + justify-content: center; + align-items: center; + gap: 5px; + & > label { + color: #fff; + font-weight: bold; + } +`; +const StTextInputWrapper = styled.div` + display: flex; + flex-direction: column; + align-items: center; + gap: 10px; +`; +const StSearchButton = styled.button` + border: none; + border-radius: 10px; + background-color: #fff; + color: #000; + font-weight: 700; + + width: 70px; + height: 25px; + + &:hover { + background-color: #828282; + color: #fff; + } +`; diff --git a/week4-ts/src/pages/MainPage.tsx b/week4-ts/src/pages/MainPage.tsx index 0593c1c..a5e3db0 100644 --- a/week4-ts/src/pages/MainPage.tsx +++ b/week4-ts/src/pages/MainPage.tsx @@ -1,3 +1,37 @@ +import styled from "styled-components"; +import SearchSection from "../components/SearchSection"; + export default function MainPage() { - return
MainPage
; + return ( + + +

노인코래방

+
+ + +
+ ); } +const StWrapper = styled.div` + display: flex; + flex-direction: column; + align-items: center; + width: 300px; + height: 100%; + min-height: 100vh; + border: 2px solid #fff; + border-radius: 15px; + gap: 10px; +`; +const StHeader = styled.header` + display: flex; + justify-content: center; + padding: 10px; + margin-top: 10px; + width: 100%; + border-bottom: 1px solid #fff; + & > h1 { + color: #fff; + font-weight: bold; + } +`; diff --git a/week4-ts/src/styles/global.ts b/week4-ts/src/styles/global.ts index efda1b2..4b05a49 100644 --- a/week4-ts/src/styles/global.ts +++ b/week4-ts/src/styles/global.ts @@ -5,7 +5,10 @@ const GlobalStyle = createGlobalStyle` ${reset}; html, body { - max-width: 100vw; + display:flex; + max-width: 320px; + + background-color:#232332; margin: 0 auto; } @@ -20,10 +23,6 @@ const GlobalStyle = createGlobalStyle` border-radius: 0; padding: 0; } - input { - -webkit-appearance: none; - -webkit-border-radius: 0; - } input:focus { outline: none; } From 19a0b9fa9b312e6b49221e0a47e903ff16262d8e Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 16:14:48 +0900 Subject: [PATCH 05/14] =?UTF-8?q?feat:=20=EC=A7=80=EC=97=AD=EA=B8=B0?= =?UTF-8?q?=EB=B0=98=20=EA=B2=80=EC=83=89=20api=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/.gitignore | 1 + week4-ts/src/components/ResultSection.tsx | 16 +++++++- week4-ts/src/components/SearchSection.tsx | 10 ++++- week4-ts/src/pages/MainPage.tsx | 16 +++++++- week4-ts/src/services/index.ts | 47 +++++++++++++++++++++++ week4-ts/src/types/index.ts | 7 ++++ 6 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 week4-ts/src/services/index.ts diff --git a/week4-ts/.gitignore b/week4-ts/.gitignore index a547bf3..efcd003 100644 --- a/week4-ts/.gitignore +++ b/week4-ts/.gitignore @@ -8,6 +8,7 @@ pnpm-debug.log* lerna-debug.log* node_modules +.env.local dist dist-ssr *.local diff --git a/week4-ts/src/components/ResultSection.tsx b/week4-ts/src/components/ResultSection.tsx index 119bfb9..3135d7e 100644 --- a/week4-ts/src/components/ResultSection.tsx +++ b/week4-ts/src/components/ResultSection.tsx @@ -1,3 +1,15 @@ -export default function ResultSection() { - return
ResultSection
; +import { Store } from "../types"; + +interface ResultSectionProps { + storeInfo: Store[]; +} + +export default function ResultSection({ storeInfo }: ResultSectionProps) { + return ( + <> + {storeInfo.map((store: Store) => ( +
+ ))} + + ); } diff --git a/week4-ts/src/components/SearchSection.tsx b/week4-ts/src/components/SearchSection.tsx index 7157a5d..b45795b 100644 --- a/week4-ts/src/components/SearchSection.tsx +++ b/week4-ts/src/components/SearchSection.tsx @@ -1,6 +1,10 @@ import styled from "styled-components"; -export default function SearchSection() { +interface SearchSectionProps { + onClick: () => void; +} + +export default function SearchSection({ onClick }: SearchSectionProps) { return ( @@ -13,7 +17,9 @@ export default function SearchSection() { - 검색하기 + + 검색하기 + ); } diff --git a/week4-ts/src/pages/MainPage.tsx b/week4-ts/src/pages/MainPage.tsx index a5e3db0..2a5837d 100644 --- a/week4-ts/src/pages/MainPage.tsx +++ b/week4-ts/src/pages/MainPage.tsx @@ -1,14 +1,28 @@ import styled from "styled-components"; import SearchSection from "../components/SearchSection"; +import ResultSection from "../components/ResultSection"; +import { useState, useEffect } from "react"; +import { Store } from "../types"; +import { getLocationBasedSearch } from "../services"; export default function MainPage() { + const [storeInfo, setStoreInfo] = useState([]); + + useEffect(() => {}, []); + + const onClickSearchButton = async () => { + const data = await getLocationBasedSearch(); + setStoreInfo(data); + }; + return (

노인코래방

- + +
); } diff --git a/week4-ts/src/services/index.ts b/week4-ts/src/services/index.ts new file mode 100644 index 0000000..377fd03 --- /dev/null +++ b/week4-ts/src/services/index.ts @@ -0,0 +1,47 @@ +import axios from "axios"; +import { Store } from "../types"; + +interface Location { + x: number; + y: number; +} +export const getLocationBasedSearch = async (): Promise => { + const location = await getLocation(); + const { x, y } = location; + + const { data } = await axios.get( + "https://dapi.kakao.com//v2/local/search/keyword", + { + headers: { + Authorization: `KakaoAK ${import.meta.env.VITE_APP_KAKAO_AK}`, + }, + params: { + x: x, + y: y, + radius: 1000, + query: "노래방", + }, + } + ); + return data.document; +}; + +export const getLocation = (): Location | Promise => { + if ("geolocation" in navigator) { + return new Promise((resolve) => { + navigator.geolocation.getCurrentPosition( + (position) => { + const { + coords: { latitude: y, longitude: x }, + } = position; + resolve({ x, y }); + }, + (e) => { + alert("HTTPS 연결을 확인해주세요."); + } + ); + }); + } + + return { x: 37.5426165, y: 126.962994 }; +}; diff --git a/week4-ts/src/types/index.ts b/week4-ts/src/types/index.ts index e69de29..ceeaaec 100644 --- a/week4-ts/src/types/index.ts +++ b/week4-ts/src/types/index.ts @@ -0,0 +1,7 @@ +export interface Store { + place_url: string; + place_name: string; + phone: string; + distance?: number; + address_name: string; +} From b7cce01c16d5c4b42f8dc5bcb1fee2d4d45f7261 Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 16:28:24 +0900 Subject: [PATCH 06/14] =?UTF-8?q?feat:=20=EA=B2=80=EC=83=89=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/src/components/ResultSection.tsx | 74 +++++++++++++++++++++-- week4-ts/src/components/SearchSection.tsx | 18 ++++-- week4-ts/src/components/Skeleton.tsx | 72 ++++++++++++++++++++++ week4-ts/src/pages/MainPage.tsx | 23 +++++-- week4-ts/src/styles/global.ts | 3 - 5 files changed, 174 insertions(+), 16 deletions(-) create mode 100644 week4-ts/src/components/Skeleton.tsx diff --git a/week4-ts/src/components/ResultSection.tsx b/week4-ts/src/components/ResultSection.tsx index 3135d7e..d1f326f 100644 --- a/week4-ts/src/components/ResultSection.tsx +++ b/week4-ts/src/components/ResultSection.tsx @@ -1,15 +1,81 @@ import { Store } from "../types"; +import styled from "styled-components"; interface ResultSectionProps { storeInfo: Store[]; + isCheck: boolean; } -export default function ResultSection({ storeInfo }: ResultSectionProps) { +export default function ResultSection({ + storeInfo, + isCheck, +}: ResultSectionProps) { return ( <> - {storeInfo.map((store: Store) => ( -
- ))} + {storeInfo?.map( + ( + { place_url, place_name, phone, distance, address_name }: Store, + idx: number + ) => ( + + {place_name} + +

{phone || "번호 없음"}

+ {!isCheck ? ( +

{distance}m

+ ) : ( +

{address_name}

+ )} +
+
+ ) + )} ); } +const StCard = styled.li` + display: flex; + flex-direction: column; + justify-content: center; + gap: 20px; + height: 80px; + font-size: 14px; + background-color: #fff; + color: #000; + border-radius: 10px; + + & > a { + height: fit-content; + font-size: 18px; + font-weight: 700; + padding-left: 20px; + cursor: pointer; + } +`; + +const StCardInfo = styled.div` + display: flex; + gap: 20px; + width: 100%; + font-weight: 400; + justify-content: space-between; + + & > .info__tel { + width: 100px; + height: 20px; + display: flex; + justify-content: center; + align-items: center; + margin-left: 20px; + border-radius: 15px; + background-color: #828282; + color: #fff; + font-size: 12px; + font-weight: 700; + } + + & > .info__address { + max-width: 150px; + padding-right: 10px; + } +`; diff --git a/week4-ts/src/components/SearchSection.tsx b/week4-ts/src/components/SearchSection.tsx index b45795b..d611c9e 100644 --- a/week4-ts/src/components/SearchSection.tsx +++ b/week4-ts/src/components/SearchSection.tsx @@ -1,23 +1,33 @@ import styled from "styled-components"; +import { useState } from "react"; interface SearchSectionProps { - onClick: () => void; + onClick: (isCheck: boolean) => void; } export default function SearchSection({ onClick }: SearchSectionProps) { + const [isCheck, setIsCheck] = useState(false); return ( - + setIsCheck(!isCheck)} + /> - + - + onClick(isCheck)}> 검색하기 diff --git a/week4-ts/src/components/Skeleton.tsx b/week4-ts/src/components/Skeleton.tsx new file mode 100644 index 0000000..a8aacd2 --- /dev/null +++ b/week4-ts/src/components/Skeleton.tsx @@ -0,0 +1,72 @@ +import styled, { keyframes } from "styled-components"; + +function Skeleton() { + return ( + + + + + + + + ); +} + +const loading = keyframes` +0% { + transform: translateX(0); + } + 50%,100%{ + transform:translateX(268px); + } +`; + +const LoadingAnimation = styled.div` + overflow: hidden; + position: relative; + opacity: 0.5; + + &::before { + content: ""; + width: 20px; + height: 80px; + position: absolute; + background: linear-gradient(to right, #bdbdbd, #fff, #bdbdbd); + animation: ${loading} 1.5s infinite linear; + } +`; + +const SkeletonWrapper = styled.li` + display: flex; + flex-direction: column; + height: 80px; + background-color: #fff; + border-radius: 10px; +`; + +const SkeletonTitle = styled(LoadingAnimation)` + margin: 10px 0 20px 20px; + width: 90px; + height: 20px; + background-color: #bdbdbd; +`; + +const SkeletonInfo = styled.div` + display: flex; + gap: 20px; +`; + +const SkeletonPhone = styled(LoadingAnimation)` + width: 90px; + height: 20px; + margin-left: 20px; + background-color: #bdbdbd; +`; + +const SkeletonAddress = styled(LoadingAnimation)` + width: 140px; + margin-right: 20px; + background-color: #bdbdbd; +`; + +export default Skeleton; diff --git a/week4-ts/src/pages/MainPage.tsx b/week4-ts/src/pages/MainPage.tsx index 2a5837d..c5e06e0 100644 --- a/week4-ts/src/pages/MainPage.tsx +++ b/week4-ts/src/pages/MainPage.tsx @@ -7,12 +7,23 @@ import { getLocationBasedSearch } from "../services"; export default function MainPage() { const [storeInfo, setStoreInfo] = useState([]); + const [isChecked, setIsChecked] = useState(false); - useEffect(() => {}, []); + useEffect(() => { + if (isChecked) { + searchLocationBased(); + } + }, [isChecked]); - const onClickSearchButton = async () => { + const onClickSearchButton = (isCheck: boolean) => { + setIsChecked(isCheck); + }; + + const searchLocationBased = async () => { const data = await getLocationBasedSearch(); - setStoreInfo(data); + console.log(data); + + data && setStoreInfo(data); }; return ( @@ -21,8 +32,10 @@ export default function MainPage() {

노인코래방

- - + onClickSearchButton(isCheck)} + /> + ); } diff --git a/week4-ts/src/styles/global.ts b/week4-ts/src/styles/global.ts index 4b05a49..cc87636 100644 --- a/week4-ts/src/styles/global.ts +++ b/week4-ts/src/styles/global.ts @@ -38,9 +38,6 @@ const GlobalStyle = createGlobalStyle` a { text-decoration:none; } - input[disabled] { - background-color: white; - } `; export default GlobalStyle; From 795497d314bf6ca3f4f8329f65018e7c489bb5b4 Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 16:30:53 +0900 Subject: [PATCH 07/14] =?UTF-8?q?chore:=20=EC=A7=80=EC=97=AD=EA=B8=B0?= =?UTF-8?q?=EB=B0=98=EA=B2=80=EC=83=89=20=EC=9D=91=EB=8B=B5=20data.documen?= =?UTF-8?q?ts=20=EC=98=A4=ED=83=80=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/src/pages/MainPage.tsx | 13 +++++-------- week4-ts/src/services/index.ts | 2 +- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/week4-ts/src/pages/MainPage.tsx b/week4-ts/src/pages/MainPage.tsx index c5e06e0..fb34b7f 100644 --- a/week4-ts/src/pages/MainPage.tsx +++ b/week4-ts/src/pages/MainPage.tsx @@ -9,21 +9,18 @@ export default function MainPage() { const [storeInfo, setStoreInfo] = useState([]); const [isChecked, setIsChecked] = useState(false); - useEffect(() => { - if (isChecked) { - searchLocationBased(); - } - }, [isChecked]); - const onClickSearchButton = (isCheck: boolean) => { setIsChecked(isCheck); + + if (isCheck) { + searchLocationBased(); + } }; const searchLocationBased = async () => { const data = await getLocationBasedSearch(); - console.log(data); - data && setStoreInfo(data); + setStoreInfo(data); }; return ( diff --git a/week4-ts/src/services/index.ts b/week4-ts/src/services/index.ts index 377fd03..b9683ad 100644 --- a/week4-ts/src/services/index.ts +++ b/week4-ts/src/services/index.ts @@ -23,7 +23,7 @@ export const getLocationBasedSearch = async (): Promise => { }, } ); - return data.document; + return data.documents; }; export const getLocation = (): Location | Promise => { From 61fe63298f91eed783a6da947010917740473fb1 Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 16:43:10 +0900 Subject: [PATCH 08/14] =?UTF-8?q?feat:=20=EC=8A=A4=EC=BC=88=EB=A0=88?= =?UTF-8?q?=ED=86=A4=20UI=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/src/components/ResultSection.tsx | 46 ++++++++++++++--------- week4-ts/src/pages/MainPage.tsx | 9 ++++- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/week4-ts/src/components/ResultSection.tsx b/week4-ts/src/components/ResultSection.tsx index d1f326f..629b45c 100644 --- a/week4-ts/src/components/ResultSection.tsx +++ b/week4-ts/src/components/ResultSection.tsx @@ -1,35 +1,43 @@ import { Store } from "../types"; import styled from "styled-components"; +import Skeleton from "../components/Skeleton"; interface ResultSectionProps { storeInfo: Store[]; isCheck: boolean; + isLoading: boolean; } export default function ResultSection({ storeInfo, isCheck, + isLoading, }: ResultSectionProps) { return ( <> - {storeInfo?.map( - ( - { place_url, place_name, phone, distance, address_name }: Store, - idx: number - ) => ( - - {place_name} - -

{phone || "번호 없음"}

- {!isCheck ? ( -

{distance}m

- ) : ( -

{address_name}

- )} -
-
- ) - )} + {isLoading && + new Array(10).fill(1).map((_, idx) => { + return ; + })} + {!isLoading && + storeInfo?.map( + ( + { place_url, place_name, phone, distance, address_name }: Store, + idx: number + ) => ( + + {place_name} + +

{phone || "번호 없음"}

+ {!isCheck ? ( +

{distance}m

+ ) : ( +

{address_name}

+ )} +
+
+ ) + )} ); } @@ -38,6 +46,7 @@ const StCard = styled.li` flex-direction: column; justify-content: center; gap: 20px; + width: 280px; height: 80px; font-size: 14px; background-color: #fff; @@ -50,6 +59,7 @@ const StCard = styled.li` font-weight: 700; padding-left: 20px; cursor: pointer; + color: inherit; } `; diff --git a/week4-ts/src/pages/MainPage.tsx b/week4-ts/src/pages/MainPage.tsx index fb34b7f..c7cd856 100644 --- a/week4-ts/src/pages/MainPage.tsx +++ b/week4-ts/src/pages/MainPage.tsx @@ -8,9 +8,11 @@ import { getLocationBasedSearch } from "../services"; export default function MainPage() { const [storeInfo, setStoreInfo] = useState([]); const [isChecked, setIsChecked] = useState(false); + const [isLoading, setIsLoading] = useState(true); const onClickSearchButton = (isCheck: boolean) => { setIsChecked(isCheck); + setIsLoading(true); if (isCheck) { searchLocationBased(); @@ -21,6 +23,7 @@ export default function MainPage() { const data = await getLocationBasedSearch(); setStoreInfo(data); + setIsLoading(false); }; return ( @@ -32,7 +35,11 @@ export default function MainPage() { onClickSearchButton(isCheck)} /> - + ); } From a906ab37fd7d2de47959c66bee776b93de1e1a05 Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 16:46:23 +0900 Subject: [PATCH 09/14] =?UTF-8?q?feat:=20=EB=8F=99=EB=84=A4=20=EA=B8=B0?= =?UTF-8?q?=EB=B0=98=20=EC=9C=84=EC=B9=98=EA=B2=80=EC=83=89=20api=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 --- week4-ts/src/services/index.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/week4-ts/src/services/index.ts b/week4-ts/src/services/index.ts index b9683ad..de7501b 100644 --- a/week4-ts/src/services/index.ts +++ b/week4-ts/src/services/index.ts @@ -26,6 +26,27 @@ export const getLocationBasedSearch = async (): Promise => { return data.documents; }; +export const getStoreBasedTown = async (town: string): Promise => { + const location = await getLocation(); + const { x, y } = location; + + const { data } = await axios.get( + "https://dapi.kakao.com//v2/local/search/keyword", + { + headers: { + Authorization: `KakaoAK ${import.meta.env.VITE_APP_KAKAO_AK}`, + }, + params: { + x: x, + y: y, + radius: 1000, + query: `${town} 노래방`, + }, + } + ); + return data.documents; +}; + export const getLocation = (): Location | Promise => { if ("geolocation" in navigator) { return new Promise((resolve) => { From 8e6d0004e50dd29af17a6ae70b5c1de45e406543 Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 17:39:42 +0900 Subject: [PATCH 10/14] =?UTF-8?q?feat:=20=EC=B9=B4=EB=93=9C=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=EB=B6=84=EB=A6=AC=20=EB=B0=8F=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/src/components/ResultSection.tsx | 71 ++-------------------- week4-ts/src/components/SearchSection.tsx | 13 +++- week4-ts/src/components/StoreCard.tsx | 73 ++++++++++++++++++++++- week4-ts/src/pages/MainPage.tsx | 32 ++++++++-- week4-ts/src/types/index.ts | 2 +- 5 files changed, 113 insertions(+), 78 deletions(-) diff --git a/week4-ts/src/components/ResultSection.tsx b/week4-ts/src/components/ResultSection.tsx index 629b45c..8d68df5 100644 --- a/week4-ts/src/components/ResultSection.tsx +++ b/week4-ts/src/components/ResultSection.tsx @@ -1,6 +1,6 @@ import { Store } from "../types"; -import styled from "styled-components"; import Skeleton from "../components/Skeleton"; +import StoreCard from "./StoreCard"; interface ResultSectionProps { storeInfo: Store[]; @@ -20,72 +20,9 @@ export default function ResultSection({ return ; })} {!isLoading && - storeInfo?.map( - ( - { place_url, place_name, phone, distance, address_name }: Store, - idx: number - ) => ( - - {place_name} - -

{phone || "번호 없음"}

- {!isCheck ? ( -

{distance}m

- ) : ( -

{address_name}

- )} -
-
- ) - )} + storeInfo?.map((store: Store, idx: number) => ( + + ))} ); } -const StCard = styled.li` - display: flex; - flex-direction: column; - justify-content: center; - gap: 20px; - width: 280px; - height: 80px; - font-size: 14px; - background-color: #fff; - color: #000; - border-radius: 10px; - - & > a { - height: fit-content; - font-size: 18px; - font-weight: 700; - padding-left: 20px; - cursor: pointer; - color: inherit; - } -`; - -const StCardInfo = styled.div` - display: flex; - gap: 20px; - width: 100%; - font-weight: 400; - justify-content: space-between; - - & > .info__tel { - width: 100px; - height: 20px; - display: flex; - justify-content: center; - align-items: center; - margin-left: 20px; - border-radius: 15px; - background-color: #828282; - color: #fff; - font-size: 12px; - font-weight: 700; - } - - & > .info__address { - max-width: 150px; - padding-right: 10px; - } -`; diff --git a/week4-ts/src/components/SearchSection.tsx b/week4-ts/src/components/SearchSection.tsx index d611c9e..80a90d1 100644 --- a/week4-ts/src/components/SearchSection.tsx +++ b/week4-ts/src/components/SearchSection.tsx @@ -1,12 +1,18 @@ import styled from "styled-components"; -import { useState } from "react"; +import { useState, useEffect } from "react"; interface SearchSectionProps { - onClick: (isCheck: boolean) => void; + onClick: (isCheck: boolean, myTown: string) => void; } export default function SearchSection({ onClick }: SearchSectionProps) { const [isCheck, setIsCheck] = useState(false); + const [myTown, setMyTown] = useState(""); + + useEffect(() => { + if (isCheck) setMyTown(""); + }, [isCheck]); + return ( @@ -24,10 +30,11 @@ export default function SearchSection({ onClick }: SearchSectionProps) { type="text" placeholder="지역을 입력해주세요." disabled={isCheck} + onChange={(e) => setMyTown(e.target.value)} /> - onClick(isCheck)}> + onClick(isCheck, myTown)}> 검색하기 diff --git a/week4-ts/src/components/StoreCard.tsx b/week4-ts/src/components/StoreCard.tsx index 276ef2d..f977478 100644 --- a/week4-ts/src/components/StoreCard.tsx +++ b/week4-ts/src/components/StoreCard.tsx @@ -1,3 +1,72 @@ -export default function StoreCard() { - return
StoreCard
; +import styled from "styled-components"; +import { Store } from "../types"; + +interface StoreCardProps { + store: Store; + isCheck: boolean; } + +export default function StoreCard({ store, isCheck }: StoreCardProps) { + const { place_url, place_name, phone, distance, address_name } = store; + + return ( + + {place_name} + +

{phone || "번호 없음"}

+ {!isCheck ? ( +

{distance}m

+ ) : ( +

{address_name}

+ )} +
+
+ ); +} +const StCard = styled.li` + display: flex; + flex-direction: column; + justify-content: center; + gap: 20px; + width: 280px; + height: 80px; + font-size: 14px; + background-color: #fff; + color: #000; + border-radius: 10px; + + & > a { + height: fit-content; + font-size: 16px; + font-weight: 700; + padding-left: 20px; + cursor: pointer; + color: inherit; + } +`; + +const StCardInfo = styled.div` + display: flex; + gap: 20px; + width: 95%; + font-weight: 400; + justify-content: space-between; + + & > .info__tel { + width: 100px; + height: 20px; + display: flex; + justify-content: center; + align-items: center; + margin-left: 20px; + border-radius: 15px; + background-color: #828282; + color: #fff; + font-size: 12px; + font-weight: 700; + } + + & > .info__address { + max-width: 150px; + } +`; diff --git a/week4-ts/src/pages/MainPage.tsx b/week4-ts/src/pages/MainPage.tsx index c7cd856..2f94011 100644 --- a/week4-ts/src/pages/MainPage.tsx +++ b/week4-ts/src/pages/MainPage.tsx @@ -3,19 +3,21 @@ import SearchSection from "../components/SearchSection"; import ResultSection from "../components/ResultSection"; import { useState, useEffect } from "react"; import { Store } from "../types"; -import { getLocationBasedSearch } from "../services"; +import { getLocationBasedSearch, getStoreBasedTown } from "../services"; export default function MainPage() { const [storeInfo, setStoreInfo] = useState([]); const [isChecked, setIsChecked] = useState(false); - const [isLoading, setIsLoading] = useState(true); + const [isLoading, setIsLoading] = useState(false); - const onClickSearchButton = (isCheck: boolean) => { + const onClickSearchButton = (isCheck: boolean, myTown: string) => { setIsChecked(isCheck); setIsLoading(true); if (isCheck) { searchLocationBased(); + } else { + searchTownBased(myTown); } }; @@ -26,6 +28,13 @@ export default function MainPage() { setIsLoading(false); }; + const searchTownBased = async (myTown: string) => { + const data = await getStoreBasedTown(myTown); + + setStoreInfo(data); + setIsLoading(false); + }; + return ( @@ -33,7 +42,9 @@ export default function MainPage() { onClickSearchButton(isCheck)} + onClick={(isCheck: boolean, myTown: string) => + onClickSearchButton(isCheck, myTown) + } /> h1 { color: #fff; font-weight: bold; + font-size: 22px; + background-image: linear-gradient( + 90deg, + red, + orange, + yellow, + green, + aqua, + purple + ); + -webkit-background-clip: text; + color: transparent; } `; diff --git a/week4-ts/src/types/index.ts b/week4-ts/src/types/index.ts index ceeaaec..68eb017 100644 --- a/week4-ts/src/types/index.ts +++ b/week4-ts/src/types/index.ts @@ -2,6 +2,6 @@ export interface Store { place_url: string; place_name: string; phone: string; - distance?: number; + distance: number; address_name: string; } From b28ed640195898dfe2990bbfc0800c76c3062653 Mon Sep 17 00:00:00 2001 From: leeseooo Date: Thu, 23 Jun 2022 17:53:21 +0900 Subject: [PATCH 11/14] =?UTF-8?q?chore:=20=EC=B2=B4=ED=81=AC=EB=B0=95?= =?UTF-8?q?=EC=8A=A4=20=EC=B2=B4=ED=81=AC=20=EC=8B=9C=20=EA=B2=80=EC=83=89?= =?UTF-8?q?=EC=B0=BD=20=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/src/components/SearchSection.tsx | 1 + week4-ts/src/services/index.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/week4-ts/src/components/SearchSection.tsx b/week4-ts/src/components/SearchSection.tsx index 80a90d1..68bffdd 100644 --- a/week4-ts/src/components/SearchSection.tsx +++ b/week4-ts/src/components/SearchSection.tsx @@ -30,6 +30,7 @@ export default function SearchSection({ onClick }: SearchSectionProps) { type="text" placeholder="지역을 입력해주세요." disabled={isCheck} + value={myTown} onChange={(e) => setMyTown(e.target.value)} /> diff --git a/week4-ts/src/services/index.ts b/week4-ts/src/services/index.ts index de7501b..3df8483 100644 --- a/week4-ts/src/services/index.ts +++ b/week4-ts/src/services/index.ts @@ -31,7 +31,7 @@ export const getStoreBasedTown = async (town: string): Promise => { const { x, y } = location; const { data } = await axios.get( - "https://dapi.kakao.com//v2/local/search/keyword", + "https://dapi.kakao.com/v2/local/search/keyword", { headers: { Authorization: `KakaoAK ${import.meta.env.VITE_APP_KAKAO_AK}`, From 39bb6b0d0201cd39eaabb613da93aa9aadb7710d Mon Sep 17 00:00:00 2001 From: leeseooo Date: Fri, 24 Jun 2022 23:51:12 +0900 Subject: [PATCH 12/14] =?UTF-8?q?chore:=20=EA=B2=80=EC=83=89=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=EC=97=86=EC=9D=8C=20=EC=B2=98=EB=A6=AC=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 --- week4-ts/src/components/ResultSection.tsx | 3 ++ week4-ts/src/pages/MainPage.tsx | 20 +++++----- week4-ts/src/services/api.ts | 8 ++++ week4-ts/src/services/index.ts | 46 +++++++++-------------- 4 files changed, 39 insertions(+), 38 deletions(-) create mode 100644 week4-ts/src/services/api.ts diff --git a/week4-ts/src/components/ResultSection.tsx b/week4-ts/src/components/ResultSection.tsx index 8d68df5..0e2508f 100644 --- a/week4-ts/src/components/ResultSection.tsx +++ b/week4-ts/src/components/ResultSection.tsx @@ -19,6 +19,9 @@ export default function ResultSection({ new Array(10).fill(1).map((_, idx) => { return ; })} + {!isLoading && storeInfo.length === 0 && ( +
검색 결과가 없습니다.
+ )} {!isLoading && storeInfo?.map((store: Store, idx: number) => ( diff --git a/week4-ts/src/pages/MainPage.tsx b/week4-ts/src/pages/MainPage.tsx index 2f94011..25d7e43 100644 --- a/week4-ts/src/pages/MainPage.tsx +++ b/week4-ts/src/pages/MainPage.tsx @@ -1,7 +1,7 @@ import styled from "styled-components"; import SearchSection from "../components/SearchSection"; import ResultSection from "../components/ResultSection"; -import { useState, useEffect } from "react"; +import { useState } from "react"; import { Store } from "../types"; import { getLocationBasedSearch, getStoreBasedTown } from "../services"; @@ -15,24 +15,26 @@ export default function MainPage() { setIsLoading(true); if (isCheck) { - searchLocationBased(); + searchLocationBased().then((res) => { + setStoreInfo(res); + setIsLoading(false); + }); } else { - searchTownBased(myTown); + searchTownBased(myTown).then((res) => { + setStoreInfo(res); + setIsLoading(false); + }); } }; const searchLocationBased = async () => { const data = await getLocationBasedSearch(); - - setStoreInfo(data); - setIsLoading(false); + return data; }; const searchTownBased = async (myTown: string) => { const data = await getStoreBasedTown(myTown); - - setStoreInfo(data); - setIsLoading(false); + return data; }; return ( diff --git a/week4-ts/src/services/api.ts b/week4-ts/src/services/api.ts new file mode 100644 index 0000000..0c54e6b --- /dev/null +++ b/week4-ts/src/services/api.ts @@ -0,0 +1,8 @@ +import axios from "axios"; + +export const api = axios.create({ + baseURL: "https://dapi.kakao.com/v2/local/search/keyword", + headers: { + Authorization: `KakaoAK ${import.meta.env.VITE_APP_KAKAO_AK}`, + }, +}); diff --git a/week4-ts/src/services/index.ts b/week4-ts/src/services/index.ts index 3df8483..cca80a8 100644 --- a/week4-ts/src/services/index.ts +++ b/week4-ts/src/services/index.ts @@ -1,4 +1,4 @@ -import axios from "axios"; +import { api } from "./api"; import { Store } from "../types"; interface Location { @@ -9,20 +9,14 @@ export const getLocationBasedSearch = async (): Promise => { const location = await getLocation(); const { x, y } = location; - const { data } = await axios.get( - "https://dapi.kakao.com//v2/local/search/keyword", - { - headers: { - Authorization: `KakaoAK ${import.meta.env.VITE_APP_KAKAO_AK}`, - }, - params: { - x: x, - y: y, - radius: 1000, - query: "노래방", - }, - } - ); + const { data } = await api.get("", { + params: { + x: x, + y: y, + radius: 1000, + query: "노래방", + }, + }); return data.documents; }; @@ -30,20 +24,14 @@ export const getStoreBasedTown = async (town: string): Promise => { const location = await getLocation(); const { x, y } = location; - const { data } = await axios.get( - "https://dapi.kakao.com/v2/local/search/keyword", - { - headers: { - Authorization: `KakaoAK ${import.meta.env.VITE_APP_KAKAO_AK}`, - }, - params: { - x: x, - y: y, - radius: 1000, - query: `${town} 노래방`, - }, - } - ); + const { data } = await api.get("", { + params: { + x: x, + y: y, + radius: 1000, + query: `${town}노래방`, + }, + }); return data.documents; }; From c910b98e33be838c77ad640416230f4c2bdb8e1d Mon Sep 17 00:00:00 2001 From: leeseooo Date: Fri, 24 Jun 2022 23:59:29 +0900 Subject: [PATCH 13/14] =?UTF-8?q?chore:=20=EC=A7=80=EC=97=AD=EA=B8=B0?= =?UTF-8?q?=EB=B0=98=EC=9D=BC=20=EB=95=8C=20=EA=B1=B0=EB=A6=AC=20=ED=91=9C?= =?UTF-8?q?=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4-ts/src/components/StoreCard.tsx | 6 ++++-- week4-ts/src/services/index.ts | 8 +------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/week4-ts/src/components/StoreCard.tsx b/week4-ts/src/components/StoreCard.tsx index f977478..c000ae5 100644 --- a/week4-ts/src/components/StoreCard.tsx +++ b/week4-ts/src/components/StoreCard.tsx @@ -14,7 +14,7 @@ export default function StoreCard({ store, isCheck }: StoreCardProps) { {place_name}

{phone || "번호 없음"}

- {!isCheck ? ( + {isCheck ? (

{distance}m

) : (

{address_name}

@@ -54,7 +54,8 @@ const StCardInfo = styled.div` & > .info__tel { width: 100px; - height: 20px; + height: fit-content; + min-height: 20px; display: flex; justify-content: center; align-items: center; @@ -64,6 +65,7 @@ const StCardInfo = styled.div` color: #fff; font-size: 12px; font-weight: 700; + text-align: center; } & > .info__address { diff --git a/week4-ts/src/services/index.ts b/week4-ts/src/services/index.ts index cca80a8..051190c 100644 --- a/week4-ts/src/services/index.ts +++ b/week4-ts/src/services/index.ts @@ -21,15 +21,9 @@ export const getLocationBasedSearch = async (): Promise => { }; export const getStoreBasedTown = async (town: string): Promise => { - const location = await getLocation(); - const { x, y } = location; - const { data } = await api.get("", { params: { - x: x, - y: y, - radius: 1000, - query: `${town}노래방`, + query: `${town} 노래방`, }, }); return data.documents; From 332b8799bc8e6d2909c4d9edfaf340f8465c4f75 Mon Sep 17 00:00:00 2001 From: leeseooo Date: Sat, 25 Jun 2022 00:16:53 +0900 Subject: [PATCH 14/14] =?UTF-8?q?chore:=20=EA=B2=B0=EA=B3=BC=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=20=EC=82=BC=ED=95=AD=EC=97=B0=EC=82=B0=EC=9E=90?= =?UTF-8?q?=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 --- week4-ts/src/components/ResultSection.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/week4-ts/src/components/ResultSection.tsx b/week4-ts/src/components/ResultSection.tsx index 0e2508f..7010eca 100644 --- a/week4-ts/src/components/ResultSection.tsx +++ b/week4-ts/src/components/ResultSection.tsx @@ -19,13 +19,13 @@ export default function ResultSection({ new Array(10).fill(1).map((_, idx) => { return ; })} - {!isLoading && storeInfo.length === 0 && ( + {!isLoading && storeInfo.length === 0 ? (
검색 결과가 없습니다.
- )} - {!isLoading && + ) : ( storeInfo?.map((store: Store, idx: number) => ( - ))} + )) + )} ); }