diff --git a/.pnp.cjs b/.pnp.cjs index 43e1d138..a89b67bd 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -1130,6 +1130,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@remix-run/router", [\ + ["npm:1.14.2", {\ + "packageLocation": "../../.yarn/berry/cache/@remix-run-router-npm-1.14.2-59b4854d4d-10c0.zip/node_modules/@remix-run/router/",\ + "packageDependencies": [\ + ["@remix-run/router", "npm:1.14.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@rollup/rollup-android-arm-eabi", [\ ["npm:4.9.5", {\ "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm-eabi-npm-4.9.5-61e16d95f2/node_modules/@rollup/rollup-android-arm-eabi/",\ @@ -1832,6 +1841,8 @@ const RAW_RUNTIME_STATE = ["@vitejs/plugin-react", "virtual:9845906954fdbefbb879db24fa8772d77a945dca59f459806df47a5b67245d4bc6502880b373cca7201062c81bea9f13f699f52de2004c037e79dbdbd5d97fb3#npm:4.2.1"],\ ["react", "npm:18.2.0"],\ ["react-dom", "virtual:de80dc576383b2386358abc0e9fe49c00e3397fe355a0337462b73ab3115c2e557eb85784ee0fe776394cc11dd020b4e84dbbd75acf72ee6d54415d82d21f5c5#npm:18.2.0"],\ + ["react-router-dom", "virtual:9845906954fdbefbb879db24fa8772d77a945dca59f459806df47a5b67245d4bc6502880b373cca7201062c81bea9f13f699f52de2004c037e79dbdbd5d97fb3#npm:6.21.3"],\ + ["the-new-css-reset", "npm:1.11.2"],\ ["typescript", "patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7"],\ ["vite", "virtual:9845906954fdbefbb879db24fa8772d77a945dca59f459806df47a5b67245d4bc6502880b373cca7201062c81bea9f13f699f52de2004c037e79dbdbd5d97fb3#npm:5.0.11"]\ ],\ @@ -3835,6 +3846,57 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["react-router", [\ + ["npm:6.21.3", {\ + "packageLocation": "../../.yarn/berry/cache/react-router-npm-6.21.3-4373d75dc2-10c0.zip/node_modules/react-router/",\ + "packageDependencies": [\ + ["react-router", "npm:6.21.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:8bdc1c4cdfa23d84a16c157c58a65c3692ba5c373e7b31b76913ec54a13151469087240c633c6260e3f39e4771146223e3fb69f573f6ca233a20d8e34a6bd8f7#npm:6.21.3", {\ + "packageLocation": "./.yarn/__virtual__/react-router-virtual-9a0f5aa746/3/.yarn/berry/cache/react-router-npm-6.21.3-4373d75dc2-10c0.zip/node_modules/react-router/",\ + "packageDependencies": [\ + ["react-router", "virtual:8bdc1c4cdfa23d84a16c157c58a65c3692ba5c373e7b31b76913ec54a13151469087240c633c6260e3f39e4771146223e3fb69f573f6ca233a20d8e34a6bd8f7#npm:6.21.3"],\ + ["@remix-run/router", "npm:1.14.2"],\ + ["@types/react", "npm:18.2.48"],\ + ["react", "npm:18.2.0"]\ + ],\ + "packagePeers": [\ + "@types/react",\ + "react"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["react-router-dom", [\ + ["npm:6.21.3", {\ + "packageLocation": "../../.yarn/berry/cache/react-router-dom-npm-6.21.3-b7550652dc-10c0.zip/node_modules/react-router-dom/",\ + "packageDependencies": [\ + ["react-router-dom", "npm:6.21.3"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:9845906954fdbefbb879db24fa8772d77a945dca59f459806df47a5b67245d4bc6502880b373cca7201062c81bea9f13f699f52de2004c037e79dbdbd5d97fb3#npm:6.21.3", {\ + "packageLocation": "./.yarn/__virtual__/react-router-dom-virtual-8bdc1c4cdf/3/.yarn/berry/cache/react-router-dom-npm-6.21.3-b7550652dc-10c0.zip/node_modules/react-router-dom/",\ + "packageDependencies": [\ + ["react-router-dom", "virtual:9845906954fdbefbb879db24fa8772d77a945dca59f459806df47a5b67245d4bc6502880b373cca7201062c81bea9f13f699f52de2004c037e79dbdbd5d97fb3#npm:6.21.3"],\ + ["@remix-run/router", "npm:1.14.2"],\ + ["@types/react", "npm:18.2.48"],\ + ["@types/react-dom", "npm:18.2.18"],\ + ["react", "npm:18.2.0"],\ + ["react-dom", "virtual:de80dc576383b2386358abc0e9fe49c00e3397fe355a0337462b73ab3115c2e557eb85784ee0fe776394cc11dd020b4e84dbbd75acf72ee6d54415d82d21f5c5#npm:18.2.0"],\ + ["react-router", "virtual:8bdc1c4cdfa23d84a16c157c58a65c3692ba5c373e7b31b76913ec54a13151469087240c633c6260e3f39e4771146223e3fb69f573f6ca233a20d8e34a6bd8f7#npm:6.21.3"]\ + ],\ + "packagePeers": [\ + "@types/react-dom",\ + "@types/react",\ + "react-dom",\ + "react"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["regenerator-runtime", [\ ["npm:0.14.1", {\ "packageLocation": "../../.yarn/berry/cache/regenerator-runtime-npm-0.14.1-a6c97c609a-10c0.zip/node_modules/regenerator-runtime/",\ @@ -4220,6 +4282,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["the-new-css-reset", [\ + ["npm:1.11.2", {\ + "packageLocation": "../../.yarn/berry/cache/the-new-css-reset-npm-1.11.2-44ab50dbbf-10c0.zip/node_modules/the-new-css-reset/",\ + "packageDependencies": [\ + ["the-new-css-reset", "npm:1.11.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["to-fast-properties", [\ ["npm:2.0.0", {\ "packageLocation": "../../.yarn/berry/cache/to-fast-properties-npm-2.0.0-0dc60cc481-10c0.zip/node_modules/to-fast-properties/",\ diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 06e16d80..82163d9d 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/apps/admin/index.html b/apps/admin/index.html index e4b78eae..387c95b1 100644 --- a/apps/admin/index.html +++ b/apps/admin/index.html @@ -1,13 +1,15 @@ - - - - - - Vite + React + TS - - -
- - + + + + + + 불티 + + + +
+ + + diff --git a/apps/admin/package.json b/apps/admin/package.json index 6e50eb84..932371bb 100644 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -15,7 +15,9 @@ "@emotion/react": "^11.11.3", "@emotion/styled": "^11.11.0", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router-dom": "^6.21.3", + "the-new-css-reset": "^1.11.2" }, "devDependencies": { "@boolti/eslint-config": "*", diff --git a/apps/admin/public/vite.svg b/apps/admin/public/vite.svg deleted file mode 100644 index e7b8dfb1..00000000 --- a/apps/admin/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/admin/src/App.tsx b/apps/admin/src/App.tsx index 71ad4da4..743f39ac 100644 --- a/apps/admin/src/App.tsx +++ b/apps/admin/src/App.tsx @@ -1,11 +1,40 @@ import { QueryClientProvider } from '@boolti/api'; +import { createBrowserRouter, RouterProvider, Navigate } from 'react-router-dom'; +import ThemeProvider from './styles/ThemeProvider'; +import LoginPage from './pages/Login/LoginPage'; +import SignUpCompletePage from './pages/SignUpComplete/SignUpCompletePage'; +import 'the-new-css-reset/css/reset.css'; +import './index.css'; +import { PATH } from './constants/routes'; + +const router = createBrowserRouter([ + { + path: PATH.INDEX, + element: , // Note: 이후 랜딩 페이지로 교체 필요 + }, + { + path: PATH.LOGIN, + element: , + }, + { + path: PATH.SIGNUP_COMPLETE, + element: , + }, + { path: PATH.HOME, element: <> }, + { + path: '*', + element: , + }, +]); const App = () => { // const { data } = useHelloQuery(); // console.log(data?.hello) return ( -

