From cae40cbdc78b25394f14adcbb4d926eb6d578bcc Mon Sep 17 00:00:00 2001 From: skyrunner360 Date: Sat, 13 Apr 2024 18:26:59 +0530 Subject: [PATCH] feat: :tada: Init --- .eslintrc.cjs | 18 ++++++++++++ .gitignore | 24 +++++++++++++++ README.md | 30 +++++++++++++++++++ bun.lockb | Bin 0 -> 77943 bytes index.html | 13 +++++++++ package.json | 28 ++++++++++++++++++ public/vite.svg | 1 + src/App.css | 42 ++++++++++++++++++++++++++ src/App.tsx | 35 ++++++++++++++++++++++ src/assets/react.svg | 1 + src/index.css | 68 +++++++++++++++++++++++++++++++++++++++++++ src/main.tsx | 10 +++++++ src/vite-env.d.ts | 1 + tsconfig.json | 25 ++++++++++++++++ tsconfig.node.json | 11 +++++++ vite.config.ts | 7 +++++ 16 files changed, 314 insertions(+) create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 index.html create mode 100644 package.json create mode 100644 public/vite.svg create mode 100644 src/App.css create mode 100644 src/App.tsx create mode 100644 src/assets/react.svg create mode 100644 src/index.css create mode 100644 src/main.tsx create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..d6c9537 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md new file mode 100644 index 0000000..0d6babe --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} +``` + +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..ba3c7a3cf79ae1c0eb07ee5e6d2e8beaf156f8f5 GIT binary patch literal 77943 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 TArTtvf3oh5eXHPq@IU_tX4z@@ literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..e4b78ea --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..058ce8c --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "snakeandladderreact", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "typescript": "^5.2.2", + "vite": "^5.2.0" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..afe48ac --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,35 @@ +import { useState } from 'react' +import reactLogo from './assets/react.svg' +import viteLogo from '/vite.svg' +import './App.css' + +function App() { + const [count, setCount] = useState(0) + + return ( + <> + +

Vite + React

+
+ +

+ Edit src/App.tsx and save to test HMR +

+
+

+ Click on the Vite and React logos to learn more +

+ + ) +} + +export default App diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..6119ad9 --- /dev/null +++ b/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..3d7150d --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a7fc6fb --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..97ede7e --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..861b04b --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react-swc' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +})