From e8929860547f22b9aaf8883dbd1cc3de982eb8ee Mon Sep 17 00:00:00 2001 From: andres Date: Thu, 12 Sep 2024 09:26:05 +0200 Subject: [PATCH] init --- .gitignore | 24 ++++++++++++++ README.md | 50 ++++++++++++++++++++++++++++ bun.lockb | Bin 0 -> 91103 bytes eslint.config.js | 28 ++++++++++++++++ index.html | 13 ++++++++ package.json | 31 +++++++++++++++++ public/vite.svg | 1 + src/App.css | 42 +++++++++++++++++++++++ src/App.tsx | 32 ++++++++++++++++++ src/assets/react.svg | 1 + src/index.css | 68 ++++++++++++++++++++++++++++++++++++++ src/main.tsx | 10 ++++++ src/notifications.tsx | 5 +++ src/vite-env.d.ts | 1 + tsconfig.app.json | 24 ++++++++++++++ tsconfig.app.tsbuildinfo | 1 + tsconfig.json | 7 ++++ tsconfig.node.json | 22 ++++++++++++ tsconfig.node.tsbuildinfo | 1 + vite.config.ts | 7 ++++ 20 files changed, 368 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 bun.lockb create mode 100644 eslint.config.js 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/notifications.tsx create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.app.tsbuildinfo create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 tsconfig.node.tsbuildinfo create mode 100644 vite.config.ts 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..74872fd --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +# 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 tseslint.config({ + languageOptions: { + // other options... + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, +}) +``` + +- Replace `tseslint.configs.recommended` to `tseslint.configs.recommendedTypeChecked` or `tseslint.configs.strictTypeChecked` +- Optionally add `...tseslint.configs.stylisticTypeChecked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and update the config: + +```js +// eslint.config.js +import react from 'eslint-plugin-react' + +export default tseslint.config({ + // Set the react version + settings: { react: { version: '18.3' } }, + plugins: { + // Add the react plugin + react, + }, + rules: { + // other rules... + // Enable its recommended rules + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + }, +}) +``` diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..e376f4261c881cf7cfd9af7956ad7164fdeca6ec GIT binary patch literal 91103 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 literal 0 HcmV?d00001 diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..092408a --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) 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..4fb9611 --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "name": "dynamic-imports", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.26.2", + "remeda": "^2.12.0" + }, + "devDependencies": { + "@eslint/js": "^9.9.0", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.1", + "eslint": "^9.9.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.1", + "vite": "^5.4.1" + } +} 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..696bd4a --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,32 @@ +import './App.css' +import {lazy,Suspense} from "react"; +import {createBrowserRouter, Link, RouterProvider} from "react-router-dom"; + +const Notifications = lazy(() => import("./notifications")); +const NotificationsPage = () => ( + Page is Loading...}> + + +); +const routes = [ + { + path: '/', + // element:
Home
+ element:
Notifications
+ }, + { + path: '/notifications', + element: + } + +] +const router = createBrowserRouter(routes) + +function App() { + + return ( + + ) +} + +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..6f4ac9b --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/notifications.tsx b/src/notifications.tsx new file mode 100644 index 0000000..e461399 --- /dev/null +++ b/src/notifications.tsx @@ -0,0 +1,5 @@ +import * as R from 'remeda' +export default function Notification() { + const result = R.pipe([1,2,3], R.map(R.add(1))) + return
Notifications. {result.join(', ')}
+} \ No newline at end of file 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.app.json b/tsconfig.app.json new file mode 100644 index 0000000..f0a2350 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/tsconfig.app.tsbuildinfo b/tsconfig.app.tsbuildinfo new file mode 100644 index 0000000..fd449ec --- /dev/null +++ b/tsconfig.app.tsbuildinfo @@ -0,0 +1 @@ +{"root":["./src/app.tsx","./src/main.tsx","./src/notifications.tsx","./src/vite-env.d.ts"],"version":"5.6.2"} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..0d3d714 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/tsconfig.node.tsbuildinfo b/tsconfig.node.tsbuildinfo new file mode 100644 index 0000000..98ef2f9 --- /dev/null +++ b/tsconfig.node.tsbuildinfo @@ -0,0 +1 @@ +{"root":["./vite.config.ts"],"version":"5.6.2"} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..5a33944 --- /dev/null +++ b/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()], +})