From 414ffc02d9f0ab61872e426b60d85f12df602fc4 Mon Sep 17 00:00:00 2001 From: srikanth716 Date: Fri, 25 Oct 2024 01:21:31 +0530 Subject: [PATCH 1/5] [INJIVER-456] implement openId4vp userInterface sample Signed-off-by: srikanth716 --- ui/package.json | 1 + ui/src/App.tsx | 24 ++- .../Header/VerificationMethodTabs/index.tsx | 32 ++-- .../Home/VerificationSection/ScanQrCode.tsx | 145 ++++++++---------- .../VerificationSection/VpVerification.tsx | 86 +++++++++++ .../commons/StyledButton.tsx | 35 ++++- .../Home/VerificationSection/index.tsx | 8 +- ui/src/components/PageTemplate/Navbar.tsx | 8 +- ui/src/components/PageTemplate/index.tsx | 4 + ui/src/index.css | 10 +- ui/src/pages/Home.tsx | 41 +++-- ui/src/pages/Scan.tsx | 19 +++ ui/src/pages/Upload.tsx | 35 +++++ ui/src/pages/Verify.tsx | 19 +++ .../verification/verification.slice.ts | 6 +- ui/src/types/data-types.ts | 2 +- ui/src/utils/config.ts | 27 +++- ui/src/utils/storage.ts | 17 ++ ui/tailwind.config.js | 1 + 19 files changed, 380 insertions(+), 140 deletions(-) create mode 100644 ui/src/components/Home/VerificationSection/VpVerification.tsx create mode 100644 ui/src/pages/Scan.tsx create mode 100644 ui/src/pages/Upload.tsx create mode 100644 ui/src/pages/Verify.tsx create mode 100644 ui/src/utils/storage.ts diff --git a/ui/package.json b/ui/package.json index 32255cc4..b990256a 100644 --- a/ui/package.json +++ b/ui/package.json @@ -22,6 +22,7 @@ "@types/redux-thunk": "^2.1.0", "patch-package": "^8.0.0", "pdfjs-dist": "^4.5.136", + "qrcode.react": "^4.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^5.2.1", diff --git a/ui/src/App.tsx b/ui/src/App.tsx index 065ca892..58990b3f 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -1,33 +1,43 @@ import React from 'react'; import './App.css'; +import {Pages} from "./utils/config"; import Home from "./pages/Home"; import Offline from "./pages/Offline"; +import Scan from './pages/Scan'; import {RouterProvider, createBrowserRouter} from "react-router-dom"; import AlertMessage from "./components/commons/AlertMessage"; - import PreloadImages from "./components/commons/PreloadImages"; import OvpRedirect from "./pages/OvpRedirect"; import PageNotFound404 from "./pages/PageNotFound404"; -import {Pages} from "./utils/config"; +import { Verify } from './pages/Verify'; + const router = createBrowserRouter([ { - path: Pages.Home, + path: Pages.Home, // e.g., "/" element: }, { - path: Pages.Redirect, + path: Pages.Scan, // e.g., "/scan" + element: + }, + { + path: Pages.VerifyCredentials, // e.g., "/verify" + element: + }, + { + path: Pages.Redirect, // e.g., "/ovp-redirect" element: }, { - path: Pages.Offline, + path: Pages.Offline, // e.g., "/offline" element: }, { - path: Pages.PageNotFound, + path: Pages.PageNotFound, // e.g., "*" element: } -]) +]); const preloadImages = ['/assets/images/under_construction.svg', '/assets/images/inji-logo.svg']; diff --git a/ui/src/components/Home/Header/VerificationMethodTabs/index.tsx b/ui/src/components/Home/Header/VerificationMethodTabs/index.tsx index 4b4f3453..e5a942bc 100644 --- a/ui/src/components/Home/Header/VerificationMethodTabs/index.tsx +++ b/ui/src/components/Home/Header/VerificationMethodTabs/index.tsx @@ -4,9 +4,11 @@ import { useVerificationFlowSelector } from "../../../../redux/features/verifica import { goToHomeScreen } from "../../../../redux/features/verification/verification.slice"; import { VerificationMethod } from "../../../../types/data-types"; import { raiseAlert } from "../../../../redux/features/alerts/alerts.slice"; -import { AlertMessages } from "../../../../utils/config"; +import { AlertMessages, Pages, SELECTED_METHOD } from "../../../../utils/config"; import { MdArrowForwardIos } from "react-icons/md"; import { MdArrowBackIos } from "react-icons/md"; +import { useNavigate } from "react-router-dom"; +import { storage } from "../../../../utils/storage"; const Tab = ({ id, @@ -23,8 +25,7 @@ const Tab = ({ }) => { const activeTab = "bg-gradient border-t-[6px] border-y-transparent text-activeTabText"; - const inactiveTab = - "bg-inactiveTabBackground text-inactiveTabText"; + const inactiveTab = "bg-inactiveTabBackground text-inactiveTabText"; const disabledTab = "text-disableTabText bg-disableTabBackground"; const enabledTab = active ? activeTab : inactiveTab; return ( @@ -44,10 +45,12 @@ const Tab = ({ function VerificationMethodTabs(props: any) { const dispatch = useAppDispatch(); + const navigate = useNavigate(); const method = useVerificationFlowSelector((state) => state.method); function switchToVerificationMethod(method: VerificationMethod) { dispatch(goToHomeScreen({ method })); + storage.setItem(SELECTED_METHOD,method) } function showAlert() { @@ -91,20 +94,28 @@ function VerificationMethodTabs(props: any) { id="upload-qr-code-tab" active={method === "UPLOAD"} label="Upload QR Code" - onClick={() => switchToVerificationMethod("UPLOAD")} + onClick={() => { + switchToVerificationMethod("UPLOAD"); + navigate(Pages.Home); + }} /> switchToVerificationMethod("SCAN")} + onClick={() => { + switchToVerificationMethod("SCAN"); + navigate(Pages.Scan); + }} /> { + switchToVerificationMethod("VERIFY"); + navigate(Pages.VerifyCredentials); + }} /> -
+
); } diff --git a/ui/src/components/Home/VerificationSection/ScanQrCode.tsx b/ui/src/components/Home/VerificationSection/ScanQrCode.tsx index 0683182e..b58361ac 100644 --- a/ui/src/components/Home/VerificationSection/ScanQrCode.tsx +++ b/ui/src/components/Home/VerificationSection/ScanQrCode.tsx @@ -1,85 +1,74 @@ -import React, { useState } from 'react'; -import { GradientScanIcon, QrIcon, WhiteScanIcon } from '../../../utils/theme-utils'; +import React, { useState } from "react"; +import { + GradientScanIcon, + QrIcon, + WhiteScanIcon, +} from "../../../utils/theme-utils"; import StyledButton from "./commons/StyledButton"; -import {UploadQrCode} from "./UploadQrCode"; -import {useAppDispatch} from "../../../redux/hooks"; -import {qrReadInit} from "../../../redux/features/verification/verification.slice"; -import {useVerificationFlowSelector} from "../../../redux/features/verification/verification.selector"; -import {checkInternetStatus} from "../../../utils/misc"; -import {updateInternetConnectionStatus} from "../../../redux/features/application-state/application-state.slice"; -import { ScanOutline } from '../../../utils/theme-utils'; +import { useAppDispatch } from "../../../redux/hooks"; +import { qrReadInit } from "../../../redux/features/verification/verification.slice"; +import { checkInternetStatus } from "../../../utils/misc"; +import { updateInternetConnectionStatus } from "../../../redux/features/application-state/application-state.slice"; +import { ScanOutline } from "../../../utils/theme-utils"; const Scan = () => { - const dispatch = useAppDispatch(); - const [isHover, setHover] = useState(false) - const ScanIcon = isHover? WhiteScanIcon :GradientScanIcon - return ( - <> - } - onMouseEnter={()=> setHover(true)} - onMouseLeave={()=> setHover(false)} - className='mx-0 my-1.5 text-center inline-flex absolute top-[160px] left-[33px] w-[205px] lg:w-[223px] lg:left-[63px] lg:top-[231px]' - fill={false} - onClick={async (event) => { - dispatch(updateInternetConnectionStatus({internetConnectionStatus: "LOADING"})) - let isOnline = await checkInternetStatus(); - dispatch(updateInternetConnectionStatus({internetConnectionStatus: isOnline ? "ONLINE" : "OFFLINE"})) - if (isOnline) { - document.getElementById("trigger-scan")?.click(); - } - }}> - Scan - - +
+ ) : ( +
- + storage.setItem(SELECTED_METHOD, "UPLOAD")}> diff --git a/ui/src/components/PageTemplate/index.tsx b/ui/src/components/PageTemplate/index.tsx index a42a2b2c..a727ccac 100644 --- a/ui/src/components/PageTemplate/index.tsx +++ b/ui/src/components/PageTemplate/index.tsx @@ -2,11 +2,15 @@ import React from 'react'; import Navbar from "./Navbar"; import Copyrights from "./Copyrights"; import CheckingForInternetConnectivity from "../misc/CheckingForInternetConnectivity"; +import Header from '../Home/Header'; const PageTemplate = (props: any) => { return (
+
+
+
{props.children} diff --git a/ui/src/index.css b/ui/src/index.css index 06caa962..fe702e7a 100644 --- a/ui/src/index.css +++ b/ui/src/index.css @@ -7,7 +7,7 @@ @layer base { :root { --iv-font-base: "Inter", sans-serif; - --iv-primary-color: #951F6F; + --iv-primary-color: #951f6f; --iv-logo-start-color: #ffb600; --iv-background-color: #ffffff; --iv-white-text: #ffffff; @@ -41,6 +41,7 @@ --iv-disabledTab-bg: #e5e7eb; --iv-disabledTab-text: #4b5563; --iv-document-icon: #000000; + --iv-disabled-button-bg: #c7c7c7; } [class="purple_theme"] { --iv-font-base: "Gentium Plus", serif; @@ -78,20 +79,21 @@ --iv-disabledTab-bg: #e5e7eb; --iv-disabledTab-text: #4b5563; --iv-document-icon: #000000; + --iv-disabled-button-bg: #c7c7c7; } } body { margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", + "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; } diff --git a/ui/src/pages/Home.tsx b/ui/src/pages/Home.tsx index 2089e5c7..8c6d941e 100644 --- a/ui/src/pages/Home.tsx +++ b/ui/src/pages/Home.tsx @@ -1,28 +1,23 @@ -import React from 'react'; -import VerificationProgressTracker from "../components/Home/VerificationProgressTracker"; -import VerificationSection from "../components/Home/VerificationSection"; +import React from "react"; import PageTemplate from "../components/PageTemplate"; -import Header from "../components/Home/Header"; +import VerificationSection from "../components/Home/VerificationSection"; +import VerificationProgressTracker from "../components/Home/VerificationProgressTracker"; + + +function Home() { -function Home(props: any) { - return ( - -
-
-
-
-
-
- -
-
- -
-
-
-
- ); + return ( + +
+
+ +
+
+ +
+
+
+ ); } export default Home; diff --git a/ui/src/pages/Scan.tsx b/ui/src/pages/Scan.tsx new file mode 100644 index 00000000..ee6df189 --- /dev/null +++ b/ui/src/pages/Scan.tsx @@ -0,0 +1,19 @@ +import React from "react"; +import PageTemplate from "../components/PageTemplate"; +import VerificationSection from "../components/Home/VerificationSection"; +import VerificationProgressTracker from "../components/Home/VerificationProgressTracker"; + +export default function Scan() { + return ( + +
+
+ +
+
+ +
+
+
+ ); +} diff --git a/ui/src/pages/Upload.tsx b/ui/src/pages/Upload.tsx new file mode 100644 index 00000000..6ad4a352 --- /dev/null +++ b/ui/src/pages/Upload.tsx @@ -0,0 +1,35 @@ +import React from "react"; +import { QrIcon } from "../utils/theme-utils"; +import { UploadQrCode } from "../components/Home/VerificationSection/UploadQrCode"; +import { ScanOutline } from "../utils/theme-utils"; + +export const Upload = () => { + return ( +
+
+
+
+
+ +
+ +
+
+

+ Allowed file formats: PNG/JPEG/JPG/PDF
+ Min Size : 10KB | Max Size : 5MB +

+
+
+
+ ); +}; diff --git a/ui/src/pages/Verify.tsx b/ui/src/pages/Verify.tsx new file mode 100644 index 00000000..bfb53b2c --- /dev/null +++ b/ui/src/pages/Verify.tsx @@ -0,0 +1,19 @@ +import React from "react"; +import PageTemplate from "../components/PageTemplate"; +import VerificationProgressTracker from "../components/Home/VerificationProgressTracker"; +import { VpVerification } from "../components/Home/VerificationSection/VpVerification"; + +export function Verify() { + return ( + +
+
+ +
+
+ +
+
+
+ ); +} diff --git a/ui/src/redux/features/verification/verification.slice.ts b/ui/src/redux/features/verification/verification.slice.ts index 54e593ff..40ceb876 100644 --- a/ui/src/redux/features/verification/verification.slice.ts +++ b/ui/src/redux/features/verification/verification.slice.ts @@ -1,12 +1,12 @@ import {createSlice} from "@reduxjs/toolkit"; import {VerificationState} from "../../../types/data-types"; -import {VerificationSteps} from "../../../utils/config"; +import {METHOD, VerificationSteps} from "../../../utils/config"; export const PreloadedState: VerificationState = { alert: {}, qrReadResult: {status: "NOT_READ"}, - method: "UPLOAD", - activeScreen: VerificationSteps["UPLOAD"].QrCodePrompt, + method: METHOD, + activeScreen: VerificationSteps[METHOD].QrCodePrompt, verificationResult: {vc: undefined, vcStatus: undefined}, ovp: {} }; diff --git a/ui/src/types/data-types.ts b/ui/src/types/data-types.ts index c2b1c524..d6e702a6 100644 --- a/ui/src/types/data-types.ts +++ b/ui/src/types/data-types.ts @@ -37,7 +37,7 @@ export type AlertInfo = { autoHideDuration?: number } -export type VerificationMethod = 'SCAN' | 'UPLOAD' | "TO_BE_SELECTED"; +export type VerificationMethod = 'SCAN' | 'UPLOAD' | "VERIFY" | "TO_BE_SELECTED"; export type InternetConnectionStatus = "ONLINE" | "OFFLINE" | "LOADING" | "UNKNOWN"; diff --git a/ui/src/utils/config.ts b/ui/src/utils/config.ts index 827a6857..df40f40e 100644 --- a/ui/src/utils/config.ts +++ b/ui/src/utils/config.ts @@ -1,8 +1,10 @@ -import {AlertInfo} from "../types/data-types"; +import {AlertInfo, VerificationMethod} from "../types/data-types"; +import { storage } from "./storage"; export const Pages = { Home: "/", - VerifyCredentials: "/",/*"/verify"*/ + Scan:"/scan", + VerifyCredentials: "/verify",/*"/verify"*/ Offline: "/offline", Redirect: "/redirect", PageNotFound: "*" @@ -26,6 +28,11 @@ export const VerificationSteps: any = { QrCodePrompt: 1, Verifying: 2, DisplayResult: 3 + }, + "VERIFY": { + QrCodePrompt: 1, + Verifying: 2, + DisplayResult: 3 } } @@ -61,6 +68,20 @@ export const VerificationStepsContent: any = { label: 'View result', description: 'View the verification result.' } + ], + VERIFY: [ + { + label: 'Select claim', + description: 'Select the claim to verify', + }, + { + label: 'Verify document', + description: 'Verification for the document or card is in progress.', + }, + { + label: 'View result', + description: 'View the verification result.' + } ] }; @@ -120,3 +141,5 @@ export const CONSTRAINTS_IDEAL_HEIGHT = 1440; export const CONSTRAINTS_IDEAL_FRAME_RATE = 30; export const FRAME_PROCESS_INTERVAL_MS = 100; export const THROTTLE_FRAMES_PER_SEC = 500; // Throttle frame processing to every 500ms (~2 frames per second) +export const SELECTED_METHOD = "method" +export const METHOD: VerificationMethod = (storage.getItem(SELECTED_METHOD) as VerificationMethod) || "UPLOAD"; diff --git a/ui/src/utils/storage.ts b/ui/src/utils/storage.ts new file mode 100644 index 00000000..d67498b1 --- /dev/null +++ b/ui/src/utils/storage.ts @@ -0,0 +1,17 @@ +import React from "react"; + +export class storage extends React.Component { + static getItem = (key: string) => { + let data = localStorage.getItem(key); + if (data) { + data = JSON.parse(data); + } + return data; + }; + + static setItem(key: string, value: any) { + if (value) { + localStorage.setItem(key, JSON.stringify(value)); + } + } +} diff --git a/ui/tailwind.config.js b/ui/tailwind.config.js index bcd1dda0..8065440e 100644 --- a/ui/tailwind.config.js +++ b/ui/tailwind.config.js @@ -51,6 +51,7 @@ module.exports = { disableTabBackground:"var(--iv-disabledTab-bg)", disableTabText:"var(--iv-disabledTab-text)", documentIcon: "var(--iv-document-icon)", + disabledButtonBg: "var(--iv-disabled-button-bg)" }, backgroundImage: { "gradient": From e6a6377c7e53998936bf031c290d68239b33f365 Mon Sep 17 00:00:00 2001 From: srikanth716 Date: Fri, 25 Oct 2024 01:27:55 +0530 Subject: [PATCH 2/5] Merge branch 'develop' of https://github.com/mosip/inji-verify into injiver-456-online-sharing-vp Signed-off-by: srikanth716 --- .../Header/VerificationMethodTabs/index.tsx | 4 +- .../Home/VerificationSection/QrScanner.tsx | 8 +-- ui/src/components/PageTemplate/Navbar.tsx | 8 +-- ui/src/components/commons/Loader.tsx | 23 +++++--- ui/src/index.css | 58 ++++++++++++++----- ui/tailwind.config.js | 1 + 6 files changed, 70 insertions(+), 32 deletions(-) diff --git a/ui/src/components/Home/Header/VerificationMethodTabs/index.tsx b/ui/src/components/Home/Header/VerificationMethodTabs/index.tsx index e5a942bc..fb47641f 100644 --- a/ui/src/components/Home/Header/VerificationMethodTabs/index.tsx +++ b/ui/src/components/Home/Header/VerificationMethodTabs/index.tsx @@ -76,7 +76,7 @@ function VerificationMethodTabs(props: any) { return (
-
+
-
+
- storage.setItem(SELECTED_METHOD, "UPLOAD")}> + diff --git a/ui/src/redux/features/verification/verification.slice.ts b/ui/src/redux/features/verification/verification.slice.ts index 40ceb876..21e6b788 100644 --- a/ui/src/redux/features/verification/verification.slice.ts +++ b/ui/src/redux/features/verification/verification.slice.ts @@ -1,12 +1,12 @@ import {createSlice} from "@reduxjs/toolkit"; import {VerificationState} from "../../../types/data-types"; -import {METHOD, VerificationSteps} from "../../../utils/config"; +import {VerificationSteps} from "../../../utils/config"; export const PreloadedState: VerificationState = { alert: {}, qrReadResult: {status: "NOT_READ"}, - method: METHOD, - activeScreen: VerificationSteps[METHOD].QrCodePrompt, + method: 'UPLOAD', + activeScreen: VerificationSteps["UPLOAD"].QrCodePrompt, verificationResult: {vc: undefined, vcStatus: undefined}, ovp: {} }; diff --git a/ui/src/utils/config.ts b/ui/src/utils/config.ts index df40f40e..c31c2983 100644 --- a/ui/src/utils/config.ts +++ b/ui/src/utils/config.ts @@ -1,5 +1,4 @@ -import {AlertInfo, VerificationMethod} from "../types/data-types"; -import { storage } from "./storage"; +import {AlertInfo} from "../types/data-types"; export const Pages = { Home: "/", @@ -141,5 +140,3 @@ export const CONSTRAINTS_IDEAL_HEIGHT = 1440; export const CONSTRAINTS_IDEAL_FRAME_RATE = 30; export const FRAME_PROCESS_INTERVAL_MS = 100; export const THROTTLE_FRAMES_PER_SEC = 500; // Throttle frame processing to every 500ms (~2 frames per second) -export const SELECTED_METHOD = "method" -export const METHOD: VerificationMethod = (storage.getItem(SELECTED_METHOD) as VerificationMethod) || "UPLOAD"; From 6a05c6f7e61ff57fb2cd4e57559bbacd0b696f1d Mon Sep 17 00:00:00 2001 From: srikanth716 Date: Tue, 29 Oct 2024 17:55:17 +0530 Subject: [PATCH 4/5] [INJIVER-456] implement mock fetch request uri Signed-off-by: srikanth716 --- .../VerificationSection/VpVerification.tsx | 132 ++++++++++++------ .../commons/StyledButton.tsx | 4 +- .../Home/VerificationSection/index.tsx | 1 - .../verification/verification.selector.ts | 3 +- ui/src/redux/features/verify/verifySaga.ts | 27 ++++ ui/src/redux/features/verify/verifyState.ts | 25 ++++ ui/src/redux/store.ts | 7 +- ui/src/types/data-types.ts | 13 ++ ui/src/utils/api.ts | 22 +++ ui/src/utils/config.ts | 1 + .../controller/HelloController.java | 14 -- .../controller/VerifyController.java | 16 +++ .../src/main/resources/application.properties | 1 + 13 files changed, 200 insertions(+), 66 deletions(-) create mode 100644 ui/src/redux/features/verify/verifySaga.ts create mode 100644 ui/src/redux/features/verify/verifyState.ts create mode 100644 ui/src/utils/api.ts delete mode 100644 verify-service/src/main/java/io/mosip/verifyservice/controller/HelloController.java create mode 100644 verify-service/src/main/java/io/mosip/verifyservice/controller/VerifyController.java diff --git a/ui/src/components/Home/VerificationSection/VpVerification.tsx b/ui/src/components/Home/VerificationSection/VpVerification.tsx index 1b11ff13..70788c8d 100644 --- a/ui/src/components/Home/VerificationSection/VpVerification.tsx +++ b/ui/src/components/Home/VerificationSection/VpVerification.tsx @@ -1,7 +1,12 @@ -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { QrIcon, ScanOutline } from "../../../utils/theme-utils"; import StyledButton from "./commons/StyledButton"; import { QRCodeSVG } from "qrcode.react"; +import { useVerifyFlowSelector } from "../../../redux/features/verification/verification.selector"; +import { useAppDispatch } from "../../../redux/hooks"; +import { getRequestUri } from "../../../redux/features/verify/verifyState"; +import Loader from "../../commons/Loader"; +import { verifiableClaims } from "../../../utils/config"; interface GenerateButtonProps { onPress: () => void; @@ -15,7 +20,7 @@ const GenerateButton: React.FC = ({ return ( = ({ }; export const VpVerification = () => { + const dispatch = useAppDispatch(); const [claim, setClaims] = useState(""); const [isQrcode, setQrCode] = useState(false); - const claimOptions = ["Name", "Age", "Date of Birth"]; - + const claimOptions = verifiableClaims; + const qrSize = window.innerWidth <= 1024 ? 250 : 320; const handleSelectChange = (event: React.ChangeEvent) => { const selectedClaim = event.target.value; setClaims(selectedClaim); }; + const isLoading = useVerifyFlowSelector((state) => state.isLoading); + const RequestUri = useVerifyFlowSelector((state) => state.requestUri); + + const HandelBack = () => { + dispatch(getRequestUri()); + setQrCode(false); + setClaims(""); + }; + + useEffect(() => { + dispatch(getRequestUri()); + }, [dispatch]); return ( -
- -
-
-
+ {isLoading ? ( +
+ +
+ ) : ( + <> + +
+
+
+ {!isQrcode ? ( + <> +
+
+ + setQrCode(true)} + disable={!claim} + /> +
+ + ) : ( + <> + {RequestUri && ( + + )} + + )} +
+
+ {isQrcode && ( +
+ + Back + +
)}
-
-
+ + )}
); }; diff --git a/ui/src/components/Home/VerificationSection/commons/StyledButton.tsx b/ui/src/components/Home/VerificationSection/commons/StyledButton.tsx index c563e1ba..b2415643 100644 --- a/ui/src/components/Home/VerificationSection/commons/StyledButton.tsx +++ b/ui/src/components/Home/VerificationSection/commons/StyledButton.tsx @@ -30,9 +30,7 @@ function StyledButton(props: StyledButtonProps) {
) : (