From 6fc1b81fd985f0c2f05beeae89d3676d47f1dbe5 Mon Sep 17 00:00:00 2001 From: Pijus Kamandulis Date: Sun, 6 Oct 2024 00:11:55 +0300 Subject: [PATCH] Initialize repository --- .gitignore | 24 +++++++++++++++ LICENSE | 21 +++++++++++++ README.md | 1 + bun.lockb | Bin 0 -> 73385 bytes eslint.config.js | 32 ++++++++++++++++++++ index.html | 13 +++++++++ package.json | 29 ++++++++++++++++++ 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.app.json | 24 +++++++++++++++ tsconfig.json | 7 +++++ tsconfig.node.json | 22 ++++++++++++++ vite.config.ts | 7 +++++ 18 files changed, 338 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100755 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/vite-env.d.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json 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/LICENSE b/LICENSE new file mode 100644 index 0000000..3bef017 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Pijus Kamandulis + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f94379b --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Scrummie-Poker diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..f728b305a4371f1928445c258250b7debf22e4cd GIT binary patch literal 73385 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 YeLPc$bMIgkS8P6qafy@h|L=bO4=j3i*Z=?k literal 0 HcmV?d00001 diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..3c68866 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,32 @@ +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.recommendedTypeChecked], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + project: ["./tsconfig.node.json", "./tsconfig.app.json"], + tsconfigRootDir: import.meta.dirname, + }, + }, + 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..222743d --- /dev/null +++ b/package.json @@ -0,0 +1,29 @@ +{ + "name": "scrummie-poker", + "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" + }, + "devDependencies": { + "@eslint/js": "^9.11.1", + "@types/react": "^18.3.10", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^9.11.1", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.12", + "globals": "^15.9.0", + "typescript": "^5.5.3", + "typescript-eslint": "^8.7.0", + "vite": "^5.4.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..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/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.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/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()], +})