From c5dd22eba58725768a01ff4b917d65fa8d073b5f Mon Sep 17 00:00:00 2001 From: arne Date: Fri, 26 Jan 2024 15:22:30 +0100 Subject: [PATCH] Initial commit --- .envrc | 1 + .gitignore | 24 ++++++++++++ bun.lockb | Bin 0 -> 18812 bytes flake.lock | 25 ++++++++++++ flake.nix | 18 +++++++++ index.html | 13 ++++++ package.json | 15 +++++++ public/vite.svg | 1 + src/counter.ts | 9 +++++ src/main.ts | 24 ++++++++++++ src/style.css | 96 +++++++++++++++++++++++++++++++++++++++++++++ src/typescript.svg | 1 + src/vite-env.d.ts | 1 + tsconfig.json | 23 +++++++++++ 14 files changed, 251 insertions(+) create mode 100644 .envrc create mode 100644 .gitignore create mode 100755 bun.lockb create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 index.html create mode 100644 package.json create mode 100644 public/vite.svg create mode 100644 src/counter.ts create mode 100644 src/main.ts create mode 100644 src/style.css create mode 100644 src/typescript.svg create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake 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..f137ba7e7fa03d27dfab996c57752228f29b7e05 GIT binary patch literal 18812 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 + + + + + + Vite + TS + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..335a73b --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "ripples", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "devDependencies": { + "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/counter.ts b/src/counter.ts new file mode 100644 index 0000000..09e5afd --- /dev/null +++ b/src/counter.ts @@ -0,0 +1,9 @@ +export function setupCounter(element: HTMLButtonElement) { + let counter = 0 + const setCounter = (count: number) => { + counter = count + element.innerHTML = `count is ${counter}` + } + element.addEventListener('click', () => setCounter(counter + 1)) + setCounter(0) +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..791547b --- /dev/null +++ b/src/main.ts @@ -0,0 +1,24 @@ +import './style.css' +import typescriptLogo from './typescript.svg' +import viteLogo from '/vite.svg' +import { setupCounter } from './counter.ts' + +document.querySelector('#app')!.innerHTML = ` +
+ + + + + + +

Vite + TypeScript

+
+ +
+

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

+
+` + +setupCounter(document.querySelector('#counter')!) diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..f9c7350 --- /dev/null +++ b/src/style.css @@ -0,0 +1,96 @@ +: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; +} + +#app { + 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.vanilla:hover { + filter: drop-shadow(0 0 2em #3178c6aa); +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} + +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/typescript.svg b/src/typescript.svg new file mode 100644 index 0000000..d91c910 --- /dev/null +++ b/src/typescript.svg @@ -0,0 +1 @@ + \ 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.json b/tsconfig.json new file mode 100644 index 0000000..75abdef --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +}