diff --git a/front/package.json b/front/package.json
index 5da60e7..8ce38fa 100644
--- a/front/package.json
+++ b/front/package.json
@@ -28,6 +28,7 @@
"next-themes": "^0.2.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
+ "react-qr-reader-es6": "2.2.1-2",
"viem": "^1.18.0",
"wagmi": "^1.0.6"
},
diff --git a/front/pnpm-lock.yaml b/front/pnpm-lock.yaml
index cb7dc12..bd6e5ea 100644
--- a/front/pnpm-lock.yaml
+++ b/front/pnpm-lock.yaml
@@ -62,6 +62,12 @@ dependencies:
react-dom:
specifier: ^18.2.0
version: 18.2.0(react@18.2.0)
+ react-qr-reader:
+ specifier: 3.0.0-beta-1
+ version: 3.0.0-beta-1(react-dom@18.2.0)(react@18.2.0)
+ react-qr-reader-es6:
+ specifier: 2.2.1-2
+ version: 2.2.1-2(react-dom@18.2.0)(react@18.2.0)
viem:
specifier: ^1.18.0
version: 1.18.0(typescript@5.2.2)
@@ -3046,6 +3052,31 @@ packages:
tslib: 1.14.1
dev: false
+ /@zxing/browser@0.0.7(@zxing/library@0.18.6):
+ resolution: {integrity: sha512-AepzMgDnD6EjxewqmXpHJsi4S3Gw9ilZJLIbTf6fWuWySEcHBodnGu3p7FWlgq1Sd5QyfPhTum5z3CBkkhMVng==}
+ peerDependencies:
+ '@zxing/library': ^0.18.3
+ dependencies:
+ '@zxing/library': 0.18.6
+ optionalDependencies:
+ '@zxing/text-encoding': 0.9.0
+ dev: false
+
+ /@zxing/library@0.18.6:
+ resolution: {integrity: sha512-bulZ9JHoLFd9W36pi+7e7DnEYNJhljYjZ1UTsKPOoLMU3qtC+REHITeCRNx40zTRJZx18W5TBRXt5pq2Uopjsw==}
+ engines: {node: '>= 10.4.0'}
+ dependencies:
+ ts-custom-error: 3.3.1
+ optionalDependencies:
+ '@zxing/text-encoding': 0.9.0
+ dev: false
+
+ /@zxing/text-encoding@0.9.0:
+ resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==}
+ requiresBuild: true
+ dev: false
+ optional: true
+
/JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
hasBin: true
@@ -4247,6 +4278,14 @@ packages:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: false
+ optional: true
+
/function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
@@ -4796,6 +4835,10 @@ packages:
engines: {'0': node >= 0.2.0}
dev: false
+ /jsqr-es6@1.4.0-1:
+ resolution: {integrity: sha512-LPWZJLI+3LLOy9k3/s/MeXlkfNOs3bYBX5O+fp4N0XuxbgO8H7Uc/nYZeNwo13nSZXRW9xWFKmZdy9591+PyAg==}
+ dev: false
+
/jsx-ast-utils@3.3.5:
resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
engines: {node: '>=4.0'}
@@ -5070,7 +5113,6 @@ packages:
/object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
- dev: true
/object-inspect@1.13.1:
resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
@@ -5314,7 +5356,6 @@ packages:
loose-envify: 1.4.0
object-assign: 4.1.1
react-is: 16.13.1
- dev: true
/proxy-compare@2.5.1:
resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==}
@@ -5412,6 +5453,31 @@ packages:
/react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+ /react-qr-reader-es6@2.2.1-2(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-pDNH8FoR3fOBBCgh4ImKHlX+pv/D3P8JmE+vjjcw3+YTEUgBqUAZbIkD/WUE3HzhVhN2zx7ZLBhO9vJngnjJxw==}
+ peerDependencies:
+ react: '>=16'
+ react-dom: '>=16'
+ dependencies:
+ jsqr-es6: 1.4.0-1
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /react-qr-reader@3.0.0-beta-1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-5HeFH9x/BlziRYQYGK2AeWS9WiKYZtGGMs9DXy3bcySTX3C9UJL9EwcPnWw8vlf7JP4FcrAlr1SnZ5nsWLQGyw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0
+ react-dom: ^16.8.0 || ^17.0.0
+ dependencies:
+ '@zxing/browser': 0.0.7(@zxing/library@0.18.6)
+ '@zxing/library': 0.18.6
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ rollup: 2.79.1
+ dev: false
+
/react-remove-scroll-bar@2.3.4(@types/react@18.2.31)(react@18.2.0):
resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==}
engines: {node: '>=10'}
@@ -5570,6 +5636,14 @@ packages:
glob: 7.2.3
dev: true
+ /rollup@2.79.1:
+ resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: false
+
/rpc-websockets@7.6.1:
resolution: {integrity: sha512-MmRGaJJvxTHSRxYPjJJqcj2zWnCetw7YbYbKlD0Yc7qVw6PsZhRJg1MI3mpWlpBs+4zO+urlNfLl9zLsdOD/gA==}
dependencies:
@@ -5900,6 +5974,11 @@ packages:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
dev: false
+ /ts-custom-error@3.3.1:
+ resolution: {integrity: sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==}
+ engines: {node: '>=14.0.0'}
+ dev: false
+
/tsconfig-paths@3.14.2:
resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
dependencies:
diff --git a/front/src/components/HomePage/index.tsx b/front/src/components/HomePage/index.tsx
index e7217b3..0fb8c59 100644
--- a/front/src/components/HomePage/index.tsx
+++ b/front/src/components/HomePage/index.tsx
@@ -2,14 +2,14 @@
import OnBoarding from "@/components/OnBoarding";
import { useMe } from "@/providers/MeProvider";
-import { Button, Flex } from "@radix-ui/themes";
+import { Flex } from "@radix-ui/themes";
import Balance from "../Balance";
import NavBar from "../NavBar";
import History from "../History";
import TopBar from "../TopBar";
export default function Home() {
- const { me, disconnect, isMounted } = useMe();
+ const { me, isMounted } = useMe();
if (!isMounted) return null;
@@ -20,7 +20,6 @@ export default function Home() {
-
);
} else {
diff --git a/front/src/components/NavBar/index.tsx b/front/src/components/NavBar/index.tsx
index 81b6d26..74d427e 100644
--- a/front/src/components/NavBar/index.tsx
+++ b/front/src/components/NavBar/index.tsx
@@ -5,6 +5,7 @@ import { useModal } from "@/providers/ModalProvider";
import { PaperPlaneIcon, CornersIcon } from "@radix-ui/react-icons";
import { SendTransaction } from "@/components/SendTransaction";
import { useEffect } from "react";
+import QrReaderModal from "../QrReaderModal";
export default function NavBar() {
const { open } = useModal();
@@ -19,7 +20,12 @@ export default function NavBar() {
>
-