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/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..d89827928b8fd0b72b5c3bcfbf1bbaa447ee43a4 GIT binary patch literal 75688 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 LWdk~;b1-56qUT=~ 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..98f9681 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "btn", + "description": "btn", + "private": false, + "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.17.0", + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^9.17.0", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.16", + "globals": "^15.14.0", + "typescript": "~5.6.2", + "typescript-eslint": "^8.18.2", + "vite": "^6.0.5" + } +} 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..d0076d6 --- /dev/null +++ b/src/App.css @@ -0,0 +1,19 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} + +button.active { + border-color: #1a1a1a; + background-color: #646cff; +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..dc621c5 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,28 @@ +import { useState } from 'react' +import './App.css' +import Button from './Button' + +function App() { + const [count, setCount] = useState(0) + const [pressed, togglePressed] = useState(false) + + return ( + <> +

btn

+
+
+

+ + Read the docs + +

+ + ) +} + +export default App diff --git a/src/Button.tsx b/src/Button.tsx new file mode 100644 index 0000000..c311413 --- /dev/null +++ b/src/Button.tsx @@ -0,0 +1,24 @@ +import React from 'react' + +interface ButtonProps { + count: number + setCount: React.Dispatch> + pressed: boolean + togglePressed: React.Dispatch> +} + +const Button: React.FC = ({ pressed, togglePressed, count, setCount }) => { + return ( + + ) +} + +export default Button \ No newline at end of file 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..bef5202 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +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..358ca9b --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "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, + "noUncheckedSideEffectImports": 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..db0becc --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "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, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..2328e17 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react-swc' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +})