From e46d214308c737baadb234fa21f2cc4901eac72e Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Sat, 24 Dec 2022 01:11:47 +0100 Subject: [PATCH 01/19] fix vulnerabilities. --- package-lock.json | 193 ++++++++++++++++++++++++---------------------- 1 file changed, 101 insertions(+), 92 deletions(-) diff --git a/package-lock.json b/package-lock.json index 214dcd5..17c49eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sendstr-web", - "version": "1.0.0", + "version": "1.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sendstr-web", - "version": "1.0.0", + "version": "1.1.0", "license": "MIT", "dependencies": { "@zxing/browser": "^0.1.1", @@ -2943,13 +2943,13 @@ } }, "node_modules/browser-sync": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz", - "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==", + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.11.tgz", + "integrity": "sha512-U5f9u97OYJH66T0MGWWzG9rOQTW6ZmDMj97vsmtqwNS03JAwdLVES8eel2lD3rvAqQCNAFqaJ74NMacBI57vJg==", "dev": true, "dependencies": { - "browser-sync-client": "^2.27.10", - "browser-sync-ui": "^2.27.10", + "browser-sync-client": "^2.27.11", + "browser-sync-ui": "^2.27.11", "bs-recipes": "1.3.4", "bs-snippet-injector": "^2.0.1", "chokidar": "^3.5.1", @@ -2967,7 +2967,7 @@ "micromatch": "^4.0.2", "opn": "5.3.0", "portscanner": "2.2.0", - "qs": "6.2.3", + "qs": "^6.11.0", "raw-body": "^2.3.2", "resp-modifier": "6.0.2", "rx": "4.1.0", @@ -2987,9 +2987,9 @@ } }, "node_modules/browser-sync-client": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz", - "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==", + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.11.tgz", + "integrity": "sha512-okMNfD2NasL/XD1/BclP3onXjhahisk3e/kTQ5HPDT/lLqdBqNDd6QFcjI5I1ak7na2hxKQSLjryql+7fp5gKQ==", "dev": true, "dependencies": { "etag": "1.8.1", @@ -3003,9 +3003,9 @@ } }, "node_modules/browser-sync-ui": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz", - "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==", + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.11.tgz", + "integrity": "sha512-1T/Y8Pp1R68aUL7zVSFq0nxtr258xWd/nTasCAHX2M6EsGaswVOFtXsw3bKqsr35z+J+LfVfOdz1HFLYKxdgrA==", "dev": true, "dependencies": { "async-each-series": "0.1.1", @@ -3872,9 +3872,9 @@ } }, "node_modules/engine.io": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -3893,9 +3893,9 @@ } }, "node_modules/engine.io-client": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", - "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz", + "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", @@ -5761,9 +5761,9 @@ } }, "node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -7242,12 +7242,18 @@ } }, "node_modules/qs": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/queue-microtask": { @@ -8118,24 +8124,24 @@ "dev": true }, "node_modules/socket.io-client": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.1.tgz", - "integrity": "sha512-e6nLVgiRYatS+AHXnOnGi4ocOpubvOUCGhyWw8v+/FxW8saHkinG6Dfhi9TU0Kt/8mwJIAASxvw6eujQmjdZVA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz", + "integrity": "sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.2.1", - "socket.io-parser": "~4.2.0" + "engine.io-client": "~6.2.3", + "socket.io-parser": "~4.2.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.0.tgz", - "integrity": "sha512-tLfmEwcEwnlQTxFB7jibL/q2+q8dlVQzj4JdRLJ/W/G1+Fu9VSxCx1Lo+n1HvXxKnM//dUuD0xgiA7tQf57Vng==", + "node_modules/socket.io-client/node_modules/socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", @@ -8145,10 +8151,10 @@ "node": ">=10.0.0" } }, - "node_modules/socket.io/node_modules/socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "node_modules/socket.io-parser": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", + "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", "dev": true, "dependencies": { "@types/component-emitter": "^1.2.10", @@ -8521,9 +8527,9 @@ } }, "node_modules/terser": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", - "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", + "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -11751,13 +11757,13 @@ } }, "browser-sync": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.10.tgz", - "integrity": "sha512-xKm+6KJmJu6RuMWWbFkKwOCSqQOxYe3nOrFkKI5Tr/ZzjPxyU3pFShKK3tWnazBo/3lYQzN7fzjixG8fwJh1Xw==", + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.11.tgz", + "integrity": "sha512-U5f9u97OYJH66T0MGWWzG9rOQTW6ZmDMj97vsmtqwNS03JAwdLVES8eel2lD3rvAqQCNAFqaJ74NMacBI57vJg==", "dev": true, "requires": { - "browser-sync-client": "^2.27.10", - "browser-sync-ui": "^2.27.10", + "browser-sync-client": "^2.27.11", + "browser-sync-ui": "^2.27.11", "bs-recipes": "1.3.4", "bs-snippet-injector": "^2.0.1", "chokidar": "^3.5.1", @@ -11775,7 +11781,7 @@ "micromatch": "^4.0.2", "opn": "5.3.0", "portscanner": "2.2.0", - "qs": "6.2.3", + "qs": "^6.11.0", "raw-body": "^2.3.2", "resp-modifier": "6.0.2", "rx": "4.1.0", @@ -11789,9 +11795,9 @@ } }, "browser-sync-client": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.10.tgz", - "integrity": "sha512-KCFKA1YDj6cNul0VsA28apohtBsdk5Wv8T82ClOZPZMZWxPj4Ny5AUbrj9UlAb/k6pdxE5HABrWDhP9+cjt4HQ==", + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.11.tgz", + "integrity": "sha512-okMNfD2NasL/XD1/BclP3onXjhahisk3e/kTQ5HPDT/lLqdBqNDd6QFcjI5I1ak7na2hxKQSLjryql+7fp5gKQ==", "dev": true, "requires": { "etag": "1.8.1", @@ -11802,9 +11808,9 @@ } }, "browser-sync-ui": { - "version": "2.27.10", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.10.tgz", - "integrity": "sha512-elbJILq4Uo6OQv6gsvS3Y9vRAJlWu+h8j0JDkF0X/ua+3S6SVbbiWnZc8sNOFlG7yvVGIwBED3eaYQ0iBo1Dtw==", + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.11.tgz", + "integrity": "sha512-1T/Y8Pp1R68aUL7zVSFq0nxtr258xWd/nTasCAHX2M6EsGaswVOFtXsw3bKqsr35z+J+LfVfOdz1HFLYKxdgrA==", "dev": true, "requires": { "async-each-series": "0.1.1", @@ -12447,9 +12453,9 @@ "dev": true }, "engine.io": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -12465,9 +12471,9 @@ } }, "engine.io-client": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", - "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz", + "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==", "dev": true, "requires": { "@socket.io/component-emitter": "~3.1.0", @@ -13805,9 +13811,9 @@ "peer": true }, "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -14754,10 +14760,13 @@ "requires": {} }, "qs": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha512-AY4g8t3LMboim0t6XWFdz6J5OuJ1ZNYu54SXihS/OMpgyCqYmcAJnWqkNSOjSjWmq3xxy+GF9uWQI2lI/7tKIA==", - "dev": true + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } }, "queue-microtask": { "version": "1.2.3", @@ -15409,19 +15418,6 @@ "engine.io": "~6.2.0", "socket.io-adapter": "~2.4.0", "socket.io-parser": "~4.0.4" - }, - "dependencies": { - "socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", - "dev": true, - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - } - } } }, "socket.io-adapter": { @@ -15431,24 +15427,37 @@ "dev": true }, "socket.io-client": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.1.tgz", - "integrity": "sha512-e6nLVgiRYatS+AHXnOnGi4ocOpubvOUCGhyWw8v+/FxW8saHkinG6Dfhi9TU0Kt/8mwJIAASxvw6eujQmjdZVA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz", + "integrity": "sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g==", "dev": true, "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.2.1", - "socket.io-parser": "~4.2.0" + "engine.io-client": "~6.2.3", + "socket.io-parser": "~4.2.1" + }, + "dependencies": { + "socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + } } }, "socket.io-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.0.tgz", - "integrity": "sha512-tLfmEwcEwnlQTxFB7jibL/q2+q8dlVQzj4JdRLJ/W/G1+Fu9VSxCx1Lo+n1HvXxKnM//dUuD0xgiA7tQf57Vng==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", + "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", "dev": true, "requires": { - "@socket.io/component-emitter": "~3.1.0", + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", "debug": "~4.3.1" } }, @@ -15709,9 +15718,9 @@ } }, "terser": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz", - "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==", + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.1.tgz", + "integrity": "sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==", "requires": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", From eace80ff1e9b33bf1dcef2030cc743af5dbff8d5 Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Sun, 25 Dec 2022 01:19:09 +0100 Subject: [PATCH 02/19] Install next-themes. --- package-lock.json | 19 ++++++++++++++++++- package.json | 3 ++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 17c49eb..ff981f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,8 +12,9 @@ "@zxing/browser": "^0.1.1", "date-fns": "^2.11.1", "gray-matter": "^4.0.2", - "next": "latest", + "next": "12.1.6", "next-pwa": "^5.5.4", + "next-themes": "^0.2.1", "nostr-tools": "^0.23.3", "qrcode.react": "^3.0.2", "react": "17.0.2", @@ -6685,6 +6686,16 @@ "next": ">=9.0.0" } }, + "node_modules/next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", + "peerDependencies": { + "next": "*", + "react": "*", + "react-dom": "*" + } + }, "node_modules/next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", @@ -14412,6 +14423,12 @@ "workbox-window": "^6.5.3" } }, + "next-themes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.2.1.tgz", + "integrity": "sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==", + "requires": {} + }, "next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", diff --git a/package.json b/package.json index 987ff57..5b0f084 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,9 @@ "@zxing/browser": "^0.1.1", "date-fns": "^2.11.1", "gray-matter": "^4.0.2", - "next": "latest", + "next": "12.1.6", "next-pwa": "^5.5.4", + "next-themes": "^0.2.1", "nostr-tools": "^0.23.3", "qrcode.react": "^3.0.2", "react": "17.0.2", From 1b9d1cc8e67c0d258c048e7499d28d89eb5c71b9 Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Sun, 25 Dec 2022 14:12:58 +0100 Subject: [PATCH 03/19] Add next-themes logic + icons. --- src/components/header/index.tsx | 51 ++++++++++++++++++++++++++++++++- src/pages/_app.tsx | 7 ++++- tailwind.config.js | 17 +++++------ 3 files changed, 65 insertions(+), 10 deletions(-) diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx index 38f5b87..5655b69 100644 --- a/src/components/header/index.tsx +++ b/src/components/header/index.tsx @@ -1,9 +1,57 @@ -import React from "react" +import React, { useEffect, useState } from "react" import { DiGithubBadge } from "react-icons/di" import { MdSettings } from "react-icons/md" import Link from "next/link" +import { useTheme } from "next-themes" export function Header() { + const { theme, systemTheme, setTheme } = useTheme() + const [mounted, setMounted] = useState(false) + + useEffect(() => { + setMounted(true) + }, []) + + const renderThemeToggle = () => { + if (!mounted) return null + + const currentTheme = theme === "system" ? systemTheme : theme + + if (currentTheme === "dark") { + return ( + + ) + } else { + return ( + + ) + } + } + return (
@@ -24,6 +72,7 @@ export function Header() {
+ {renderThemeToggle()}
diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 674ffd6..1293275 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,6 +1,7 @@ import "../styles/global.css" import { AppProps } from "next/app" import { useEffect, useState } from "react" +import { ThemeProvider } from "next-themes" export default function App({ Component, pageProps }: AppProps) { const [keys, setKeys] = useState<{ @@ -17,5 +18,9 @@ export default function App({ Component, pageProps }: AppProps) { })() }, []) - return + return ( + + + + ) } diff --git a/tailwind.config.js b/tailwind.config.js index f4132ae..d31caa7 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,18 +1,19 @@ /** @type {import('tailwindcss').Config} */ module.exports = { content: [ - "./src/pages/**/*.{js,ts,jsx,tsx}", - "./src/components/**/*.{js,ts,jsx,tsx}", - "./src/views/**/*.{js,ts,jsx,tsx}", + "./src/pages/**/*.{js,ts,jsx,tsx}", + "./src/components/**/*.{js,ts,jsx,tsx}", + "./src/views/**/*.{js,ts,jsx,tsx}", ], + darkMode: "class", theme: { extend: { colors: { - 'custom-green-light': '#6b9370', - 'custom-green-dark': '#4D6A51', - 'custom-black': '#3C3744' - } - } + "custom-green-light": "#6b9370", + "custom-green-dark": "#4D6A51", + "custom-black": "#3C3744", + }, + }, }, plugins: [], } From 80562a657b9a4014148e3c1298e7f658ea0cc1d8 Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Tue, 27 Dec 2022 20:53:55 +0100 Subject: [PATCH 04/19] apply dark/light mode color scheme. --- src/components/button/index.tsx | 6 +---- src/components/header/index.tsx | 6 ++--- src/pages/index.tsx | 48 ++++++++++++++++----------------- src/styles/global.css | 35 +++++++++++++++++++++--- tailwind.config.js | 6 ++--- 5 files changed, 63 insertions(+), 38 deletions(-) diff --git a/src/components/button/index.tsx b/src/components/button/index.tsx index 5f0f503..d6a0ecb 100644 --- a/src/components/button/index.tsx +++ b/src/components/button/index.tsx @@ -8,11 +8,7 @@ type ButtonProps = { export const Button = ({ children, disabled, onClick, className }: ButtonProps) => { return (
-
diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx index 5655b69..155345c 100644 --- a/src/components/header/index.tsx +++ b/src/components/header/index.tsx @@ -53,10 +53,10 @@ export function Header() { } return ( -
-
+
+
-

Sendstr

+

Sendstr

{/* (
- -
-

Open source e2e encrypted shared clipboard

-

- Sendstr is an open source end-to-end encrypted shared clipboard app built on top of{" "} - - Nostr - - . No login needed, new throwaway encryption keys are generated on page load, and the - default relay deletes messages after 1 hour. To get started open this page on another - device and choose one of the options below. -

-
- - -
+
+

+ e2e encrypted shared clipboard +

+

+ Sendstr is an open source end-to-end encrypted shared clipboard app built on top of{" "} + + Nostr + + . No login needed, new throwaway encryption keys are generated on page load, and the + default relay deletes messages after 1 hour. To get started open this page on another + device and choose one of the options below. +

+
+ +
- +
) @@ -57,7 +57,7 @@ export default function Home({ keys }: HomeProps) { <> Sendstr - + -
+
-
+
diff --git a/src/styles/global.css b/src/styles/global.css index dc1c5a1..419062a 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -2,6 +2,35 @@ @tailwind components; @tailwind utilities; -body { - color: #FFFFFF -} \ No newline at end of file +:root { + --orange: #fb8500; + --orange-light: #ffb703; + --green: #004f2d; + --green-light: #7dc95e; + --red: #ff4e33; + --red-light:#ff8370; +} + +.light { + --primary: var(--orange); + --secondary: var(--green); + --warning: var(--red); +} + +.dark { + --primary: var(--orange-light); + --secondary: var(--green-light); + --warning: var(--red-light); +} + +@layer base { + body { + @apply dark:bg-black dark:text-gray-100 bg-white text-gray-900 + } +} + +@layer components { + .btn-main { + @apply bg-primary rounded-md px-6 py-3 w-full h-full shadow text-gray-100 dark:text-gray-900 font-semibold + } + } diff --git a/tailwind.config.js b/tailwind.config.js index d31caa7..255e7e7 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -9,9 +9,9 @@ module.exports = { theme: { extend: { colors: { - "custom-green-light": "#6b9370", - "custom-green-dark": "#4D6A51", - "custom-black": "#3C3744", + primary: "var(--primary)", + secondary: "var(--secondary)", + warning: "var(--warning)", }, }, }, From 7ed5b604c109dee755a7d98f0a3f8b93075d2232 Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Tue, 27 Dec 2022 22:48:07 +0100 Subject: [PATCH 05/19] Added dynamic color to QR-code. --- src/views/receive/index.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/views/receive/index.tsx b/src/views/receive/index.tsx index 65df402..382fddd 100644 --- a/src/views/receive/index.tsx +++ b/src/views/receive/index.tsx @@ -1,3 +1,4 @@ +import { useTheme } from "next-themes" import { QRCodeSVG } from "qrcode.react" import { useEffect, useRef, useState } from "react" import Toastify from "toastify-js" @@ -36,6 +37,8 @@ export const ReceiveView = ({ keys }: ReceiveViewProps) => { const [message, setMessage] = useState("") const events = useRef<{ [k: string]: NostrEventType } | null>(null) const nostr = useRef(null) + const { theme } = useTheme() + const isDarkMode = theme === "dark" const processEvent = (event: NostrEventType) => { events.current = { ...events.current, ...{ [event.id]: event } } @@ -48,7 +51,7 @@ export const ReceiveView = ({ keys }: ReceiveViewProps) => { const { subs, relays } = await subscribe(keys, peerKey, processEvent) nostr.current = { subs, relays, ...keys } return () => { - nostr?.current?.subs.forEach(sub => sub.unsub()) + nostr?.current?.subs.forEach((sub) => sub.unsub()) } })() }, [peerKey]) @@ -78,7 +81,7 @@ export const ReceiveView = ({ keys }: ReceiveViewProps) => { value={keys.pub} level="H" bgColor="transparent" - fgColor="#3C3744" + fgColor={isDarkMode ? "white" : "black"} includeMargin={false} width="100%" height="100%" @@ -116,7 +119,7 @@ export const ReceiveView = ({ keys }: ReceiveViewProps) => {
-
{peerKey !== '' && }
+
{peerKey !== "" && }
From 3e40467c253261d1e71e05959d94f59ad3f3603a Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Tue, 27 Dec 2022 23:28:01 +0100 Subject: [PATCH 06/19] Change QR color from white to grey-100 (hex). --- src/views/receive/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/receive/index.tsx b/src/views/receive/index.tsx index 382fddd..b016bba 100644 --- a/src/views/receive/index.tsx +++ b/src/views/receive/index.tsx @@ -81,7 +81,7 @@ export const ReceiveView = ({ keys }: ReceiveViewProps) => { value={keys.pub} level="H" bgColor="transparent" - fgColor={isDarkMode ? "white" : "black"} + fgColor={isDarkMode ? "#f3f4f6" : "black"} includeMargin={false} width="100%" height="100%" From eaca25bd81039a9bfc6189928771543bebf9b778 Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Wed, 28 Dec 2022 15:03:00 +0100 Subject: [PATCH 07/19] Add icon hover color. --- src/components/header/index.tsx | 8 ++++---- src/styles/global.css | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx index 155345c..c5982de 100644 --- a/src/components/header/index.tsx +++ b/src/components/header/index.tsx @@ -19,7 +19,7 @@ export function Header() { if (currentTheme === "dark") { return ( -
-
- -
+ Copy Pubkey + -
{peerKey !== "" && }
- +
{peerKey !== "" && }
+ ) } From d75068651c8c91ebbb00a344d2f9850c597a8a3a Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Thu, 29 Dec 2022 00:25:02 +0100 Subject: [PATCH 12/19] Remove Card from settings view. --- src/pages/settings/index.tsx | 106 +++++++++++++++++------------------ 1 file changed, 52 insertions(+), 54 deletions(-) diff --git a/src/pages/settings/index.tsx b/src/pages/settings/index.tsx index 0a80b39..4ba51bc 100644 --- a/src/pages/settings/index.tsx +++ b/src/pages/settings/index.tsx @@ -28,7 +28,7 @@ export default function Settings() { <> Sendstr - Settings - +
- -
-

Relays

-
    - {settings.relays.map((relay) => ( -
  • -
    - { - toggleRelay(relay.url) - setSettings({ - ...settings, - relays: getRelays(), - }) - }} - /> - - -
    -
  • - ))} -
- - -
-
+
+

Relays

+
    + {settings.relays.map((relay) => ( +
  • +
    + { + toggleRelay(relay.url) + setSettings({ + ...settings, + relays: getRelays(), + }) + }} + /> + + +
    +
  • + ))} +
+ + +
From d4b76974a57c5073f8c80d4190498ac88a4d9f6c Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Thu, 29 Dec 2022 01:16:46 +0100 Subject: [PATCH 13/19] Change css class name. --- src/styles/global.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles/global.css b/src/styles/global.css index 8cf4f98..689acc3 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -34,7 +34,7 @@ @apply bg-primary rounded-md px-6 py-3 w-full h-full shadow text-gray-100 dark:text-gray-900 font-semibold } - .icon-hover { + .primary-hover { @apply transition duration-300 hover:text-primary } } From 09517f9b0e732d1fcee3413bd5409ab4fdb60896 Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Thu, 29 Dec 2022 01:17:06 +0100 Subject: [PATCH 14/19] Move theme toggle to settings. --- src/components/header/index.tsx | 52 +--------- src/pages/settings/index.tsx | 164 ++++++++++++++++++++++---------- 2 files changed, 115 insertions(+), 101 deletions(-) diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx index ad295a3..18e65fa 100644 --- a/src/components/header/index.tsx +++ b/src/components/header/index.tsx @@ -5,53 +5,6 @@ import Link from "next/link" import { useTheme } from "next-themes" export function Header() { - const { theme, systemTheme, setTheme } = useTheme() - const [mounted, setMounted] = useState(false) - - useEffect(() => { - setMounted(true) - }, []) - - const renderThemeToggle = () => { - if (!mounted) return null - - const currentTheme = theme === "system" ? systemTheme : theme - - if (currentTheme === "dark") { - return ( - - ) - } else { - return ( - - ) - } - } - return (
@@ -65,14 +18,13 @@ export function Header() { >FAQ */} - +
- +
- {renderThemeToggle()}
diff --git a/src/pages/settings/index.tsx b/src/pages/settings/index.tsx index 4ba51bc..8952ac4 100644 --- a/src/pages/settings/index.tsx +++ b/src/pages/settings/index.tsx @@ -1,4 +1,4 @@ -import { createRef, useState } from "react" +import { createRef, useEffect, useState } from "react" import { Button } from "../../components/button" import { Card } from "../../components/card" import { Header } from "../../components/header" @@ -13,6 +13,7 @@ import { Input } from "../../components/input" import { MdDelete } from "react-icons/md" import { Toggle } from "../../components/toggle" import Head from "next/head" +import { useTheme } from "next-themes" type SettingsState = { relays: SettingsRelay[] @@ -23,6 +24,62 @@ export default function Settings() { relays: typeof window !== "undefined" ? getRelays() : [], }) const newPool = createRef() + const { theme, systemTheme, setTheme } = useTheme() + const [mounted, setMounted] = useState(false) + + useEffect(() => { + setMounted(true) + }, []) + + const ThemeToggle = () => { + if (!mounted) return null + + let content: JSX.Element + const currentTheme = theme === "system" ? systemTheme : theme + const isDark = currentTheme === "dark" + + const toggleHandler = () => setTheme(isDark ? "light" : "dark") + + if (isDark) { + content = ( + + Theme toggle + + + ) + } else { + content = ( + + Theme toggle + + + ) + } + + return ( +
+

Light mode

+
+

Toggle

+ {content} +
+
+ ) + } return ( <> @@ -53,61 +110,66 @@ export default function Settings() { /> -
+
-

Relays

-
    - {settings.relays.map((relay) => ( -
  • -
    - { - toggleRelay(relay.url) - setSettings({ - ...settings, - relays: getRelays(), - }) - }} - /> - - -
    -
  • - ))} -
- - +
+

Relays

+
    + {settings.relays.map((relay) => ( +
  • +
    + { + toggleRelay(relay.url) + setSettings({ + ...settings, + relays: getRelays(), + }) + }} + /> + + +
    +
  • + ))} +
+ + +
+
+ +
From d9d1d88a0d2445ffe74a24c552b95261444b45c7 Mon Sep 17 00:00:00 2001 From: Arne Pedersen Date: Thu, 29 Dec 2022 01:19:40 +0100 Subject: [PATCH 15/19] Add shadow to buttons in settings and recieve views. --- src/pages/settings/index.tsx | 2 +- src/views/receive/index.tsx | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/settings/index.tsx b/src/pages/settings/index.tsx index 8952ac4..204061e 100644 --- a/src/pages/settings/index.tsx +++ b/src/pages/settings/index.tsx @@ -152,7 +152,7 @@ export default function Settings() {