From 9eccd7691517c868a856bd9f73d8829b4f597971 Mon Sep 17 00:00:00 2001 From: Hennization Date: Thu, 16 Jun 2022 18:10:04 +0900 Subject: [PATCH 01/15] =?UTF-8?q?init:=20=ED=8F=B4=EB=8D=94=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/.gitignore | 24 + week4_ts/index.html | 13 + week4_ts/package.json | 26 + week4_ts/reset.css | 129 +++ week4_ts/src/App.tsx | 5 + week4_ts/src/components/Header.tsx | 5 + week4_ts/src/components/ResultSection.tsx | 5 + .../src/components/StoreArticle/Skeleton.tsx | 5 + .../components/StoreArticle/StoreArticle.tsx | 5 + .../components/StoreArticle/articlestyle.tsx | 5 + week4_ts/src/core/router.tsx | 14 + week4_ts/src/index.tsx | 10 + week4_ts/src/mixxin/index.ts | 12 + week4_ts/src/pages/Main/index.tsx | 47 + week4_ts/src/pages/NotFound/index.tsx | 3 + week4_ts/src/style/globalStyle.ts | 31 + week4_ts/src/util/getLocation.ts | 20 + 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 | 902 ++++++++++++++++++ 22 files changed, 1298 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/reset.css create mode 100644 week4_ts/src/App.tsx create mode 100644 week4_ts/src/components/Header.tsx create mode 100644 week4_ts/src/components/ResultSection.tsx create mode 100644 week4_ts/src/components/StoreArticle/Skeleton.tsx create mode 100644 week4_ts/src/components/StoreArticle/StoreArticle.tsx create mode 100644 week4_ts/src/components/StoreArticle/articlestyle.tsx create mode 100644 week4_ts/src/core/router.tsx create mode 100644 week4_ts/src/index.tsx create mode 100644 week4_ts/src/mixxin/index.ts create mode 100644 week4_ts/src/pages/Main/index.tsx create mode 100644 week4_ts/src/pages/NotFound/index.tsx create mode 100644 week4_ts/src/style/globalStyle.ts create mode 100644 week4_ts/src/util/getLocation.ts 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..e1db463 --- /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..6174b58 --- /dev/null +++ b/week4_ts/package.json @@ -0,0 +1,26 @@ +{ + "name": "week4_ts", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@types/react-router-dom": "^5.3.3", + "@types/styled-components": "^5.1.25", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "react-router-dom": "^6.3.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/reset.css b/week4_ts/reset.css new file mode 100644 index 0000000..45a05ec --- /dev/null +++ b/week4_ts/reset.css @@ -0,0 +1,129 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; +} +body { + line-height: 1; +} +ol, +ul { + list-style: none; +} +blockquote, +q { + quotes: none; +} +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ""; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/week4_ts/src/App.tsx b/week4_ts/src/App.tsx new file mode 100644 index 0000000..cd6abe1 --- /dev/null +++ b/week4_ts/src/App.tsx @@ -0,0 +1,5 @@ +import Router from "./core/router"; + +export default function App() { + return ; +} diff --git a/week4_ts/src/components/Header.tsx b/week4_ts/src/components/Header.tsx new file mode 100644 index 0000000..ccaa69f --- /dev/null +++ b/week4_ts/src/components/Header.tsx @@ -0,0 +1,5 @@ +import React from "react"; + +export default function Header() { + return
Header
; +} diff --git a/week4_ts/src/components/ResultSection.tsx b/week4_ts/src/components/ResultSection.tsx new file mode 100644 index 0000000..e2761e8 --- /dev/null +++ b/week4_ts/src/components/ResultSection.tsx @@ -0,0 +1,5 @@ +import React from "react"; + +export default function ResultSection() { + return
ResultSection
; +} diff --git a/week4_ts/src/components/StoreArticle/Skeleton.tsx b/week4_ts/src/components/StoreArticle/Skeleton.tsx new file mode 100644 index 0000000..7b9bb5b --- /dev/null +++ b/week4_ts/src/components/StoreArticle/Skeleton.tsx @@ -0,0 +1,5 @@ +import React from "react"; + +export default function Skeleton() { + return
Skeleton
; +} diff --git a/week4_ts/src/components/StoreArticle/StoreArticle.tsx b/week4_ts/src/components/StoreArticle/StoreArticle.tsx new file mode 100644 index 0000000..8a719b2 --- /dev/null +++ b/week4_ts/src/components/StoreArticle/StoreArticle.tsx @@ -0,0 +1,5 @@ +import React from "react"; + +export default function StoreArticle() { + return
StoreArticle
; +} diff --git a/week4_ts/src/components/StoreArticle/articlestyle.tsx b/week4_ts/src/components/StoreArticle/articlestyle.tsx new file mode 100644 index 0000000..9ab2ed6 --- /dev/null +++ b/week4_ts/src/components/StoreArticle/articlestyle.tsx @@ -0,0 +1,5 @@ +import React from "react"; + +export default function articlestyle() { + return
articlestyle
; +} diff --git a/week4_ts/src/core/router.tsx b/week4_ts/src/core/router.tsx new file mode 100644 index 0000000..d629c99 --- /dev/null +++ b/week4_ts/src/core/router.tsx @@ -0,0 +1,14 @@ +import { BrowserRouter, Route, Routes } from "react-router-dom"; +import Main from "../pages/Main"; +import NotFound from "../pages/NotFound"; + +export default function router() { + return ( + + + } /> + } /> + + + ); +} diff --git a/week4_ts/src/index.tsx b/week4_ts/src/index.tsx new file mode 100644 index 0000000..59f5da8 --- /dev/null +++ b/week4_ts/src/index.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/mixxin/index.ts b/week4_ts/src/mixxin/index.ts new file mode 100644 index 0000000..e08d8d2 --- /dev/null +++ b/week4_ts/src/mixxin/index.ts @@ -0,0 +1,12 @@ +export const flexColumnCenter = ` + display: flex; + flex-direction: column; + justify-contents: center; + align-items: center; +`; + +export const flexRowCenter = ` + display: flex; + justify-contents: center; + align-items: center; +`; diff --git a/week4_ts/src/pages/Main/index.tsx b/week4_ts/src/pages/Main/index.tsx new file mode 100644 index 0000000..a0ea830 --- /dev/null +++ b/week4_ts/src/pages/Main/index.tsx @@ -0,0 +1,47 @@ +import { useState } from "react"; +import styled from "styled-components"; +import { flexColumnCenter } from "../../mixxin"; +import Header from "../../components/Header"; +import ResultSection from "../../components/ResultSection"; + +export default function Main() { + const [results, setResults] = useState([]); + const [isSearch, setIsSearch] = useState(false); + + const handleResults = (newResults) => { + setResults(newResults); + }; + const handleIsSearch = (newIsSearch) => { + setIsSearch(newIsSearch); + }; + + return ( + + {/* Header에 뭐를 props로 내려주고 있나요? */} +
+ + + + + ); +} + +const Styled = { + Root: styled.main` + ${flexColumnCenter} + width: 100%; + height: 100%; + overflow: hidden; + font-size: 5rem; + background-color: lemonchiffon; + + & h1 { + margin-top: 2rem; + } + `, + SectionWrapper: styled.div` + ${flexColumnCenter} + width: 100%; + height: 100%; + `, +}; diff --git a/week4_ts/src/pages/NotFound/index.tsx b/week4_ts/src/pages/NotFound/index.tsx new file mode 100644 index 0000000..07f2a1e --- /dev/null +++ b/week4_ts/src/pages/NotFound/index.tsx @@ -0,0 +1,3 @@ +export default function NotFound() { + return
NotFound
; +} diff --git a/week4_ts/src/style/globalStyle.ts b/week4_ts/src/style/globalStyle.ts new file mode 100644 index 0000000..6536d43 --- /dev/null +++ b/week4_ts/src/style/globalStyle.ts @@ -0,0 +1,31 @@ +import { createGlobalStyle } from "styled-components"; +import reset from "styled-reset"; + +const GlobalStyle = createGlobalStyle` +@font-face { + font-family: 'ParkYongJun'; + src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_220508@1.0/ParkYongJun.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} +${reset} +#root, body, html { + width: 100%; + height: auto; + font-family: 'ParkYongJun'; + background-repeat: repeat; + background-position: center; + background-size: auto; +} +html { + font-size: 62.5%; +} +* { + + box-sizing: border-box; + font-family: 'ParkYongJun'; + + } +`; + +export default GlobalStyle; diff --git a/week4_ts/src/util/getLocation.ts b/week4_ts/src/util/getLocation.ts new file mode 100644 index 0000000..1c51474 --- /dev/null +++ b/week4_ts/src/util/getLocation.ts @@ -0,0 +1,20 @@ +export const getLocation = (errHandler) => { + 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 연결을 확인해주세요."); + errHandler && errHandler(); + } + ); + }); + } + + return { x: 126.942173, y: 37.556293 }; // 신촌 포스빌~ +}; 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..1ecd06d --- /dev/null +++ b/week4_ts/yarn.lock @@ -0,0 +1,902 @@ +# 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/runtime@^7.7.6": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== + dependencies: + regenerator-runtime "^0.13.4" + +"@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/history@^4.7.11": + version "4.7.11" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== + +"@types/hoist-non-react-statics@*": + version "3.3.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-router-dom@^5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" + integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router" "*" + +"@types/react-router@*": + version "5.1.18" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.18.tgz#c8851884b60bc23733500d86c1266e1cfbbd9ef3" + integrity sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + +"@types/react@*", "@types/react@^18.0.0": + version "18.0.12" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.12.tgz#cdaa209d0a542b3fcf69cf31a03976ec4cdd8840" + integrity sha512-duF1OTASSBQtcigUvhuiTB1Ya3OvSy+xORCiEf20H0P0lzx+/KeVsA99U5UjLXSbyo1DRJDlLKqTeM1ngosqtg== + 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" + +"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.20.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" + integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== + dependencies: + caniuse-lite "^1.0.30001349" + electron-to-chromium "^1.4.147" + escalade "^3.1.1" + node-releases "^2.0.5" + picocolors "^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.30001349: + version "1.0.30001355" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001355.tgz#e240b7177443ed0198c737a7f609536976701c77" + integrity sha512-Sd6pjJHF27LzCB7pT7qs+kuX2ndurzCzkpJl6Qct7LPSZ9jn0bkOA8mdgMgmqnQAWLVOOGjLpc+66V57eLtb1g== + +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== + +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" + +electron-to-chromium@^1.4.147: + version "1.4.158" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.158.tgz#abbdaaf64676bfa4bc0307522125db34424a0ada" + integrity sha512-gppO3/+Y6sP432HtvwvuU8S+YYYLH4PmAYvQwqUtt9HDOmEsBwQfLnK9T8+1NIKwAS1BEygIjTaATC4H5EzvxQ== + +esbuild-android-64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.44.tgz#62f5cb563d0ba318d898b6eb230c61ad3dc93619" + integrity sha512-dFPHBXmx385zuJULAD/Cmq/LyPRXiAWbf9ylZtY0wJ8iVyWfKYaCYxeJx8OAZUuj46ZwNa7MzW2GBAQLOeiemg== + +esbuild-android-arm64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.44.tgz#ee7fcc9f47855b3395dfd1abcc2c43d8c53e57db" + integrity sha512-qqaqqyxHXjZ/0ddKU3I3Nb7lAvVM69ELMhb8+91FyomAUmQPlHtxe+TTiWxXGHE72XEzcgTEGq4VauqLNkN22g== + +esbuild-darwin-64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.44.tgz#75ea7f594687a7189a8ba62070d42f13178e68d0" + integrity sha512-RBmtGKGY06+AW6IOJ1LE/dEeF7HH34C1/Ces9FSitU4bIbIpL4KEuQpTFoxwb4ry5s2hyw7vbPhhtyOd18FH9g== + +esbuild-darwin-arm64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.44.tgz#550631fd135688abda042f4039b962a27f3a5f78" + integrity sha512-Bmhx5Cfo4Hdb7WyyyDupTB8HPmnFZ8baLfPlzLdYvF6OzsIbV+CY+m/AWf0OQvY40BlkzCLJ/7Lfwbb71Tngmg== + +esbuild-freebsd-64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.44.tgz#f98069b964266ca79bb361cfb9d7454a05b7e8ca" + integrity sha512-O4HpWa5ZgxbNPQTF7URicLzYa+TidGlmGT/RAC3GjbGEQQYkd0R1Slyh69Yrmb2qmcOcPAgWHbNo1UhK4WmZ4w== + +esbuild-freebsd-arm64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.44.tgz#247a8553d6033a58b6c3ba4d539216300497d7f6" + integrity sha512-f0/jkAKccnDY7mg1F9l/AMzEm+VXWXK6c3IrOEmd13jyKfpTZKTIlt+yI04THPDCDZTzXHTRUBLozqp+m8Mg5Q== + +esbuild-linux-32@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.44.tgz#4b72747f9f367d3ee3c1d80bf75c617e6b109821" + integrity sha512-WSIhzLldMR7YUoEL7Ix319tC+NFmW9Pu7NgFWxUfOXeWsT0Wg484hm6bNgs7+oY2pGzg715y/Wrqi1uNOMmZJw== + +esbuild-linux-64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.44.tgz#6cd158fdd11f8d037c45139ccddb4fa5966f7ab6" + integrity sha512-zgscTrCMcRZRIsVugqBTP/B5lPLNchBlWjQ8sQq2Epnv+UDtYKgXEq1ctWAmibZNy2E9QRCItKMeIEqeTUT5kA== + +esbuild-linux-arm64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.44.tgz#f14f3c8c3501067f5b2cef7a79c9a0058092cb22" + integrity sha512-H0H/2/wgiScTwBve/JR8/o+Zhabx5KPk8T2mkYZFKQGl1hpUgC+AOmRyqy/Js3p66Wim4F4Akv3I3sJA1sKg0w== + +esbuild-linux-arm@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.44.tgz#625478cc6ea4f64f5335e7fb07f80d6f659aeb5c" + integrity sha512-laPBPwGfsbBxGw6F6jnqic2CPXLyC1bPrmnSOeJ9oEnx1rcKkizd4HWCRUc0xv+l4z/USRfx/sEfYlWSLeqoJQ== + +esbuild-linux-mips64le@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.44.tgz#593c909bb612998300af7f7db2809a63a0d62eec" + integrity sha512-ri3Okw0aleYy7o5n9zlIq+FCtq3tcMlctN6X1H1ucILjBJuH8pan2trJPKWeb8ppntFvE28I9eEXhwkWh6wYKg== + +esbuild-linux-ppc64le@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.44.tgz#8fc2fcee671e322a5d44fcf8da6889095a187df9" + integrity sha512-96TqL/MvFRuIVXz+GtCIXzRQ43ZwEk4XTn0RWUNJduXXMDQ/V1iOV28U6x6Oe3NesK4xkoKSaK2+F3VHcU8ZrA== + +esbuild-linux-riscv64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.44.tgz#cc2b7158c8345b67e74458a0ec020c80ca777046" + integrity sha512-rrK9qEp2M8dhilsPn4T9gxUsAumkITc1kqYbpyNMr9EWo+J5ZBj04n3GYldULrcCw4ZCHAJ+qPjqr8b6kG2inA== + +esbuild-linux-s390x@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.44.tgz#5a1e87d5d6236a8791026820936478f3b9cf8e35" + integrity sha512-2YmTm9BrW5aUwBSe8wIEARd9EcnOQmkHp4+IVaO09Ez/C5T866x+ABzhG0bwx0b+QRo9q97CRMaQx2Ngb6/hfw== + +esbuild-netbsd-64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.44.tgz#8afb16880b530264ce2ed9fb3df26071eb841312" + integrity sha512-zypdzPmZTCqYS30WHxbcvtC0E6e/ECvl4WueUdbdWhs2dfWJt5RtCBME664EpTznixR3lSN1MQ2NhwQF8MQryw== + +esbuild-openbsd-64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.44.tgz#a87455be446d6f5b07a60f060e1eafad454c9d4b" + integrity sha512-8J43ab9ByYl7KteC03HGQjr2HY1ge7sN04lFnwMFWYk2NCn8IuaeeThvLeNjzOYhyT3I6K8puJP0uVXUu+D1xw== + +esbuild-sunos-64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.44.tgz#74ce7d5fd815fa60fe0a85b9db7549b1dcb32804" + integrity sha512-OH1/09CGUJwffA+HNM6mqPkSIyHVC3ZnURU/4CCIx7IqWUBn1Sh1HRLQC8/TWNgcs0/1u7ygnc2pgf/AHZJ/Ow== + +esbuild-windows-32@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.44.tgz#499e1c6cb46c216bdcb62f5b006fec3999bb06a7" + integrity sha512-mCAOL9/rRqwfOfxTu2sjq/eAIs7eAXGiU6sPBnowggI7QS953Iq6o3/uDu010LwfN7zr18c/lEj6/PTwwTB3AA== + +esbuild-windows-64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.44.tgz#a8dae69a4615b17f62375859ce9536dd96940a06" + integrity sha512-AG6BH3+YG0s2Q/IfB1cm68FdyFnoE1P+GFbmgFO3tA4UIP8+BKsmKGGZ5I3+ZjcnzOwvT74bQRVrfnQow2KO5Q== + +esbuild-windows-arm64@0.14.44: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.44.tgz#db73bb68aa75a880bdaa938ccacc0f17e7a4bfea" + integrity sha512-ygYPfYE5By4Sd6szsNr10B0RtWVNOSGmZABSaj4YQBLqh9b9i45VAjVWa8tyIy+UAbKF7WGwybi2wTbSVliO8A== + +esbuild@^0.14.27: + version "0.14.44" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.44.tgz#27fa3cd4f55d36780650c7f32cab581abc7a4473" + integrity sha512-Rn+lRRfj60r/3svI6NgAVnetzp3vMOj17BThuhshSj/gS1LR03xrjkDYyfPmrYG/0c3D68rC6FNYMQ3yRbiXeQ== + optionalDependencies: + esbuild-android-64 "0.14.44" + esbuild-android-arm64 "0.14.44" + esbuild-darwin-64 "0.14.44" + esbuild-darwin-arm64 "0.14.44" + esbuild-freebsd-64 "0.14.44" + esbuild-freebsd-arm64 "0.14.44" + esbuild-linux-32 "0.14.44" + esbuild-linux-64 "0.14.44" + esbuild-linux-arm "0.14.44" + esbuild-linux-arm64 "0.14.44" + esbuild-linux-mips64le "0.14.44" + esbuild-linux-ppc64le "0.14.44" + esbuild-linux-riscv64 "0.14.44" + esbuild-linux-s390x "0.14.44" + esbuild-netbsd-64 "0.14.44" + esbuild-openbsd-64 "0.14.44" + esbuild-sunos-64 "0.14.44" + esbuild-windows-32 "0.14.44" + esbuild-windows-64 "0.14.44" + esbuild-windows-arm64 "0.14.44" + +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== + +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" + +history@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" + integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== + dependencies: + "@babel/runtime" "^7.7.6" + +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.8.1: + 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" + +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-router-dom@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.3.0.tgz#a0216da813454e521905b5fa55e0e5176123f43d" + integrity sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw== + dependencies: + history "^5.2.0" + react-router "6.3.0" + +react-router@6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557" + integrity sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ== + dependencies: + history "^5.2.0" + +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" + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +resolve@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rollup@^2.59.0: + version "2.75.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.6.tgz#ac4dc8600f95942a0180f61c7c9d6200e374b439" + integrity sha512-OEf0TgpC9vU6WGROJIk1JA3LR5vk/yvqlzxqdrE2CzzXnqKXNzbAwlWUXis8RS3ZPe7LAq+YUxsRa0l3r27MLA== + 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.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d" + integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA== + +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 144a906c14bc1fa14ccb199d23906d4b3592d571 Mon Sep 17 00:00:00 2001 From: Hennization Date: Fri, 17 Jun 2022 17:33:37 +0900 Subject: [PATCH 02/15] =?UTF-8?q?chore:=20.env.local=20=ED=8C=8C=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/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/week4_ts/.gitignore b/week4_ts/.gitignore index a547bf3..8d06fe9 100644 --- a/week4_ts/.gitignore +++ b/week4_ts/.gitignore @@ -22,3 +22,5 @@ dist-ssr *.njsproj *.sln *.sw? + +.env.local From 3b7e71e9755cb1e002d5bb55220786bc4ce4f270 Mon Sep 17 00:00:00 2001 From: Hennization Date: Fri, 17 Jun 2022 17:43:46 +0900 Subject: [PATCH 03/15] =?UTF-8?q?init:=20=ED=8C=8C=EC=9D=BC=20=EB=B3=B5?= =?UTF-8?q?=EC=82=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/src/App.jsx | 5 + week4_ts/src/App.tsx | 5 - week4_ts/src/components/Header.tsx | 117 +++++++++++++++++- week4_ts/src/components/Header/MyLocation.tsx | 3 - .../src/components/Header/SearchSection.tsx | 71 ----------- week4_ts/src/components/Header/index.tsx | 64 ---------- week4_ts/src/components/ResultSection.tsx | 22 +++- .../src/components/StoreArticle/Skeleton.tsx | 15 ++- .../components/StoreArticle/StoreArticle.tsx | 19 ++- .../components/StoreArticle/articlestyle.tsx | 55 +++++++- week4_ts/src/core/router.tsx | 3 +- week4_ts/src/index.jsx | 15 +++ week4_ts/src/index.tsx | 10 -- week4_ts/src/libs/api.ts | 12 ++ week4_ts/src/pages/Main/index.tsx | 8 +- week4_ts/src/pages/NotFound/index.tsx | 6 +- week4_ts/src/{style => styles}/globalStyle.ts | 4 +- week4_ts/src/styles/theme.ts | 20 +++ week4_ts/src/util/getLocation.ts | 2 +- week4_ts/src/vite-env.d.ts | 1 - week4_ts/tsconfig.node.json | 12 +- 21 files changed, 284 insertions(+), 185 deletions(-) create mode 100644 week4_ts/src/App.jsx delete mode 100644 week4_ts/src/App.tsx delete mode 100644 week4_ts/src/components/Header/MyLocation.tsx delete mode 100644 week4_ts/src/components/Header/SearchSection.tsx delete mode 100644 week4_ts/src/components/Header/index.tsx create mode 100644 week4_ts/src/index.jsx delete mode 100644 week4_ts/src/index.tsx create mode 100644 week4_ts/src/libs/api.ts rename week4_ts/src/{style => styles}/globalStyle.ts (86%) create mode 100644 week4_ts/src/styles/theme.ts delete mode 100644 week4_ts/src/vite-env.d.ts diff --git a/week4_ts/src/App.jsx b/week4_ts/src/App.jsx new file mode 100644 index 0000000..c3af90e --- /dev/null +++ b/week4_ts/src/App.jsx @@ -0,0 +1,5 @@ +import Router from './core/router'; + +export default function App() { + return ; +} diff --git a/week4_ts/src/App.tsx b/week4_ts/src/App.tsx deleted file mode 100644 index cd6abe1..0000000 --- a/week4_ts/src/App.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import Router from "./core/router"; - -export default function App() { - return ; -} diff --git a/week4_ts/src/components/Header.tsx b/week4_ts/src/components/Header.tsx index ccaa69f..9d9cf3a 100644 --- a/week4_ts/src/components/Header.tsx +++ b/week4_ts/src/components/Header.tsx @@ -1,5 +1,116 @@ -import React from "react"; +import React, { useRef, useState } from "react"; +import styled from "styled-components"; +import { storeSearch } from "../libs/api"; +import { flexColumnCenter } from "../mixxin"; -export default function Header() { - return
Header
; +function Header(props) { + const { handleIsSearch, handleResults } = props; + const [isLocation, setIsLocation] = useState(false); + const [input, setInput] = useState(""); + const searchRef = useRef(null); + const position = useRef(null); + // 위치에 따른 가게 검색 handler + const storeSearchHttpHandler = async (params) => { + const { data } = await storeSearch(params); + handleIsSearch(false); + handleResults(data.documents); + }; + // 위치 handler + const handleMyLocation = () => { + if (!position.current) { + new Promise((resolve, rejected) => { + navigator.geolocation.getCurrentPosition(resolve, rejected); + }).then((res) => { + position.current = res.coords; + const params = { + x: position.current.longitude, + y: position.current.latitude, + radius: 1000, + query: "바", + }; + storeSearchHttpHandler(params); + }); + } else { + const params = { + x: position.current.longitude, + y: position.current.latitude, + radius: 1000, + query: "바", + }; + storeSearchHttpHandler(params); + } + }; + // 클릭 시 검색 input 비활성화 + const handleInputDisabled = () => { + const searchInput = searchRef.current; + searchInput.disabled = !searchInput.disabled; + setIsLocation((prev) => !prev); + }; + // input 변화 감지 + const handleInputChange = (e) => { + setInput(e.target.value); + }; + // 검색 버튼 + const handleSearchButton = (e) => { + handleIsSearch(true); + e.preventDefault(); + if (!searchRef.current.disabled) { + const params = { + query: input + " " + "바", + }; + storeSearchHttpHandler(params); + } else { + handleMyLocation(); + } + }; + + return ( + +

우리 동네 BAR 🥂

+ + + 현위치로 할래 + + 찾고싶은 동네는 + + + 검색 + + +
+ ); } + +export default Header; + +const Styled = { + Root: styled.header` + ${flexColumnCenter} + & h1 { + margin-bottom: 2rem; + } + `, + SearchWrapper: styled.div` + display: flex; + gap: 2rem; + `, +}; + +const MyLocationButton = styled.button` + &:active { + } +`; + +const SearchLabel = styled.label` + font-size: 2rem; +`; + +const SearchInput = styled.input``; + +const SearchButton = styled.button``; diff --git a/week4_ts/src/components/Header/MyLocation.tsx b/week4_ts/src/components/Header/MyLocation.tsx deleted file mode 100644 index 41c51f4..0000000 --- a/week4_ts/src/components/Header/MyLocation.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function MyLocation() { - return
MyLocation
; -} diff --git a/week4_ts/src/components/Header/SearchSection.tsx b/week4_ts/src/components/Header/SearchSection.tsx deleted file mode 100644 index c5dc37e..0000000 --- a/week4_ts/src/components/Header/SearchSection.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import styled from "styled-components"; -import { storeSearch } from "../libs/api"; - -interface MainSearchProps {} - -export default function SearchSection() { - // 위치에 따른 가게 검색 handler - const storeSearchHttpHandler = async (params) => { - const { data } = await storeSearch(params); - handleIsSearch(false); - handleResults(data.documents); - }; - // 위치 handler - const handleMyLocation = () => { - if (!position.current) { - new Promise((resolve, rejected) => { - navigator.geolocation.getCurrentPosition(resolve, rejected); - }).then((res) => { - position.current = res.coords; - const params = { - x: position.current.longitude, - y: position.current.latitude, - radius: 1000, - query: "바", - }; - storeSearchHttpHandler(params); - }); - } else { - const params = { - x: position.current.longitude, - y: position.current.latitude, - radius: 1000, - query: "바", - }; - storeSearchHttpHandler(params); - } - }; - // input 변화 감지 - const handleInputChange = (e) => { - setInput(e.target.value); - }; - // 검색 버튼 - const handleSearchButton = (e) => { - handleIsSearch(true); - e.preventDefault(); - if (!searchRef.current.disabled) { - const params = { - query: input + " " + "바", - }; - storeSearchHttpHandler(params); - } else { - handleMyLocation(); - } - }; - - return ( - <> - 찾고싶은 동네는 - - - 검색 - - - ); -} diff --git a/week4_ts/src/components/Header/index.tsx b/week4_ts/src/components/Header/index.tsx deleted file mode 100644 index 98a79a5..0000000 --- a/week4_ts/src/components/Header/index.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { useRef, useState } from "react"; -import styled from "styled-components"; - -import { flexColumnCenter } from "../mixxin"; -import SearchSection from "./SearchSection"; - -export default function Header() { - const { handleIsSearch, handleResults } = props; - const [isLocation, setIsLocation] = useState(false); - const [input, setInput] = useState(""); - const searchRef = useRef(null); - const position = useRef(null); - - // 클릭 시 검색 input 비활성화 - const handleInputDisabled = () => { - const searchInput = searchRef.current; - searchInput.disabled = !searchInput.disabled; - setIsLocation((prev) => !prev); - }; - - return ( - -

우리 동네 BAR 🥂

- - - 현위치로 할래 - - - -
- ); -} - -const Styled = { - Root: styled.header` - ${flexColumnCenter} - & h1 { - margin-bottom: 2rem; - } - `, - SearchWrapper: styled.div` - display: flex; - gap: 2rem; - `, -}; - -const MyLocationButton = styled.button` - &:active { - } -`; - -const SearchLabel = styled.label` - font-size: 2rem; -`; - -const SearchInput = styled.input``; - -const SearchButton = styled.button``; diff --git a/week4_ts/src/components/ResultSection.tsx b/week4_ts/src/components/ResultSection.tsx index e2761e8..79baaa3 100644 --- a/week4_ts/src/components/ResultSection.tsx +++ b/week4_ts/src/components/ResultSection.tsx @@ -1,5 +1,23 @@ import React from "react"; +import Skeleton from "./StoreArticle/Skeleton"; +import StoreArticle from "./StoreArticle/StoreArticle"; -export default function ResultSection() { - return
ResultSection
; +function ResultSection(props) { + const { isSearch, results } = props; + // 이건 대체 뭔뜻일까 + if (isSearch) return new Array(10).fill(1).map((_, i) => ); + if (results.length === 0) return ; + + return results.map((result) => ( + + )); } + +export default ResultSection; diff --git a/week4_ts/src/components/StoreArticle/Skeleton.tsx b/week4_ts/src/components/StoreArticle/Skeleton.tsx index 7b9bb5b..c968ca4 100644 --- a/week4_ts/src/components/StoreArticle/Skeleton.tsx +++ b/week4_ts/src/components/StoreArticle/Skeleton.tsx @@ -1,5 +1,14 @@ import React from "react"; +import { StyledRoot, StoreName, StoreAddress, StorePhoneNumber } from "./articleStyle"; -export default function Skeleton() { - return
Skeleton
; -} +const StoreArticle = () => { + return ( + + + + + + ); +}; + +export default StoreArticle; diff --git a/week4_ts/src/components/StoreArticle/StoreArticle.tsx b/week4_ts/src/components/StoreArticle/StoreArticle.tsx index 8a719b2..b158839 100644 --- a/week4_ts/src/components/StoreArticle/StoreArticle.tsx +++ b/week4_ts/src/components/StoreArticle/StoreArticle.tsx @@ -1,5 +1,16 @@ -import React from "react"; +import React from 'react'; +import { StyledRoot, StoreName, StoreAddress, StorePhoneNumber } from './articleStyle'; -export default function StoreArticle() { - return
StoreArticle
; -} +const StoreArticle = props => { + return ( + + + {props.placeName} + + {props.distance ? `${props.distance} m` : props.roadAddressName} + {props.phone ? props.phone : '전화번호 없음'} + + ); +}; + +export default StoreArticle; diff --git a/week4_ts/src/components/StoreArticle/articlestyle.tsx b/week4_ts/src/components/StoreArticle/articlestyle.tsx index 9ab2ed6..1dd44f0 100644 --- a/week4_ts/src/components/StoreArticle/articlestyle.tsx +++ b/week4_ts/src/components/StoreArticle/articlestyle.tsx @@ -1,5 +1,52 @@ -import React from "react"; +import styled, { keyframes } from "styled-components"; +import { flexColumnCenter } from "../../mixxin"; -export default function articlestyle() { - return
articlestyle
; -} +const loading = keyframes` +0% { + transform: translateX(0); + } +50%, +100% { + transform: translateX(46rem); + } +`; + +export const StyledRoot = styled.article` + ${flexColumnCenter} + width: 70%; + height: auto; + background-color: white; + background-repeat: no-repeat; + font-size: 1.5rem; + margin: 2rem 0; + + .skeleton::before { + content: ""; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + } + + .skeleton { + width: 30%; + height: 3rem; + position: relative; + overflow: hidden; + background-color: gray; + } +`; + +export const StoreName = styled.a` + padding: 4rem; + text-decoration: none; +`; + +export const StoreAddress = styled.p` + padding: 1rem; +`; + +export const StorePhoneNumber = styled.p` + padding: 1rem; +`; diff --git a/week4_ts/src/core/router.tsx b/week4_ts/src/core/router.tsx index d629c99..0a84478 100644 --- a/week4_ts/src/core/router.tsx +++ b/week4_ts/src/core/router.tsx @@ -2,7 +2,7 @@ import { BrowserRouter, Route, Routes } from "react-router-dom"; import Main from "../pages/Main"; import NotFound from "../pages/NotFound"; -export default function router() { +function Router() { return ( @@ -12,3 +12,4 @@ export default function router() { ); } +export default Router; diff --git a/week4_ts/src/index.jsx b/week4_ts/src/index.jsx new file mode 100644 index 0000000..5880f34 --- /dev/null +++ b/week4_ts/src/index.jsx @@ -0,0 +1,15 @@ +import App from './App'; +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import { theme } from './styles/theme'; +import { ThemeProvider } from 'styled-components'; +import GlobalStyle from './styles/globalStyle'; + +ReactDOM.createRoot(document.getElementById('root')).render( + + + + + + , +); diff --git a/week4_ts/src/index.tsx b/week4_ts/src/index.tsx deleted file mode 100644 index 59f5da8..0000000 --- a/week4_ts/src/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -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/libs/api.ts b/week4_ts/src/libs/api.ts new file mode 100644 index 0000000..ba74030 --- /dev/null +++ b/week4_ts/src/libs/api.ts @@ -0,0 +1,12 @@ +import axios from "axios"; + +const Kakao = axios.create({ + baseURL: "https://dapi.kakao.com/v2/local/search/keyword", // 공통 요청 경로를 지정해준다. + headers: { + Authorization: `KakaoAK ${import.meta.env.VITE_APP_KAKAO_AK}`, + }, +}); + +export const storeSearch = async (params) => { + return Kakao.get("", { params }); +}; diff --git a/week4_ts/src/pages/Main/index.tsx b/week4_ts/src/pages/Main/index.tsx index a0ea830..f9a7fff 100644 --- a/week4_ts/src/pages/Main/index.tsx +++ b/week4_ts/src/pages/Main/index.tsx @@ -1,10 +1,10 @@ -import { useState } from "react"; import styled from "styled-components"; import { flexColumnCenter } from "../../mixxin"; -import Header from "../../components/Header"; +import React, { useState } from "react"; +import Header from "../../components/Header.js"; import ResultSection from "../../components/ResultSection"; -export default function Main() { +function Main() { const [results, setResults] = useState([]); const [isSearch, setIsSearch] = useState(false); @@ -26,6 +26,8 @@ export default function Main() { ); } +export default Main; + const Styled = { Root: styled.main` ${flexColumnCenter} diff --git a/week4_ts/src/pages/NotFound/index.tsx b/week4_ts/src/pages/NotFound/index.tsx index 07f2a1e..0343ff3 100644 --- a/week4_ts/src/pages/NotFound/index.tsx +++ b/week4_ts/src/pages/NotFound/index.tsx @@ -1,3 +1,5 @@ -export default function NotFound() { - return
NotFound
; +function NotFound() { + return
404 NotFound
; } + +export default NotFound; diff --git a/week4_ts/src/style/globalStyle.ts b/week4_ts/src/styles/globalStyle.ts similarity index 86% rename from week4_ts/src/style/globalStyle.ts rename to week4_ts/src/styles/globalStyle.ts index 6536d43..8c77c31 100644 --- a/week4_ts/src/style/globalStyle.ts +++ b/week4_ts/src/styles/globalStyle.ts @@ -1,5 +1,5 @@ -import { createGlobalStyle } from "styled-components"; -import reset from "styled-reset"; +import { createGlobalStyle } from 'styled-components'; +import reset from 'styled-reset'; const GlobalStyle = createGlobalStyle` @font-face { diff --git a/week4_ts/src/styles/theme.ts b/week4_ts/src/styles/theme.ts new file mode 100644 index 0000000..11575ce --- /dev/null +++ b/week4_ts/src/styles/theme.ts @@ -0,0 +1,20 @@ +export const theme = { + center: `display: flex; + justify-content: center; + align-items: center;`, + fontSizes: { + form: '40px', + searchTitle: '34px', + input: '28px', + placeName: '40px', + roadAddressName: '30px', + phone: '30px', + }, + colors: { + black: '#333333', + white: '#ffffff', + yellow: '#FFD951', + gray: '#6B7280', + skeleton: '#808080', + }, +}; diff --git a/week4_ts/src/util/getLocation.ts b/week4_ts/src/util/getLocation.ts index 1c51474..aa4ac22 100644 --- a/week4_ts/src/util/getLocation.ts +++ b/week4_ts/src/util/getLocation.ts @@ -1,4 +1,4 @@ -export const getLocation = (errHandler) => { +const getLocation = (errHandler) => { if ("geolocation" in navigator) { return new Promise((resolve) => { navigator.geolocation.getCurrentPosition( diff --git a/week4_ts/src/vite-env.d.ts b/week4_ts/src/vite-env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/week4_ts/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/week4_ts/tsconfig.node.json b/week4_ts/tsconfig.node.json index e993792..9ffae89 100644 --- a/week4_ts/tsconfig.node.json +++ b/week4_ts/tsconfig.node.json @@ -1,8 +1,8 @@ { - "compilerOptions": { - "composite": true, - "module": "esnext", - "moduleResolution": "node" - }, - "include": ["vite.config.ts"] + "compilerOptions": { + "composite": true, + "module": "esnext", + "moduleResolution": "node" + }, + "include": ["vite.config.ts"] } From 81fb7541d260754eb985600b7fa4f50bb199fec6 Mon Sep 17 00:00:00 2001 From: Hennization Date: Fri, 17 Jun 2022 18:08:45 +0900 Subject: [PATCH 04/15] =?UTF-8?q?feat:=20styles=20=ED=8F=B4=EB=8D=94=20ts?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/src/App.jsx | 5 ---- week4_ts/src/App.tsx | 15 ++++++++++++ week4_ts/src/index.jsx | 15 ------------ week4_ts/src/index.tsx | 9 +++++++ week4_ts/src/styles/style.d.ts | 22 +++++++++++++++++ week4_ts/src/styles/theme.ts | 43 +++++++++++++++++++--------------- 6 files changed, 70 insertions(+), 39 deletions(-) delete mode 100644 week4_ts/src/App.jsx create mode 100644 week4_ts/src/App.tsx delete mode 100644 week4_ts/src/index.jsx create mode 100644 week4_ts/src/index.tsx create mode 100644 week4_ts/src/styles/style.d.ts diff --git a/week4_ts/src/App.jsx b/week4_ts/src/App.jsx deleted file mode 100644 index c3af90e..0000000 --- a/week4_ts/src/App.jsx +++ /dev/null @@ -1,5 +0,0 @@ -import Router from './core/router'; - -export default function App() { - return ; -} diff --git a/week4_ts/src/App.tsx b/week4_ts/src/App.tsx new file mode 100644 index 0000000..ed31c07 --- /dev/null +++ b/week4_ts/src/App.tsx @@ -0,0 +1,15 @@ +import Router from "./core/router"; +import { ThemeProvider } from "styled-components"; +import GlobalStyle from "./styles/globalStyle"; +import theme from "./styles/theme"; + +export default function App() { + return ( + <> + + + + + + ); +} diff --git a/week4_ts/src/index.jsx b/week4_ts/src/index.jsx deleted file mode 100644 index 5880f34..0000000 --- a/week4_ts/src/index.jsx +++ /dev/null @@ -1,15 +0,0 @@ -import App from './App'; -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import { theme } from './styles/theme'; -import { ThemeProvider } from 'styled-components'; -import GlobalStyle from './styles/globalStyle'; - -ReactDOM.createRoot(document.getElementById('root')).render( - - - - - - , -); diff --git a/week4_ts/src/index.tsx b/week4_ts/src/index.tsx new file mode 100644 index 0000000..2e7c5b6 --- /dev/null +++ b/week4_ts/src/index.tsx @@ -0,0 +1,9 @@ +import App from "./App"; +import React from "react"; +import ReactDOM from "react-dom/client"; +const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); +root.render( + + + +); diff --git a/week4_ts/src/styles/style.d.ts b/week4_ts/src/styles/style.d.ts new file mode 100644 index 0000000..e080bf9 --- /dev/null +++ b/week4_ts/src/styles/style.d.ts @@ -0,0 +1,22 @@ +import "styled-components"; + +declare module "styled-components" { + export interface DefaultTheme { + fontSizes: { + form: string; + searchTitle: string; + input: string; + placeName: string; + roadAddressName: string; + phone: string; + }; + colors: { + main: string; + white: string; + header: string; + brown: string; + skeleton: string; + lightYellow: string; + }; + } +} diff --git a/week4_ts/src/styles/theme.ts b/week4_ts/src/styles/theme.ts index 11575ce..977800e 100644 --- a/week4_ts/src/styles/theme.ts +++ b/week4_ts/src/styles/theme.ts @@ -1,20 +1,25 @@ -export const theme = { - center: `display: flex; - justify-content: center; - align-items: center;`, - fontSizes: { - form: '40px', - searchTitle: '34px', - input: '28px', - placeName: '40px', - roadAddressName: '30px', - phone: '30px', - }, - colors: { - black: '#333333', - white: '#ffffff', - yellow: '#FFD951', - gray: '#6B7280', - skeleton: '#808080', - }, +import { DefaultTheme } from "styled-components"; + +const fontSizes = { + form: "4rem", + searchTitle: "4rem", + input: "2.8rem", + placeName: "1.5rem", + roadAddressName: "1.5rem", + phone: "1.5rem", }; + +const colors = { + black: "#333333", + white: "#ffffff", + lemonchiffon: "#fffacd", + gray: "#6B7280", + skeleton: "#808080", +}; + +const theme: DefaultTheme = { + fontSizes, + colors, +}; + +export default theme; From fa563f5ed86e70b0b8b4bc46bad7f5aed005bf85 Mon Sep 17 00:00:00 2001 From: Hennization Date: Mon, 20 Jun 2022 17:25:53 +0900 Subject: [PATCH 05/15] =?UTF-8?q?feat:=20Main=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=ED=83=80=EC=9E=85=20=EC=A7=80=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/package.json | 5 ++- week4_ts/src/components/Header.tsx | 1 + week4_ts/src/pages/Main/index.tsx | 8 ++-- week4_ts/yarn.lock | 64 +++++++++++++++++++++++++++++- 4 files changed, 70 insertions(+), 8 deletions(-) diff --git a/week4_ts/package.json b/week4_ts/package.json index 6174b58..94dd43d 100644 --- a/week4_ts/package.json +++ b/week4_ts/package.json @@ -10,14 +10,15 @@ "dependencies": { "@types/react-router-dom": "^5.3.3", "@types/styled-components": "^5.1.25", - "react": "^18.0.0", + "axios": "^0.27.2", + "react": "^18.2.0", "react-dom": "^18.0.0", "react-router-dom": "^6.3.0", "styled-components": "^5.3.5", "styled-reset": "^4.4.1" }, "devDependencies": { - "@types/react": "^18.0.0", + "@types/react": "^18.0.14", "@types/react-dom": "^18.0.0", "@vitejs/plugin-react": "^1.3.0", "typescript": "^4.6.3", diff --git a/week4_ts/src/components/Header.tsx b/week4_ts/src/components/Header.tsx index 9d9cf3a..dc86b18 100644 --- a/week4_ts/src/components/Header.tsx +++ b/week4_ts/src/components/Header.tsx @@ -14,6 +14,7 @@ function Header(props) { const { data } = await storeSearch(params); handleIsSearch(false); handleResults(data.documents); + console.log("handleResults의 타입은?", data.documents); }; // 위치 handler const handleMyLocation = () => { diff --git a/week4_ts/src/pages/Main/index.tsx b/week4_ts/src/pages/Main/index.tsx index f9a7fff..0ccacb2 100644 --- a/week4_ts/src/pages/Main/index.tsx +++ b/week4_ts/src/pages/Main/index.tsx @@ -5,13 +5,13 @@ import Header from "../../components/Header.js"; import ResultSection from "../../components/ResultSection"; function Main() { - const [results, setResults] = useState([]); - const [isSearch, setIsSearch] = useState(false); + const [results, setResults] = useState([]); + const [isSearch, setIsSearch] = useState(false); - const handleResults = (newResults) => { + const handleResults = (newResults: void[]) => { setResults(newResults); }; - const handleIsSearch = (newIsSearch) => { + const handleIsSearch = (newIsSearch: boolean) => { setIsSearch(newIsSearch); }; diff --git a/week4_ts/yarn.lock b/week4_ts/yarn.lock index 1ecd06d..d4d08bd 100644 --- a/week4_ts/yarn.lock +++ b/week4_ts/yarn.lock @@ -353,7 +353,7 @@ "@types/history" "^4.7.11" "@types/react" "*" -"@types/react@*", "@types/react@^18.0.0": +"@types/react@*": version "18.0.12" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.12.tgz#cdaa209d0a542b3fcf69cf31a03976ec4cdd8840" integrity sha512-duF1OTASSBQtcigUvhuiTB1Ya3OvSy+xORCiEf20H0P0lzx+/KeVsA99U5UjLXSbyo1DRJDlLKqTeM1ngosqtg== @@ -362,6 +362,15 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^18.0.14": + 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" @@ -397,6 +406,19 @@ ansi-styles@^3.2.1: 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" @@ -455,6 +477,13 @@ color-name@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" @@ -488,6 +517,11 @@ debug@^4.1.0: 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.147: version "1.4.158" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.158.tgz#abbdaaf64676bfa4bc0307522125db34424a0ada" @@ -634,6 +668,20 @@ estree-walker@^2.0.1: 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" @@ -714,6 +762,18 @@ loose-envify@^1.1.0: 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" @@ -791,7 +851,7 @@ react-router@6.3.0: dependencies: history "^5.2.0" -react@^18.0.0: +react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== From 0bda0df0d5c85431beaa20b58911e0abb03dd6bb Mon Sep 17 00:00:00 2001 From: Hennization Date: Mon, 20 Jun 2022 19:07:43 +0900 Subject: [PATCH 06/15] =?UTF-8?q?feat:=20MainHeader=20=ED=83=80=EC=9E=85?= =?UTF-8?q?=20=EC=A7=80=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/src/components/Header.tsx | 94 +++++++++++++++++++----------- week4_ts/src/styles/style.d.ts | 2 + week4_ts/src/styles/theme.ts | 2 + 3 files changed, 64 insertions(+), 34 deletions(-) diff --git a/week4_ts/src/components/Header.tsx b/week4_ts/src/components/Header.tsx index dc86b18..d0be0ee 100644 --- a/week4_ts/src/components/Header.tsx +++ b/week4_ts/src/components/Header.tsx @@ -2,34 +2,50 @@ import React, { useRef, useState } from "react"; import styled from "styled-components"; import { storeSearch } from "../libs/api"; import { flexColumnCenter } from "../mixxin"; +import theme from "../styles/theme"; -function Header(props) { +interface MainHeaderProps { + handleIsSearch: (newIsSearch: boolean) => void; + handleResults: (newResults: void[]) => void; +} + +interface Params { + query: string; +} + +interface Coordinates { + longitude: number; + latitude: number; +} + +function Header(props: MainHeaderProps) { const { handleIsSearch, handleResults } = props; - const [isLocation, setIsLocation] = useState(false); - const [input, setInput] = useState(""); - const searchRef = useRef(null); - const position = useRef(null); + const [isLocation, setIsLocation] = useState(false); + const [input, setInput] = useState(""); + const searchRef = useRef(null); + const position = useRef({ longitude: 0, latitude: 0 }); // 위치에 따른 가게 검색 handler - const storeSearchHttpHandler = async (params) => { + const storeSearchHttpHandler = async (params: Params) => { const { data } = await storeSearch(params); handleIsSearch(false); handleResults(data.documents); - console.log("handleResults의 타입은?", data.documents); }; // 위치 handler const handleMyLocation = () => { + // !position.current 가 무슨뜻일까? + // 그리고 내 위치를 켜면 내 위치가 아니라 이름에 바가 들어간게 나옴 if (!position.current) { - new Promise((resolve, rejected) => { - navigator.geolocation.getCurrentPosition(resolve, rejected); - }).then((res) => { - position.current = res.coords; - const params = { - x: position.current.longitude, - y: position.current.latitude, - radius: 1000, - query: "바", - }; - storeSearchHttpHandler(params); + new Promise((resolve) => { + navigator.geolocation.getCurrentPosition((currentPosition) => { + position.current = currentPosition.coords; + const params = { + y: position.current.latitude, + x: position.current.longitude, + radius: 1000, + query: "베이커리", + }; + storeSearchHttpHandler(params); + }); }); } else { const params = { @@ -41,27 +57,32 @@ function Header(props) { storeSearchHttpHandler(params); } }; + // 클릭 시 검색 input 비활성화 const handleInputDisabled = () => { - const searchInput = searchRef.current; - searchInput.disabled = !searchInput.disabled; - setIsLocation((prev) => !prev); + if (searchRef.current !== null) { + searchRef.current.disabled = !searchRef.current.disabled; + setIsLocation((prev) => !prev); + } }; // input 변화 감지 - const handleInputChange = (e) => { + const handleInputChange = (e: React.ChangeEvent) => { setInput(e.target.value); }; // 검색 버튼 - const handleSearchButton = (e) => { + const handleSearchButton = (e: React.MouseEvent) => { handleIsSearch(true); e.preventDefault(); - if (!searchRef.current.disabled) { - const params = { - query: input + " " + "바", - }; - storeSearchHttpHandler(params); - } else { - handleMyLocation(); + if (searchRef.current !== null) { + if (!searchRef.current.disabled) { + const params = { + query: input + " " + "바", + }; + storeSearchHttpHandler(params); + } else { + handleMyLocation(); + console.log("position 타입은?", position); + } } }; @@ -69,7 +90,7 @@ function Header(props) {

우리 동네 BAR 🥂

- + 현위치로 할래 찾고싶은 동네는 @@ -80,7 +101,7 @@ function Header(props) { value={input} placeholder="지역을 입력해주세요" /> - + 검색 @@ -90,6 +111,10 @@ function Header(props) { export default Header; +interface StHeaderProps { + isChoice: boolean; +} + const Styled = { Root: styled.header` ${flexColumnCenter} @@ -104,8 +129,9 @@ const Styled = { }; const MyLocationButton = styled.button` - &:active { - } + // 왜 색 안바뀌지 + color: ${(props: StHeaderProps) => + props.isChoice ? theme.colors.skyblue : theme.colors.lightgreen}; `; const SearchLabel = styled.label` diff --git a/week4_ts/src/styles/style.d.ts b/week4_ts/src/styles/style.d.ts index e080bf9..4ff6c49 100644 --- a/week4_ts/src/styles/style.d.ts +++ b/week4_ts/src/styles/style.d.ts @@ -17,6 +17,8 @@ declare module "styled-components" { brown: string; skeleton: string; lightYellow: string; + skyblue: string; + lightgreen: string; }; } } diff --git a/week4_ts/src/styles/theme.ts b/week4_ts/src/styles/theme.ts index 977800e..bcd9980 100644 --- a/week4_ts/src/styles/theme.ts +++ b/week4_ts/src/styles/theme.ts @@ -15,6 +15,8 @@ const colors = { lemonchiffon: "#fffacd", gray: "#6B7280", skeleton: "#808080", + skyblue: "87ceeb", + lightgreen: "99f299", }; const theme: DefaultTheme = { From ed7ea6b071645e83ea91846cc84321f7423a068e Mon Sep 17 00:00:00 2001 From: Hennization Date: Mon, 20 Jun 2022 19:28:37 +0900 Subject: [PATCH 07/15] =?UTF-8?q?feat:=20MainResult=20=ED=83=80=EC=9E=85?= =?UTF-8?q?=20=EC=A7=80=EC=A0=95=20=EB=B0=8F=20Result=20=ED=83=80=EC=9E=85?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/src/components/Header.tsx | 5 ++-- week4_ts/src/components/ResultSection.tsx | 16 ++++++++---- .../components/StoreArticle/StoreArticle.tsx | 26 ++++++++++--------- week4_ts/src/pages/Main/index.tsx | 7 ++--- week4_ts/src/type/result.ts | 8 ++++++ 5 files changed, 40 insertions(+), 22 deletions(-) create mode 100644 week4_ts/src/type/result.ts diff --git a/week4_ts/src/components/Header.tsx b/week4_ts/src/components/Header.tsx index d0be0ee..9f709b7 100644 --- a/week4_ts/src/components/Header.tsx +++ b/week4_ts/src/components/Header.tsx @@ -3,10 +3,11 @@ import styled from "styled-components"; import { storeSearch } from "../libs/api"; import { flexColumnCenter } from "../mixxin"; import theme from "../styles/theme"; +import { Result } from "../type/result"; interface MainHeaderProps { handleIsSearch: (newIsSearch: boolean) => void; - handleResults: (newResults: void[]) => void; + handleResults: (newResults: Result[]) => void; } interface Params { @@ -22,6 +23,7 @@ function Header(props: MainHeaderProps) { const { handleIsSearch, handleResults } = props; const [isLocation, setIsLocation] = useState(false); const [input, setInput] = useState(""); + //useRef의 타입을 어떻게 정의해여!?!!? const searchRef = useRef(null); const position = useRef({ longitude: 0, latitude: 0 }); // 위치에 따른 가게 검색 handler @@ -81,7 +83,6 @@ function Header(props: MainHeaderProps) { storeSearchHttpHandler(params); } else { handleMyLocation(); - console.log("position 타입은?", position); } } }; diff --git a/week4_ts/src/components/ResultSection.tsx b/week4_ts/src/components/ResultSection.tsx index 79baaa3..8e6c455 100644 --- a/week4_ts/src/components/ResultSection.tsx +++ b/week4_ts/src/components/ResultSection.tsx @@ -1,19 +1,25 @@ import React from "react"; +import { Result } from "../type/result"; import Skeleton from "./StoreArticle/Skeleton"; import StoreArticle from "./StoreArticle/StoreArticle"; -function ResultSection(props) { +interface MainResultProps { + isSearch: boolean; + results: Result[]; +} + +function ResultSection(props: MainResultProps) { const { isSearch, results } = props; // 이건 대체 뭔뜻일까 if (isSearch) return new Array(10).fill(1).map((_, i) => ); - if (results.length === 0) return ; + if (results.length === 0) return ; return results.map((result) => ( diff --git a/week4_ts/src/components/StoreArticle/StoreArticle.tsx b/week4_ts/src/components/StoreArticle/StoreArticle.tsx index b158839..ab54488 100644 --- a/week4_ts/src/components/StoreArticle/StoreArticle.tsx +++ b/week4_ts/src/components/StoreArticle/StoreArticle.tsx @@ -1,16 +1,18 @@ -import React from 'react'; -import { StyledRoot, StoreName, StoreAddress, StorePhoneNumber } from './articleStyle'; +import { Result } from "../../type/result"; +import { StyledRoot, StoreName, StoreAddress, StorePhoneNumber } from "./articleStyle"; -const StoreArticle = props => { - return ( - - - {props.placeName} - - {props.distance ? `${props.distance} m` : props.roadAddressName} - {props.phone ? props.phone : '전화번호 없음'} - - ); +const StoreArticle = (props: Result) => { + const { place_url, place_name, road_address_name, distance, phone } = props; + + return ( + + + {place_name} + + {distance ? `${distance} m` : road_address_name} + {phone ? phone : "전화번호 없음"} + + ); }; export default StoreArticle; diff --git a/week4_ts/src/pages/Main/index.tsx b/week4_ts/src/pages/Main/index.tsx index 0ccacb2..29cd7cc 100644 --- a/week4_ts/src/pages/Main/index.tsx +++ b/week4_ts/src/pages/Main/index.tsx @@ -1,14 +1,15 @@ import styled from "styled-components"; import { flexColumnCenter } from "../../mixxin"; import React, { useState } from "react"; -import Header from "../../components/Header.js"; +import Header from "../../components/Header"; import ResultSection from "../../components/ResultSection"; +import { Result } from "../../type/result"; function Main() { - const [results, setResults] = useState([]); + const [results, setResults] = useState([]); const [isSearch, setIsSearch] = useState(false); - const handleResults = (newResults: void[]) => { + const handleResults = (newResults: Result[]) => { setResults(newResults); }; const handleIsSearch = (newIsSearch: boolean) => { diff --git a/week4_ts/src/type/result.ts b/week4_ts/src/type/result.ts new file mode 100644 index 0000000..2c84441 --- /dev/null +++ b/week4_ts/src/type/result.ts @@ -0,0 +1,8 @@ +export interface Result { + id?: number; + place_url?: string; + place_name?: string; + road_address_name?: string; + distance?: string; + phone?: string; +} From 48dbda399df53b04c61e7987720a296ed1034976 Mon Sep 17 00:00:00 2001 From: Hennization Date: Mon, 20 Jun 2022 19:52:44 +0900 Subject: [PATCH 08/15] =?UTF-8?q?style:=20=EC=A3=BC=EC=84=9D=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/src/components/ResultSection.tsx | 1 - week4_ts/src/components/StoreArticle/Skeleton.tsx | 1 - week4_ts/src/libs/api.ts | 4 +++- week4_ts/src/mixxin/index.ts | 6 ------ week4_ts/src/styles/globalStyle.ts | 6 +++--- week4_ts/src/type/result.ts | 4 ++++ week4_ts/src/util/getLocation.ts | 3 +++ 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/week4_ts/src/components/ResultSection.tsx b/week4_ts/src/components/ResultSection.tsx index 8e6c455..dc8e09d 100644 --- a/week4_ts/src/components/ResultSection.tsx +++ b/week4_ts/src/components/ResultSection.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { Result } from "../type/result"; import Skeleton from "./StoreArticle/Skeleton"; import StoreArticle from "./StoreArticle/StoreArticle"; diff --git a/week4_ts/src/components/StoreArticle/Skeleton.tsx b/week4_ts/src/components/StoreArticle/Skeleton.tsx index c968ca4..ebeb594 100644 --- a/week4_ts/src/components/StoreArticle/Skeleton.tsx +++ b/week4_ts/src/components/StoreArticle/Skeleton.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { StyledRoot, StoreName, StoreAddress, StorePhoneNumber } from "./articleStyle"; const StoreArticle = () => { diff --git a/week4_ts/src/libs/api.ts b/week4_ts/src/libs/api.ts index ba74030..d3d9b80 100644 --- a/week4_ts/src/libs/api.ts +++ b/week4_ts/src/libs/api.ts @@ -1,12 +1,14 @@ import axios from "axios"; +import { Params } from "../type/result"; const Kakao = axios.create({ baseURL: "https://dapi.kakao.com/v2/local/search/keyword", // 공통 요청 경로를 지정해준다. headers: { + // 여기도 타입 지정을 해줘야 하나? Authorization: `KakaoAK ${import.meta.env.VITE_APP_KAKAO_AK}`, }, }); -export const storeSearch = async (params) => { +export const storeSearch = async (params: Params) => { return Kakao.get("", { params }); }; diff --git a/week4_ts/src/mixxin/index.ts b/week4_ts/src/mixxin/index.ts index e08d8d2..076b5de 100644 --- a/week4_ts/src/mixxin/index.ts +++ b/week4_ts/src/mixxin/index.ts @@ -4,9 +4,3 @@ export const flexColumnCenter = ` justify-contents: center; align-items: center; `; - -export const flexRowCenter = ` - display: flex; - justify-contents: center; - align-items: center; -`; diff --git a/week4_ts/src/styles/globalStyle.ts b/week4_ts/src/styles/globalStyle.ts index 8c77c31..f421a8c 100644 --- a/week4_ts/src/styles/globalStyle.ts +++ b/week4_ts/src/styles/globalStyle.ts @@ -1,14 +1,14 @@ -import { createGlobalStyle } from 'styled-components'; -import reset from 'styled-reset'; +import { createGlobalStyle } from "styled-components"; +import reset from "styled-reset"; const GlobalStyle = createGlobalStyle` +${reset} @font-face { font-family: 'ParkYongJun'; src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_220508@1.0/ParkYongJun.woff2') format('woff2'); font-weight: normal; font-style: normal; } -${reset} #root, body, html { width: 100%; height: auto; diff --git a/week4_ts/src/type/result.ts b/week4_ts/src/type/result.ts index 2c84441..64c3f8e 100644 --- a/week4_ts/src/type/result.ts +++ b/week4_ts/src/type/result.ts @@ -6,3 +6,7 @@ export interface Result { distance?: string; phone?: string; } + +export interface Params { + query: string; +} diff --git a/week4_ts/src/util/getLocation.ts b/week4_ts/src/util/getLocation.ts index aa4ac22..0896bd1 100644 --- a/week4_ts/src/util/getLocation.ts +++ b/week4_ts/src/util/getLocation.ts @@ -1,3 +1,4 @@ +// 이건 어떻게 사용할 수 있는 걸까? const getLocation = (errHandler) => { if ("geolocation" in navigator) { return new Promise((resolve) => { @@ -18,3 +19,5 @@ const getLocation = (errHandler) => { return { x: 126.942173, y: 37.556293 }; // 신촌 포스빌~ }; + +export default getLocation; From 4f3a2bb9beee73ef595e69b9e0b9b9a4db4c13d3 Mon Sep 17 00:00:00 2001 From: Hennization Date: Tue, 21 Jun 2022 16:37:33 +0900 Subject: [PATCH 09/15] =?UTF-8?q?fix:=20style.d.ts=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/src/components/Header.tsx | 3 +-- week4_ts/src/mixxin/index.ts | 6 ------ week4_ts/src/pages/Main/index.tsx | 7 +++---- week4_ts/src/styles/style.d.ts | 8 ++++---- week4_ts/src/styles/theme.ts | 10 +++++++++- 5 files changed, 17 insertions(+), 17 deletions(-) delete mode 100644 week4_ts/src/mixxin/index.ts diff --git a/week4_ts/src/components/Header.tsx b/week4_ts/src/components/Header.tsx index 9f709b7..9744ec3 100644 --- a/week4_ts/src/components/Header.tsx +++ b/week4_ts/src/components/Header.tsx @@ -1,7 +1,6 @@ import React, { useRef, useState } from "react"; import styled from "styled-components"; import { storeSearch } from "../libs/api"; -import { flexColumnCenter } from "../mixxin"; import theme from "../styles/theme"; import { Result } from "../type/result"; @@ -118,7 +117,7 @@ interface StHeaderProps { const Styled = { Root: styled.header` - ${flexColumnCenter} + ${({ theme }) => theme.flexColumnCenter}; & h1 { margin-bottom: 2rem; } diff --git a/week4_ts/src/mixxin/index.ts b/week4_ts/src/mixxin/index.ts deleted file mode 100644 index 076b5de..0000000 --- a/week4_ts/src/mixxin/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const flexColumnCenter = ` - display: flex; - flex-direction: column; - justify-contents: center; - align-items: center; -`; diff --git a/week4_ts/src/pages/Main/index.tsx b/week4_ts/src/pages/Main/index.tsx index 29cd7cc..f635d0e 100644 --- a/week4_ts/src/pages/Main/index.tsx +++ b/week4_ts/src/pages/Main/index.tsx @@ -1,6 +1,5 @@ import styled from "styled-components"; -import { flexColumnCenter } from "../../mixxin"; -import React, { useState } from "react"; +import { useState } from "react"; import Header from "../../components/Header"; import ResultSection from "../../components/ResultSection"; import { Result } from "../../type/result"; @@ -31,7 +30,7 @@ export default Main; const Styled = { Root: styled.main` - ${flexColumnCenter} + ${({ theme }) => theme.flexColumnCenter}; width: 100%; height: 100%; overflow: hidden; @@ -43,7 +42,7 @@ const Styled = { } `, SectionWrapper: styled.div` - ${flexColumnCenter} + ${({ theme }) => theme.flexColumnCenter}; width: 100%; height: 100%; `, diff --git a/week4_ts/src/styles/style.d.ts b/week4_ts/src/styles/style.d.ts index 4ff6c49..c6b5595 100644 --- a/week4_ts/src/styles/style.d.ts +++ b/week4_ts/src/styles/style.d.ts @@ -11,14 +11,14 @@ declare module "styled-components" { phone: string; }; colors: { - main: string; + black: string; white: string; - header: string; - brown: string; + lemonchiffon: string; + gray: string; skeleton: string; - lightYellow: string; skyblue: string; lightgreen: string; }; + flexColumnCenter: ThemedCssFunction; } } diff --git a/week4_ts/src/styles/theme.ts b/week4_ts/src/styles/theme.ts index bcd9980..4d55e80 100644 --- a/week4_ts/src/styles/theme.ts +++ b/week4_ts/src/styles/theme.ts @@ -1,4 +1,4 @@ -import { DefaultTheme } from "styled-components"; +import { css, DefaultTheme } from "styled-components"; const fontSizes = { form: "4rem", @@ -19,9 +19,17 @@ const colors = { lightgreen: "99f299", }; +const flexColumnCenter = css` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +`; + const theme: DefaultTheme = { fontSizes, colors, + flexColumnCenter, }; export default theme; From 57051ed68ac904ce1e515c326f7086c6843bd3f3 Mon Sep 17 00:00:00 2001 From: Hennization Date: Tue, 21 Jun 2022 16:52:34 +0900 Subject: [PATCH 10/15] =?UTF-8?q?chore:=20interface=20import=20=ED=95=98?= =?UTF-8?q?=E3=85=A3=E3=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/src/components/Header.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/week4_ts/src/components/Header.tsx b/week4_ts/src/components/Header.tsx index 9744ec3..689783f 100644 --- a/week4_ts/src/components/Header.tsx +++ b/week4_ts/src/components/Header.tsx @@ -2,17 +2,13 @@ import React, { useRef, useState } from "react"; import styled from "styled-components"; import { storeSearch } from "../libs/api"; import theme from "../styles/theme"; -import { Result } from "../type/result"; +import { Params, Result } from "../type/result"; interface MainHeaderProps { handleIsSearch: (newIsSearch: boolean) => void; handleResults: (newResults: Result[]) => void; } -interface Params { - query: string; -} - interface Coordinates { longitude: number; latitude: number; From f6d222fb9a7146bbdf878b89b566d4b6e5ac9541 Mon Sep 17 00:00:00 2001 From: Hennization Date: Tue, 21 Jun 2022 16:53:09 +0900 Subject: [PATCH 11/15] =?UTF-8?q?fix:=20App.tsx=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/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/week4_ts/src/App.tsx b/week4_ts/src/App.tsx index ed31c07..c0ed5b4 100644 --- a/week4_ts/src/App.tsx +++ b/week4_ts/src/App.tsx @@ -6,8 +6,8 @@ import theme from "./styles/theme"; export default function App() { return ( <> - + From a2e97b9df28b4aa5acf062067d315899054b0526 Mon Sep 17 00:00:00 2001 From: Hennization Date: Tue, 21 Jun 2022 16:59:43 +0900 Subject: [PATCH 12/15] =?UTF-8?q?fix:=20isChoice=20=EC=A0=9C=EB=84=A4?= =?UTF-8?q?=EB=A6=AD=EC=9C=BC=EB=A1=9C=20=EC=84=A0=EC=96=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/src/components/Header.tsx | 6 ++---- week4_ts/src/libs/api.ts | 3 +-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/week4_ts/src/components/Header.tsx b/week4_ts/src/components/Header.tsx index 689783f..39dc74d 100644 --- a/week4_ts/src/components/Header.tsx +++ b/week4_ts/src/components/Header.tsx @@ -124,10 +124,8 @@ const Styled = { `, }; -const MyLocationButton = styled.button` - // 왜 색 안바뀌지 - color: ${(props: StHeaderProps) => - props.isChoice ? theme.colors.skyblue : theme.colors.lightgreen}; +const MyLocationButton = styled.button<{ isChoice: boolean }>` + color: ${({ isChoice }) => (isChoice ? theme.colors.skyblue : theme.colors.lightgreen)}; `; const SearchLabel = styled.label` diff --git a/week4_ts/src/libs/api.ts b/week4_ts/src/libs/api.ts index d3d9b80..88d3435 100644 --- a/week4_ts/src/libs/api.ts +++ b/week4_ts/src/libs/api.ts @@ -4,11 +4,10 @@ import { Params } from "../type/result"; const Kakao = axios.create({ baseURL: "https://dapi.kakao.com/v2/local/search/keyword", // 공통 요청 경로를 지정해준다. headers: { - // 여기도 타입 지정을 해줘야 하나? Authorization: `KakaoAK ${import.meta.env.VITE_APP_KAKAO_AK}`, }, }); - +// 여기에 제네릭을 어케 사용한단 말?? export const storeSearch = async (params: Params) => { return Kakao.get("", { params }); }; From ee8befe23fe91f3679c164bb3d3721f98ad776ce Mon Sep 17 00:00:00 2001 From: Hennization Date: Tue, 21 Jun 2022 17:08:34 +0900 Subject: [PATCH 13/15] =?UTF-8?q?feat:=20h1=20css=20=EC=84=A0=EC=96=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/src/components/Header.tsx | 16 ++++++---------- week4_ts/src/pages/Main/index.tsx | 4 ---- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/week4_ts/src/components/Header.tsx b/week4_ts/src/components/Header.tsx index 39dc74d..0436900 100644 --- a/week4_ts/src/components/Header.tsx +++ b/week4_ts/src/components/Header.tsx @@ -70,7 +70,7 @@ function Header(props: MainHeaderProps) { const handleSearchButton = (e: React.MouseEvent) => { handleIsSearch(true); e.preventDefault(); - if (searchRef.current !== null) { + if (searchRef.current) { if (!searchRef.current.disabled) { const params = { query: input + " " + "바", @@ -84,7 +84,7 @@ function Header(props: MainHeaderProps) { return ( -

우리 동네 BAR 🥂

+ 우리 동네 BAR 🥂 현위치로 할래 @@ -107,16 +107,12 @@ function Header(props: MainHeaderProps) { export default Header; -interface StHeaderProps { - isChoice: boolean; -} - const Styled = { Root: styled.header` ${({ theme }) => theme.flexColumnCenter}; - & h1 { - margin-bottom: 2rem; - } + `, + Title: styled.h1` + margin: 2rem 0; `, SearchWrapper: styled.div` display: flex; @@ -134,4 +130,4 @@ const SearchLabel = styled.label` const SearchInput = styled.input``; -const SearchButton = styled.button``; +const SearchButton = styled.button<{ isChoice: boolean }>``; diff --git a/week4_ts/src/pages/Main/index.tsx b/week4_ts/src/pages/Main/index.tsx index f635d0e..d1650e4 100644 --- a/week4_ts/src/pages/Main/index.tsx +++ b/week4_ts/src/pages/Main/index.tsx @@ -36,10 +36,6 @@ const Styled = { overflow: hidden; font-size: 5rem; background-color: lemonchiffon; - - & h1 { - margin-top: 2rem; - } `, SectionWrapper: styled.div` ${({ theme }) => theme.flexColumnCenter}; From 3a4d32c262bf9acc393222a83c194d82569a920f Mon Sep 17 00:00:00 2001 From: Hennization Date: Tue, 21 Jun 2022 18:28:48 +0900 Subject: [PATCH 14/15] =?UTF-8?q?fix:=20query=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/Header.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/week4_ts/src/components/Header.tsx b/week4_ts/src/components/Header.tsx index 0436900..5181daa 100644 --- a/week4_ts/src/components/Header.tsx +++ b/week4_ts/src/components/Header.tsx @@ -39,7 +39,7 @@ function Header(props: MainHeaderProps) { y: position.current.latitude, x: position.current.longitude, radius: 1000, - query: "베이커리", + query: "바", }; storeSearchHttpHandler(params); }); From a6f7a40cfc82c9bd4e4ca72d95125f3b8112d454 Mon Sep 17 00:00:00 2001 From: Hennization Date: Tue, 21 Jun 2022 19:23:11 +0900 Subject: [PATCH 15/15] =?UTF-8?q?fix:=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week4_ts/src/components/StoreArticle/articlestyle.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/week4_ts/src/components/StoreArticle/articlestyle.tsx b/week4_ts/src/components/StoreArticle/articlestyle.tsx index 1dd44f0..d5bee41 100644 --- a/week4_ts/src/components/StoreArticle/articlestyle.tsx +++ b/week4_ts/src/components/StoreArticle/articlestyle.tsx @@ -5,7 +5,6 @@ const loading = keyframes` 0% { transform: translateX(0); } -50%, 100% { transform: translateX(46rem); }