From 1e0c49416047abb2e88bdc8806b861fd8972ddc7 Mon Sep 17 00:00:00 2001 From: Sugui Date: Fri, 26 Jan 2024 18:20:53 +0100 Subject: [PATCH] First commit generated with `bun vite create` --- .eslintrc.cjs | 18 ++++++++++++ .gitignore | 24 +++++++++++++++ README.md | 30 +++++++++++++++++++ bun.lockb | Bin 0 -> 77513 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 | 10 +++++++ vite.config.ts | 7 +++++ 16 files changed, 313 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..cbefd49eaf93c4a927d502ec61de3dbaa9458f46 GIT binary patch literal 77513 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 AJpcdz 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..91b20c7 --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "bot-image-moderation-fe", + "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.43", + "@types/react-dom": "^18.2.17", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.55.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "typescript": "^5.2.2", + "vite": "^5.0.8" + } +} 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..42872c5 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": 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()], +})