Hello World

+ + +
); }; diff --git a/apps/admin/src/assets/svg/apple.svg b/apps/admin/src/assets/svg/apple.svg new file mode 100644 index 00000000..de21de0a --- /dev/null +++ b/apps/admin/src/assets/svg/apple.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/admin/src/assets/svg/kakao.svg b/apps/admin/src/assets/svg/kakao.svg new file mode 100644 index 00000000..3e0dbbe0 --- /dev/null +++ b/apps/admin/src/assets/svg/kakao.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/admin/src/constants/routes.ts b/apps/admin/src/constants/routes.ts new file mode 100644 index 00000000..21e8e5af --- /dev/null +++ b/apps/admin/src/constants/routes.ts @@ -0,0 +1,6 @@ +export const PATH = { + INDEX: '/', + LOGIN: '/login', + SIGNUP_COMPLETE: '/signup/complete', + HOME: '/home', +}; diff --git a/apps/admin/src/index.css b/apps/admin/src/index.css new file mode 100644 index 00000000..e606dbd9 --- /dev/null +++ b/apps/admin/src/index.css @@ -0,0 +1,5 @@ +@import url("https://cdnjs.cloudflare.com/ajax/libs/pretendard/1.3.9/static/pretendard-dynamic-subset.min.css"); + +* { + font-family: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, "Helvetica Neue", "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif; +} diff --git a/apps/admin/src/main.tsx b/apps/admin/src/main.tsx index e5775c05..c018515c 100644 --- a/apps/admin/src/main.tsx +++ b/apps/admin/src/main.tsx @@ -1,6 +1,6 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import App from './App.tsx'; +import App from './App'; ReactDOM.createRoot(document.getElementById('root')!).render( diff --git a/apps/admin/src/pages/Login/LoginPage.styles.ts b/apps/admin/src/pages/Login/LoginPage.styles.ts new file mode 100644 index 00000000..813f4718 --- /dev/null +++ b/apps/admin/src/pages/Login/LoginPage.styles.ts @@ -0,0 +1,119 @@ +import styled from '@emotion/styled'; +import { Link } from 'react-router-dom'; + +const LoginPage = styled.div` + width: 100vw; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + background-color: ${({ theme }) => theme.palette.grey.g20}; +`; + +const LoginContent = styled.div``; + +const Card = styled.div` + width: 600px; + background-color: ${({ theme }) => theme.palette.grey.w}; + box-shadow: 0px 8px 14px 0px #8b8b8b26; + margin-bottom: 40px; + border-radius: 8px; +`; + +const CardHeader = styled.div` + height: 64px; + display: flex; + justify-content: center; + align-items: center; + border-bottom: 1px solid ${({ theme }) => theme.palette.grey.g20}; +`; + +const CardHeaderTitle = styled.h2` + ${({ theme }) => theme.typo.h2_m}; + color: ${({ theme }) => theme.palette.grey.g70}; +`; + +const CardContent = styled.div` + padding-top: 60px; + padding-bottom: 40px; + display: flex; + flex-direction: column; + align-items: center; +`; + +const CardContentTitle = styled.h3` + ${({ theme }) => theme.typo.h3}; + color: ${({ theme }) => theme.palette.grey.g90}; + text-align: center; + margin-bottom: 48px; +`; + +const LoginButtonContainer = styled.div` + width: 388px; + display: flex; + flex-direction: column; + gap: 12px; + margin-bottom: 80px; +`; + +const LoginButtonIcon = styled.div` + position: absolute; + left: 24px; + display: inline-flex; + align-items: center; +`; + +const KakaoLoginButton = styled.button` + ${({ theme }) => theme.typo.sh1}; + color: ${({ theme }) => theme.palette.grey.g100}; + background-color: #ffe833; + height: 48px; + border-radius: 4px; + display: flex; + justify-content: center; + align-items: center; + position: relative; + cursor: pointer; +`; + +const AppleLoginButton = styled.button` + ${({ theme }) => theme.typo.sh1}; + color: ${({ theme }) => theme.palette.grey.w}; + background-color: ${({ theme }) => theme.palette.grey.g100}; + height: 48px; + border-radius: 4px; + display: flex; + justify-content: center; + align-items: center; + position: relative; + cursor: pointer; +`; + +const BottomLinkContainer = styled.div` + ${({ theme }) => theme.typo.b3}; + color: ${({ theme }) => theme.palette.grey.g70}; + display: flex; + flex-direction: column; + gap: 8px; + text-align: center; +`; + +const BottomLink = styled(Link)` + cursor: pointer; +`; + +export default { + LoginPage, + LoginContent, + Card, + CardHeader, + CardHeaderTitle, + CardContent, + CardContentTitle, + LoginButtonContainer, + LoginButtonIcon, + KakaoLoginButton, + AppleLoginButton, + BottomLinkContainer, + BottomLink, +}; diff --git a/apps/admin/src/pages/Login/LoginPage.tsx b/apps/admin/src/pages/Login/LoginPage.tsx new file mode 100644 index 00000000..db3ae5a3 --- /dev/null +++ b/apps/admin/src/pages/Login/LoginPage.tsx @@ -0,0 +1,58 @@ +import Styled from './LoginPage.styles'; +import kakaoIconUrl from '../../assets/svg/kakao.svg'; +import appleIconUrl from '../../assets/svg/apple.svg'; +import { useNavigate } from 'react-router-dom'; + +const LoginPage = () => { + const navigate = useNavigate(); + + return ( + + + + + 로그인 + + + + 지금 불티에서 +
+ 티켓을 불티나게 팔아보세요! +
+ + { + navigate('/signup/complete'); + }} + > + + 카카오톡 + + 카카오톡으로 시작하기 + + { + navigate('/signup/complete'); + }} + > + + Apple + + Apple로 시작하기 + + + + {/* Note: 추후 실제 링크로 교체 */} + 개인정보 처리방침 + 서비스 이용약관 + +
+
+ {/* Note: 추후 로고로 교체 */} +

Boolti logo

+
+
+ ); +}; + +export default LoginPage; diff --git a/apps/admin/src/pages/SignUpComplete/SignUpCompletePage.styles.ts b/apps/admin/src/pages/SignUpComplete/SignUpCompletePage.styles.ts new file mode 100644 index 00000000..5af028e3 --- /dev/null +++ b/apps/admin/src/pages/SignUpComplete/SignUpCompletePage.styles.ts @@ -0,0 +1,72 @@ +import styled from '@emotion/styled'; +import { Link } from 'react-router-dom'; + +const SignUpCompletePage = styled.div` + width: 100vw; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + background-color: ${({ theme }) => theme.palette.grey.g20}; +`; + +const SignUpCompleteContent = styled.div``; + +const Card = styled.div` + width: 600px; + background-color: ${({ theme }) => theme.palette.grey.w}; + box-shadow: 0px 8px 14px 0px #8b8b8b26; + margin-bottom: 40px; + border-radius: 8px; +`; + +const CardContent = styled.div` + padding: 60px 0; + display: flex; + flex-direction: column; + align-items: center; +`; + +const CardContentTitle = styled.h3` + ${({ theme }) => theme.typo.h3}; + color: ${({ theme }) => theme.palette.grey.g90}; + text-align: center; + margin-bottom: 4px; +`; + +const CardContentDescription = styled.p` + ${({ theme }) => theme.typo.b3}; + color: ${({ theme }) => theme.palette.grey.g70}; + margin-bottom: 40px; +`; + +const CardContentLink = styled(Link)` + ${({ theme }) => theme.typo.b3}; + color: ${({ theme }) => theme.palette.grey.g70}; + font-weight: 600; + text-decoration: underline; + margin-bottom: 40px; +`; + +const StartButton = styled.button` + width: 388px; + height: 48px; + display: inline-flex; + justify-content: center; + align-items: center; + background-color: ${({ theme }) => theme.palette.primary.o1}; + color: ${({ theme }) => theme.palette.grey.w}; + border-radius: 4px; + cursor: pointer; +`; + +export default { + SignUpCompletePage, + SignUpCompleteContent, + Card, + CardContent, + CardContentTitle, + CardContentDescription, + CardContentLink, + StartButton, +}; diff --git a/apps/admin/src/pages/SignUpComplete/SignUpCompletePage.tsx b/apps/admin/src/pages/SignUpComplete/SignUpCompletePage.tsx new file mode 100644 index 00000000..9a70b18d --- /dev/null +++ b/apps/admin/src/pages/SignUpComplete/SignUpCompletePage.tsx @@ -0,0 +1,47 @@ +import { useNavigate } from 'react-router-dom'; +import Styled from './SignUpCompletePage.styles'; + +const SignUpCompletePage = () => { + const navigate = useNavigate(); + + return ( + + + + + {/* Note: 추후 이미지 교체 */} +
+ img +
+ 어서오세요 %사용자명%님! + + 원활한 이용을 위해{' '} + + 서비스 이용약관 + {' '} + 확인 후 동의해주세요. + + { + navigate('/home'); + }} + > + 약관 동의하고 시작하기 + +
+
+ {/* Note: 추후 로고로 교체 */} +

Boolti logo

+
+
+ ); +}; + +export default SignUpCompletePage; diff --git a/apps/admin/src/styles/ThemeProvider.tsx b/apps/admin/src/styles/ThemeProvider.tsx new file mode 100644 index 00000000..702827c5 --- /dev/null +++ b/apps/admin/src/styles/ThemeProvider.tsx @@ -0,0 +1,19 @@ +import { ThemeProvider as BaseThemeProvider } from '@emotion/react'; + +import palette from './palette'; +import typo from './typo'; + +const theme = { + palette, + typo, +}; + +interface ThemeProviderProps { + children: React.ReactNode; +} + +const ThemeProvider = ({ children }: ThemeProviderProps) => ( + {children} +); + +export default ThemeProvider; diff --git a/apps/admin/src/styles/emotion.d.ts b/apps/admin/src/styles/emotion.d.ts new file mode 100644 index 00000000..3d7ef554 --- /dev/null +++ b/apps/admin/src/styles/emotion.d.ts @@ -0,0 +1,11 @@ +import '@emotion/react'; + +import palette from './palette'; +import typo from './typo'; + +declare module '@emotion/react' { + export interface Theme { + palette: typeof palette; + typo: typeof typo; + } +} diff --git a/apps/admin/src/styles/palette.ts b/apps/admin/src/styles/palette.ts new file mode 100644 index 00000000..00bd080d --- /dev/null +++ b/apps/admin/src/styles/palette.ts @@ -0,0 +1,30 @@ +const palette = { + primary: { + o1: '#FF5A14', + o2: '#E94600', + o3: '#C93E02', + }, + status: { + error: '#FF4D4F', + warning: '#FAAD14', + success: '#52C41A', + link: '#1890FF', + }, + grey: { + w: '#FFFFFF', + g00: '#F8F9FA', + g10: '#F2F3F5', + g20: '#D8DBE5', + g30: '#DFE2E6', + g40: '#CFD4DA', + g50: '#AFB5BC', + g60: '#87909B', + g70: '#6D747C', + g80: '#4A5057', + g90: '#353A40', + g100: '#222529', + b: '#000000', + }, +} as const; + +export default palette; diff --git a/apps/admin/src/styles/typo.ts b/apps/admin/src/styles/typo.ts new file mode 100644 index 00000000..267ef3ac --- /dev/null +++ b/apps/admin/src/styles/typo.ts @@ -0,0 +1,42 @@ +import { css } from '@emotion/react'; + +const generateTypo = (size: number, weight: number, lineHeight: number) => css` + font-family: + 'Pretendard Variable', + Pretendard, + -apple-system, + BlinkMacSystemFont, + system-ui, + Roboto, + 'Helvetica Neue', + 'Segoe UI', + 'Apple SD Gothic Neo', + 'Noto Sans KR', + 'Malgun Gothic', + 'Apple Color Emoji', + 'Segoe UI Emoji', + 'Segoe UI Symbol', + sans-serif; + font-style: normal; + line-height: ${lineHeight}px; + font-display: auto; + font-weight: ${weight}; + font-size: ${size}px; +`; + +const typo = { + h3: generateTypo(28, 600, 40), + h2: generateTypo(24, 600, 32), + h2_m: generateTypo(24, 400, 32), + h1: generateTypo(20, 600, 28), + sh2: generateTypo(18, 600, 26), + sh1: generateTypo(16, 600, 22), + b4: generateTypo(18, 400, 26), + b3: generateTypo(16, 400, 22), + b2: generateTypo(15, 400, 21), + b1: generateTypo(14, 400, 22), + c1: generateTypo(12, 400, 18), + point: generateTypo(20, 400, 30), +} as const; + +export default typo; diff --git a/apps/admin/vite.config.ts b/apps/admin/vite.config.ts index d4dd3fc7..f1007522 100644 --- a/apps/admin/vite.config.ts +++ b/apps/admin/vite.config.ts @@ -5,7 +5,6 @@ import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [ react({ - jsxRuntime: 'classic', jsxImportSource: '@emotion/react', babel: { plugins: ['@emotion/babel-plugin'], diff --git a/yarn.lock b/yarn.lock index 74300648..a73ce5ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -828,6 +828,13 @@ __metadata: languageName: node linkType: hard +"@remix-run/router@npm:1.14.2": + version: 1.14.2 + resolution: "@remix-run/router@npm:1.14.2" + checksum: 163d4a8ea3e25a7a7e3015f274e54b8043eddaaa92da220cad2893eb0fcbb649f617152c6d74680a4b55c0f319944ff1b362e87f814bb73be54f8d687ee730d6 + languageName: node + linkType: hard + "@rollup/rollup-android-arm-eabi@npm:4.9.5": version: 4.9.5 resolution: "@rollup/rollup-android-arm-eabi@npm:4.9.5" @@ -1257,6 +1264,8 @@ __metadata: "@vitejs/plugin-react": "npm:^4.2.1" react: "npm:^18.2.0" react-dom: "npm:^18.2.0" + react-router-dom: "npm:^6.21.3" + the-new-css-reset: "npm:^1.11.2" typescript: "npm:^5.2.2" vite: "npm:^5.0.8" languageName: unknown @@ -3033,6 +3042,30 @@ __metadata: languageName: node linkType: hard +"react-router-dom@npm:^6.21.3": + version: 6.21.3 + resolution: "react-router-dom@npm:6.21.3" + dependencies: + "@remix-run/router": "npm:1.14.2" + react-router: "npm:6.21.3" + peerDependencies: + react: ">=16.8" + react-dom: ">=16.8" + checksum: 1bea7bf17eb148461a7a99c9314e5ccc662ae00f563e29c16038e0b1b40aefb7381685f21289df07ad2295087a783c897b4e841ed12b07cd9a0829274a224231 + languageName: node + linkType: hard + +"react-router@npm:6.21.3": + version: 6.21.3 + resolution: "react-router@npm:6.21.3" + dependencies: + "@remix-run/router": "npm:1.14.2" + peerDependencies: + react: ">=16.8" + checksum: 66a0377a74ef2d298b9d617c02ba7a10e7e8b8be34b303068b5b5986f05e965037c51c0d45ea3a7967438f2dfde76c2c0f638cf19d3417fb408608ee9aee1668 + languageName: node + linkType: hard + "react@npm:^18.2.0": version: 18.2.0 resolution: "react@npm:18.2.0" @@ -3432,6 +3465,13 @@ __metadata: languageName: node linkType: hard +"the-new-css-reset@npm:^1.11.2": + version: 1.11.2 + resolution: "the-new-css-reset@npm:1.11.2" + checksum: 2b5e6e7a3d06c2be8e05191a4ac345805740d2df948b6559b5445716147d354ab76f363f98266064a8814192e21850db31250187cb174a43a086150ced4eb829 + languageName: node + linkType: hard + "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0"