diff --git a/package-lock.json b/package-lock.json index bf31450..9e97669 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "trustvc-website", - "version": "0.0.0", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "trustvc-website", - "version": "0.0.0", + "version": "1.0.0", "dependencies": { "@sanity/client": "^7.20.0", "@sanity/image-url": "^2.1.1", "@trustvc/decentralized-renderer-react-components": "^1.0.3", - "@trustvc/trustvc": "^2.8.0", + "@trustvc/trustvc": "^2.12.4", "@types/lodash": "^4.17.24", "clsx": "^2.1.1", "date-fns": "^4.1.0", @@ -5474,9 +5474,9 @@ } }, "node_modules/@tradetrust-tt/dnsprove": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/@tradetrust-tt/dnsprove/-/dnsprove-2.18.0.tgz", - "integrity": "sha512-UgcwV17hZSSBW5oDb+DUtXle5XdBRWXURSASkr207PYjCxZOhZV88KHJi3PB45UgtUCbtvrJK7czSsgDNnpRtg==", + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/@tradetrust-tt/dnsprove/-/dnsprove-2.21.0.tgz", + "integrity": "sha512-acxJGS07WLfLDli1E4uvT5IbPcmh9vzVelgEdhxzi2KE50r3k/vvkwUQl1ctgkw152cIxnqR20cch8x3HLLvcw==", "license": "Apache-2.0", "dependencies": { "axios": "1.7.2", @@ -5487,15 +5487,6 @@ "node": ">=18.x" } }, - "node_modules/@tradetrust-tt/document-store": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@tradetrust-tt/document-store/-/document-store-4.1.1.tgz", - "integrity": "sha512-+gIR+icfbJOHVNXTc6D1Fo4jdwGRboZqUek/YN+ThXIaLaUP1dvD85tnEz63Nu4LfiDcjYld0aVXOfKsnCJ+yw==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.x" - } - }, "node_modules/@tradetrust-tt/ethers-aws-kms-signer": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@tradetrust-tt/ethers-aws-kms-signer/-/ethers-aws-kms-signer-2.1.4.tgz", @@ -5752,9 +5743,9 @@ } }, "node_modules/@tradetrust-tt/tradetrust": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/@tradetrust-tt/tradetrust/-/tradetrust-6.10.2.tgz", - "integrity": "sha512-4zj4zlsrrQiUJQxvl4N8Pa4cLHtFtFIs0lMg6daP/gRJXIn1QWD0Kl4mQ5FsjuopeM7JOBX/xok22SmElEtT5w==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/@tradetrust-tt/tradetrust/-/tradetrust-6.10.3.tgz", + "integrity": "sha512-2A/o6GguA31V7GnOfvhG1zANuxKdlBS5+k6jvAMeh/VotZEDvoOOA+mTArt5Fv+BKHhpgh7J8dS0DUohfVAiqg==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -5846,6 +5837,7 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -5856,9 +5848,9 @@ } }, "node_modules/@tradetrust-tt/tradetrust/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -5952,15 +5944,15 @@ } }, "node_modules/@tradetrust-tt/tt-verify": { - "version": "9.6.2", - "resolved": "https://registry.npmjs.org/@tradetrust-tt/tt-verify/-/tt-verify-9.6.2.tgz", - "integrity": "sha512-G6XB/fhzIDAc+p07/cDCVCNYgKxx9x5e2HwOORPS8kMkimoB4FXNoWlV8GMXcbzjIjU4frI2KEL54y8TA8+Wpw==", + "version": "9.7.2", + "resolved": "https://registry.npmjs.org/@tradetrust-tt/tt-verify/-/tt-verify-9.7.2.tgz", + "integrity": "sha512-LZvjF/1Lj0a0TwLiyRAhygVxe7jnwlmcDiaFu/rpiHCvwySUh5iehJeha0erpU7xeSyMZPRqeWOKQE3XXbtLRA==", "license": "Apache-2.0", "dependencies": { - "@tradetrust-tt/dnsprove": "^2.18.0", - "@tradetrust-tt/document-store": "^4.1.1", + "@tradetrust-tt/dnsprove": "^2.20.0", "@tradetrust-tt/token-registry": "^5.5.0", - "@tradetrust-tt/tradetrust": "^6.10.1", + "@tradetrust-tt/tradetrust": "^6.10.3", + "@trustvc/document-store": "^1.0.3", "axios": "^1.7.2", "debug": "^4.3.1", "did-resolver": "^3.1.0", @@ -5968,13 +5960,32 @@ "ethr-did-resolver": "^4.3.3", "node-cache": "^5.1.2", "runtypes": "^6.3.0", - "web-did-resolver": "^2.0.4" + "web-did-resolver": "2.0.4" }, "engines": { "node": ">=18.x" }, "peerDependencies": { - "ethers": "^5.7.2" + "ethers": "^5.8.0" + } + }, + "node_modules/@tradetrust-tt/tt-verify/node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/@tradetrust-tt/tt-verify/node_modules/web-did-resolver": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/web-did-resolver/-/web-did-resolver-2.0.4.tgz", + "integrity": "sha512-PORpoA4P0I3m0cLJX2IIDZ0gMKgC1PjS8DuDeg9/JCdIlFiXrZCyTG1hxvw4a4vhDKr0sZKSZL1pQDXTgqLm8w==", + "license": "Apache-2.0", + "dependencies": { + "cross-fetch": "^3.1.2", + "did-resolver": "^3.1.0" } }, "node_modules/@trustvc/decentralized-renderer-react-components": { @@ -6015,17 +6026,17 @@ "license": "Apache-2.0" }, "node_modules/@trustvc/trustvc": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@trustvc/trustvc/-/trustvc-2.8.0.tgz", - "integrity": "sha512-9ALOVQkkNFc7Ngx/Lm/FMP6kqWpWI6wTSSNeDrb81vaRl51uQ8RcUW4ErFHNrfGJkiR0WrjxnGEHNRFSnWlYtw==", + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/@trustvc/trustvc/-/trustvc-2.12.4.tgz", + "integrity": "sha512-9Ff/BuXmT5guZBjBLtEXNynCHnxLeH7awsS8/LMoZSPXcFczk8vAAFtx+4iTEBv2mRXQ3hZpe+T4zoueSe/gxQ==", "license": "Apache-2.0", "dependencies": { "@tradetrust-tt/dnsprove": "^2.18.0", "@tradetrust-tt/ethers-aws-kms-signer": "^2.1.4", "@tradetrust-tt/token-registry-v4": "npm:@tradetrust-tt/token-registry@^4.16.0", "@tradetrust-tt/token-registry-v5": "npm:@tradetrust-tt/token-registry@^5.5.0", - "@tradetrust-tt/tradetrust": "^6.10.2", - "@tradetrust-tt/tt-verify": "^9.6.0", + "@tradetrust-tt/tradetrust": "^6.10.3", + "@tradetrust-tt/tt-verify": "^9.7.2", "@trustvc/document-store": "^1.0.3", "@trustvc/w3c": "^2.0.0", "@trustvc/w3c-context": "^2.0.0", @@ -6036,6 +6047,7 @@ "ethersV6": "npm:ethers@^6.14.4", "js-sha3": "^0.9.3", "node-fetch": "^2.7.0", + "node-forge": "^1.3.3", "ts-chacha20": "^1.2.0" }, "engines": { @@ -6061,6 +6073,15 @@ "linux" ] }, + "node_modules/@trustvc/trustvc/node_modules/node-forge": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, "node_modules/@trustvc/w3c": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@trustvc/w3c/-/w3c-2.0.2.tgz", @@ -7163,9 +7184,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -10294,9 +10315,9 @@ "dev": true }, "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "funding": [ { "type": "github", @@ -17836,6 +17857,7 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -17882,9 +17904,9 @@ } }, "node_modules/validator": { - "version": "13.15.26", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz", - "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==", + "version": "13.15.35", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.35.tgz", + "integrity": "sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==", "license": "MIT", "engines": { "node": ">= 0.10" diff --git a/package.json b/package.json index 3924ab2..6cc9c2e 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "@sanity/client": "^7.20.0", "@sanity/image-url": "^2.1.1", "@trustvc/decentralized-renderer-react-components": "^1.0.3", - "@trustvc/trustvc": "^2.8.0", + "@trustvc/trustvc": "^2.12.4", "@types/lodash": "^4.17.24", "clsx": "^2.1.1", "date-fns": "^4.1.0", diff --git a/public/images/about/center-image.svg b/public/images/about/center-image.svg new file mode 100644 index 0000000..58edcfb --- /dev/null +++ b/public/images/about/center-image.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/about/ecosystem.svg b/public/images/about/ecosystem.svg new file mode 100644 index 0000000..6a597ef --- /dev/null +++ b/public/images/about/ecosystem.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/about/frame-bottom.svg b/public/images/about/frame-bottom.svg new file mode 100644 index 0000000..00d4655 --- /dev/null +++ b/public/images/about/frame-bottom.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/about/frame-top.svg b/public/images/about/frame-top.svg new file mode 100644 index 0000000..4b5dcfe --- /dev/null +++ b/public/images/about/frame-top.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/about/global.svg b/public/images/about/global.svg new file mode 100644 index 0000000..1979173 --- /dev/null +++ b/public/images/about/global.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/about/privacy.svg b/public/images/about/privacy.svg new file mode 100644 index 0000000..abf2e42 --- /dev/null +++ b/public/images/about/privacy.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/about/single-source.svg b/public/images/about/single-source.svg new file mode 100644 index 0000000..ffa86b4 --- /dev/null +++ b/public/images/about/single-source.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/about/tamper.svg b/public/images/about/tamper.svg new file mode 100644 index 0000000..2e027cb --- /dev/null +++ b/public/images/about/tamper.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/about/unified-foundation.svg b/public/images/about/unified-foundation.svg new file mode 100644 index 0000000..372d2ac --- /dev/null +++ b/public/images/about/unified-foundation.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/partners/1X/Banner/AEOTRADE.png b/public/images/partners/1X/Banner/AEOTRADE.png new file mode 100644 index 0000000..2997b1e Binary files /dev/null and b/public/images/partners/1X/Banner/AEOTRADE.png differ diff --git a/public/images/partners/1X/Banner/ASTROn.png b/public/images/partners/1X/Banner/ASTROn.png new file mode 100644 index 0000000..059457c Binary files /dev/null and b/public/images/partners/1X/Banner/ASTROn.png differ diff --git a/public/images/partners/1X/Banner/Angsana Technology.png b/public/images/partners/1X/Banner/Angsana Technology.png new file mode 100644 index 0000000..0394d78 Binary files /dev/null and b/public/images/partners/1X/Banner/Angsana Technology.png differ diff --git a/public/images/partners/1X/Banner/Automaxis.png b/public/images/partners/1X/Banner/Automaxis.png new file mode 100644 index 0000000..41e2daf Binary files /dev/null and b/public/images/partners/1X/Banner/Automaxis.png differ diff --git a/public/images/partners/1X/Banner/Banco.png b/public/images/partners/1X/Banner/Banco.png new file mode 100644 index 0000000..05a2d94 Binary files /dev/null and b/public/images/partners/1X/Banner/Banco.png differ diff --git a/public/images/partners/1X/Banner/Bank of China.png b/public/images/partners/1X/Banner/Bank of China.png new file mode 100644 index 0000000..f173789 Binary files /dev/null and b/public/images/partners/1X/Banner/Bank of China.png differ diff --git a/public/images/partners/1X/Banner/BlockPeer.png b/public/images/partners/1X/Banner/BlockPeer.png new file mode 100644 index 0000000..52e60ca Binary files /dev/null and b/public/images/partners/1X/Banner/BlockPeer.png differ diff --git a/public/images/partners/1X/Banner/BunkerChain.png b/public/images/partners/1X/Banner/BunkerChain.png new file mode 100644 index 0000000..e7df95a Binary files /dev/null and b/public/images/partners/1X/Banner/BunkerChain.png differ diff --git a/public/images/partners/1X/Banner/CALISTA.png b/public/images/partners/1X/Banner/CALISTA.png new file mode 100644 index 0000000..ab570fc Binary files /dev/null and b/public/images/partners/1X/Banner/CALISTA.png differ diff --git a/public/images/partners/1X/Banner/COFCO.png b/public/images/partners/1X/Banner/COFCO.png new file mode 100644 index 0000000..124ed0f Binary files /dev/null and b/public/images/partners/1X/Banner/COFCO.png differ diff --git a/public/images/partners/1X/Banner/CargoX.png b/public/images/partners/1X/Banner/CargoX.png new file mode 100644 index 0000000..636b419 Binary files /dev/null and b/public/images/partners/1X/Banner/CargoX.png differ diff --git a/public/images/partners/1X/Banner/ChainDoX.png b/public/images/partners/1X/Banner/ChainDoX.png new file mode 100644 index 0000000..3155e58 Binary files /dev/null and b/public/images/partners/1X/Banner/ChainDoX.png differ diff --git a/public/images/partners/1X/Banner/Credore.png b/public/images/partners/1X/Banner/Credore.png new file mode 100644 index 0000000..1fabf91 Binary files /dev/null and b/public/images/partners/1X/Banner/Credore.png differ diff --git a/public/images/partners/1X/Banner/DBS Group.png b/public/images/partners/1X/Banner/DBS Group.png new file mode 100644 index 0000000..27c5174 Binary files /dev/null and b/public/images/partners/1X/Banner/DBS Group.png differ diff --git a/public/images/partners/1X/Banner/DIMUTO.png b/public/images/partners/1X/Banner/DIMUTO.png new file mode 100644 index 0000000..b3366b7 Binary files /dev/null and b/public/images/partners/1X/Banner/DIMUTO.png differ diff --git a/public/images/partners/1X/Banner/DLTLedgers.png b/public/images/partners/1X/Banner/DLTLedgers.png new file mode 100644 index 0000000..5697fdd Binary files /dev/null and b/public/images/partners/1X/Banner/DLTLedgers.png differ diff --git a/public/images/partners/1X/Banner/DOCKLAB.png b/public/images/partners/1X/Banner/DOCKLAB.png new file mode 100644 index 0000000..19ce1b1 Binary files /dev/null and b/public/images/partners/1X/Banner/DOCKLAB.png differ diff --git a/public/images/partners/1X/Banner/Docsonblocks.png b/public/images/partners/1X/Banner/Docsonblocks.png new file mode 100644 index 0000000..ac8e730 Binary files /dev/null and b/public/images/partners/1X/Banner/Docsonblocks.png differ diff --git a/public/images/partners/1X/Banner/DocuShield.png b/public/images/partners/1X/Banner/DocuShield.png new file mode 100644 index 0000000..40cbcd9 Binary files /dev/null and b/public/images/partners/1X/Banner/DocuShield.png differ diff --git a/public/images/partners/1X/Banner/DocuTrade.png b/public/images/partners/1X/Banner/DocuTrade.png new file mode 100644 index 0000000..dd733b2 Binary files /dev/null and b/public/images/partners/1X/Banner/DocuTrade.png differ diff --git a/public/images/partners/1X/Banner/FUIX LABS.png b/public/images/partners/1X/Banner/FUIX LABS.png new file mode 100644 index 0000000..c09b50c Binary files /dev/null and b/public/images/partners/1X/Banner/FUIX LABS.png differ diff --git a/public/images/partners/1X/Banner/FilPass.png b/public/images/partners/1X/Banner/FilPass.png new file mode 100644 index 0000000..783bcc8 Binary files /dev/null and b/public/images/partners/1X/Banner/FilPass.png differ diff --git a/public/images/partners/1X/Banner/GUUD.png b/public/images/partners/1X/Banner/GUUD.png new file mode 100644 index 0000000..802636c Binary files /dev/null and b/public/images/partners/1X/Banner/GUUD.png differ diff --git a/public/images/partners/1X/Banner/ICICI Bank.png b/public/images/partners/1X/Banner/ICICI Bank.png new file mode 100644 index 0000000..2b9e1b4 Binary files /dev/null and b/public/images/partners/1X/Banner/ICICI Bank.png differ diff --git a/public/images/partners/1X/Banner/Institute of Technical Education.png b/public/images/partners/1X/Banner/Institute of Technical Education.png new file mode 100644 index 0000000..9b9f838 Binary files /dev/null and b/public/images/partners/1X/Banner/Institute of Technical Education.png differ diff --git a/public/images/partners/1X/Banner/JSLA.png b/public/images/partners/1X/Banner/JSLA.png new file mode 100644 index 0000000..f528619 Binary files /dev/null and b/public/images/partners/1X/Banner/JSLA.png differ diff --git a/public/images/partners/1X/Banner/JUPYTON.png b/public/images/partners/1X/Banner/JUPYTON.png new file mode 100644 index 0000000..2fc965d Binary files /dev/null and b/public/images/partners/1X/Banner/JUPYTON.png differ diff --git a/public/images/partners/1X/Banner/Jed.png b/public/images/partners/1X/Banner/Jed.png new file mode 100644 index 0000000..cd8354b Binary files /dev/null and b/public/images/partners/1X/Banner/Jed.png differ diff --git a/public/images/partners/1X/Banner/LASALLE College of the Arts.png b/public/images/partners/1X/Banner/LASALLE College of the Arts.png new file mode 100644 index 0000000..be4b7c9 Binary files /dev/null and b/public/images/partners/1X/Banner/LASALLE College of the Arts.png differ diff --git a/public/images/partners/1X/Banner/Linklogis.png b/public/images/partners/1X/Banner/Linklogis.png new file mode 100644 index 0000000..e13a48e Binary files /dev/null and b/public/images/partners/1X/Banner/Linklogis.png differ diff --git a/public/images/partners/1X/Banner/MAPTRASCO.png b/public/images/partners/1X/Banner/MAPTRASCO.png new file mode 100644 index 0000000..55ec2fe Binary files /dev/null and b/public/images/partners/1X/Banner/MAPTRASCO.png differ diff --git a/public/images/partners/1X/Banner/Morpheus.Network.png b/public/images/partners/1X/Banner/Morpheus.Network.png new file mode 100644 index 0000000..4d91bee Binary files /dev/null and b/public/images/partners/1X/Banner/Morpheus.Network.png differ diff --git a/public/images/partners/1X/Banner/NAFA.png b/public/images/partners/1X/Banner/NAFA.png new file mode 100644 index 0000000..c7870d8 Binary files /dev/null and b/public/images/partners/1X/Banner/NAFA.png differ diff --git a/public/images/partners/1X/Banner/NIEC.png b/public/images/partners/1X/Banner/NIEC.png new file mode 100644 index 0000000..f087157 Binary files /dev/null and b/public/images/partners/1X/Banner/NIEC.png differ diff --git a/public/images/partners/1X/Banner/Nanyang Polytechnic.png b/public/images/partners/1X/Banner/Nanyang Polytechnic.png new file mode 100644 index 0000000..15ff1de Binary files /dev/null and b/public/images/partners/1X/Banner/Nanyang Polytechnic.png differ diff --git a/public/images/partners/1X/Banner/National University of Singapore.png b/public/images/partners/1X/Banner/National University of Singapore.png new file mode 100644 index 0000000..82aa455 Binary files /dev/null and b/public/images/partners/1X/Banner/National University of Singapore.png differ diff --git a/public/images/partners/1X/Banner/Ngee Ann Polytechnic.png b/public/images/partners/1X/Banner/Ngee Ann Polytechnic.png new file mode 100644 index 0000000..379020f Binary files /dev/null and b/public/images/partners/1X/Banner/Ngee Ann Polytechnic.png differ diff --git a/public/images/partners/1X/Banner/Pacific International Lines.png b/public/images/partners/1X/Banner/Pacific International Lines.png new file mode 100644 index 0000000..13a5297 Binary files /dev/null and b/public/images/partners/1X/Banner/Pacific International Lines.png differ diff --git a/public/images/partners/1X/Banner/Republic Polytechnic.png b/public/images/partners/1X/Banner/Republic Polytechnic.png new file mode 100644 index 0000000..6811f70 Binary files /dev/null and b/public/images/partners/1X/Banner/Republic Polytechnic.png differ diff --git a/public/images/partners/1X/Banner/SECRO.png b/public/images/partners/1X/Banner/SECRO.png new file mode 100644 index 0000000..056780e Binary files /dev/null and b/public/images/partners/1X/Banner/SECRO.png differ diff --git a/public/images/partners/1X/Banner/SGTraDex.png b/public/images/partners/1X/Banner/SGTraDex.png new file mode 100644 index 0000000..ec8d718 Binary files /dev/null and b/public/images/partners/1X/Banner/SGTraDex.png differ diff --git a/public/images/partners/1X/Banner/SMU.png b/public/images/partners/1X/Banner/SMU.png new file mode 100644 index 0000000..c015cfb Binary files /dev/null and b/public/images/partners/1X/Banner/SMU.png differ diff --git a/public/images/partners/1X/Banner/STABILITY.png b/public/images/partners/1X/Banner/STABILITY.png new file mode 100644 index 0000000..e876118 Binary files /dev/null and b/public/images/partners/1X/Banner/STABILITY.png differ diff --git a/public/images/partners/1X/Banner/Singapore Examinations and Assessment Board.png b/public/images/partners/1X/Banner/Singapore Examinations and Assessment Board.png new file mode 100644 index 0000000..347e38e Binary files /dev/null and b/public/images/partners/1X/Banner/Singapore Examinations and Assessment Board.png differ diff --git a/public/images/partners/1X/Banner/Singapore Polytechnic.png b/public/images/partners/1X/Banner/Singapore Polytechnic.png new file mode 100644 index 0000000..0e9bc88 Binary files /dev/null and b/public/images/partners/1X/Banner/Singapore Polytechnic.png differ diff --git a/public/images/partners/1X/Banner/Singapore University of Social Sciences.png b/public/images/partners/1X/Banner/Singapore University of Social Sciences.png new file mode 100644 index 0000000..8ade537 Binary files /dev/null and b/public/images/partners/1X/Banner/Singapore University of Social Sciences.png differ diff --git a/public/images/partners/1X/Banner/SkillsFuture SG.png b/public/images/partners/1X/Banner/SkillsFuture SG.png new file mode 100644 index 0000000..7368308 Binary files /dev/null and b/public/images/partners/1X/Banner/SkillsFuture SG.png differ diff --git a/public/images/partners/1X/Banner/TASConnect.png b/public/images/partners/1X/Banner/TASConnect.png new file mode 100644 index 0000000..8d31bf0 Binary files /dev/null and b/public/images/partners/1X/Banner/TASConnect.png differ diff --git "a/public/images/partners/1X/Banner/TRAM\303\211S.png" "b/public/images/partners/1X/Banner/TRAM\303\211S.png" new file mode 100644 index 0000000..43bbe8e Binary files /dev/null and "b/public/images/partners/1X/Banner/TRAM\303\211S.png" differ diff --git a/public/images/partners/1X/Banner/Temasek Polytechnic.png b/public/images/partners/1X/Banner/Temasek Polytechnic.png new file mode 100644 index 0000000..66fb0bc Binary files /dev/null and b/public/images/partners/1X/Banner/Temasek Polytechnic.png differ diff --git a/public/images/partners/1X/Banner/TradeGo.png b/public/images/partners/1X/Banner/TradeGo.png new file mode 100644 index 0000000..444aab4 Binary files /dev/null and b/public/images/partners/1X/Banner/TradeGo.png differ diff --git a/public/images/partners/1X/Banner/UOB.png b/public/images/partners/1X/Banner/UOB.png new file mode 100644 index 0000000..beb071c Binary files /dev/null and b/public/images/partners/1X/Banner/UOB.png differ diff --git a/public/images/partners/1X/Banner/VAYANA.png b/public/images/partners/1X/Banner/VAYANA.png new file mode 100644 index 0000000..f2e4a81 Binary files /dev/null and b/public/images/partners/1X/Banner/VAYANA.png differ diff --git a/public/images/partners/1X/Banner/XDC Network.png b/public/images/partners/1X/Banner/XDC Network.png new file mode 100644 index 0000000..1701695 Binary files /dev/null and b/public/images/partners/1X/Banner/XDC Network.png differ diff --git a/public/images/partners/1X/Banner/YIT HONG PTE LTD.png b/public/images/partners/1X/Banner/YIT HONG PTE LTD.png new file mode 100644 index 0000000..a2e06ef Binary files /dev/null and b/public/images/partners/1X/Banner/YIT HONG PTE LTD.png differ diff --git a/public/images/partners/1X/Banner/ZenithBlox.png b/public/images/partners/1X/Banner/ZenithBlox.png new file mode 100644 index 0000000..4dd54b3 Binary files /dev/null and b/public/images/partners/1X/Banner/ZenithBlox.png differ diff --git a/public/images/partners/1X/Banner/eTEU.png b/public/images/partners/1X/Banner/eTEU.png new file mode 100644 index 0000000..db34108 Binary files /dev/null and b/public/images/partners/1X/Banner/eTEU.png differ diff --git a/public/images/partners/1X/Banner/veriTAG.png b/public/images/partners/1X/Banner/veriTAG.png new file mode 100644 index 0000000..9c301b1 Binary files /dev/null and b/public/images/partners/1X/Banner/veriTAG.png differ diff --git a/public/images/partners/1X/Card/Infrastructure/TradeTrust/ASTROn.png b/public/images/partners/1X/Card/Infrastructure/TradeTrust/ASTROn.png new file mode 100644 index 0000000..52c77e8 Binary files /dev/null and b/public/images/partners/1X/Card/Infrastructure/TradeTrust/ASTROn.png differ diff --git a/public/images/partners/1X/Card/Infrastructure/TradeTrust/DLTLedgers.png b/public/images/partners/1X/Card/Infrastructure/TradeTrust/DLTLedgers.png new file mode 100644 index 0000000..d56a4d1 Binary files /dev/null and b/public/images/partners/1X/Card/Infrastructure/TradeTrust/DLTLedgers.png differ diff --git a/public/images/partners/1X/Card/Infrastructure/TradeTrust/STABILITY.png b/public/images/partners/1X/Card/Infrastructure/TradeTrust/STABILITY.png new file mode 100644 index 0000000..b7c490c Binary files /dev/null and b/public/images/partners/1X/Card/Infrastructure/TradeTrust/STABILITY.png differ diff --git a/public/images/partners/1X/Card/Infrastructure/TradeTrust/XDC Network.png b/public/images/partners/1X/Card/Infrastructure/TradeTrust/XDC Network.png new file mode 100644 index 0000000..f3e24d1 Binary files /dev/null and b/public/images/partners/1X/Card/Infrastructure/TradeTrust/XDC Network.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Institute of Technical Education.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Institute of Technical Education.png new file mode 100644 index 0000000..1d3cbb6 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Institute of Technical Education.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/LASALLE College of the Arts.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/LASALLE College of the Arts.png new file mode 100644 index 0000000..cb61591 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/LASALLE College of the Arts.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/NAFA.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/NAFA.png new file mode 100644 index 0000000..d2adf57 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/NAFA.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/NIEC.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/NIEC.png new file mode 100644 index 0000000..4d5a8d2 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/NIEC.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Nanyang Polytechnic.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Nanyang Polytechnic.png new file mode 100644 index 0000000..4aa27bc Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Nanyang Polytechnic.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/National University of Singapore.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/National University of Singapore.png new file mode 100644 index 0000000..a582453 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/National University of Singapore.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Ngee Ann Polytechnic.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Ngee Ann Polytechnic.png new file mode 100644 index 0000000..eac10b2 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Ngee Ann Polytechnic.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Republic Polytechnic.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Republic Polytechnic.png new file mode 100644 index 0000000..d9486c2 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Republic Polytechnic.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/SMU.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/SMU.png new file mode 100644 index 0000000..7ec650c Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/SMU.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Singapore Examinations and Assessment Board.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Singapore Examinations and Assessment Board.png new file mode 100644 index 0000000..7497d3b Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Singapore Examinations and Assessment Board.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Singapore Polytechnic.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Singapore Polytechnic.png new file mode 100644 index 0000000..523571b Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Singapore Polytechnic.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Singapore University of Social Sciences.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Singapore University of Social Sciences.png new file mode 100644 index 0000000..8cedd2c Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Singapore University of Social Sciences.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/SkillsFuture SG.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/SkillsFuture SG.png new file mode 100644 index 0000000..7dc114b Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/SkillsFuture SG.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Temasek Polytechnic.png b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Temasek Polytechnic.png new file mode 100644 index 0000000..812f1a3 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/OpenCert/Temasek Polytechnic.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/COFCO.png b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/COFCO.png new file mode 100644 index 0000000..10b8e47 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/COFCO.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/ICICI Bank.png b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/ICICI Bank.png new file mode 100644 index 0000000..aeca911 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/ICICI Bank.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/JSLA.png b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/JSLA.png new file mode 100644 index 0000000..79ced58 Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/JSLA.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/MAPTRASCO.png b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/MAPTRASCO.png new file mode 100644 index 0000000..a17b52c Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/MAPTRASCO.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/Pacific International Lines.png b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/Pacific International Lines.png new file mode 100644 index 0000000..ddde4df Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/Pacific International Lines.png differ diff --git a/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/YIT HONG PTE LTD.png b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/YIT HONG PTE LTD.png new file mode 100644 index 0000000..1656a2c Binary files /dev/null and b/public/images/partners/1X/Card/Issuance Attestation/TradeTrust/YIT HONG PTE LTD.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/AEOTRADE.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/AEOTRADE.png new file mode 100644 index 0000000..5c3ddd8 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/AEOTRADE.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/Angsana Technology.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Angsana Technology.png new file mode 100644 index 0000000..2e282c4 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Angsana Technology.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/Automaxis.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Automaxis.png new file mode 100644 index 0000000..2a39daf Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Automaxis.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/Banco.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Banco.png new file mode 100644 index 0000000..b5b9dcf Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Banco.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/BlockPeer.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/BlockPeer.png new file mode 100644 index 0000000..15018d5 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/BlockPeer.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/BunkerChain.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/BunkerChain.png new file mode 100644 index 0000000..68d0207 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/BunkerChain.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/CALISTA.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/CALISTA.png new file mode 100644 index 0000000..353c320 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/CALISTA.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/CargoX.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/CargoX.png new file mode 100644 index 0000000..3f0691c Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/CargoX.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/ChainDoX.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/ChainDoX.png new file mode 100644 index 0000000..b45caa1 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/ChainDoX.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/Credore.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Credore.png new file mode 100644 index 0000000..7623088 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Credore.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/DIMUTO.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/DIMUTO.png new file mode 100644 index 0000000..efa3e46 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/DIMUTO.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/DOCKLAB.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/DOCKLAB.png new file mode 100644 index 0000000..d94bff7 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/DOCKLAB.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/Docsonblocks.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Docsonblocks.png new file mode 100644 index 0000000..acdb423 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Docsonblocks.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/DocuShield.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/DocuShield.png new file mode 100644 index 0000000..8189155 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/DocuShield.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/DocuTrade.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/DocuTrade.png new file mode 100644 index 0000000..040a9f7 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/DocuTrade.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/FUIX LABS.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/FUIX LABS.png new file mode 100644 index 0000000..9358027 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/FUIX LABS.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/FilPass.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/FilPass.png new file mode 100644 index 0000000..5d8533e Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/FilPass.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/GUUD.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/GUUD.png new file mode 100644 index 0000000..438841d Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/GUUD.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/JUPYTON.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/JUPYTON.png new file mode 100644 index 0000000..b5ee969 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/JUPYTON.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/Jed.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Jed.png new file mode 100644 index 0000000..6f70bd0 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Jed.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/Linklogis.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Linklogis.png new file mode 100644 index 0000000..2b97501 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Linklogis.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/Morpheus.Network.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Morpheus.Network.png new file mode 100644 index 0000000..c095462 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/Morpheus.Network.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/SECRO.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/SECRO.png new file mode 100644 index 0000000..4c1caec Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/SECRO.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/SGTraDex.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/SGTraDex.png new file mode 100644 index 0000000..9d67dc1 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/SGTraDex.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/TASConnect.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/TASConnect.png new file mode 100644 index 0000000..88be89c Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/TASConnect.png differ diff --git "a/public/images/partners/1X/Card/Solution Providers/TradeTrust/TRAM\303\211S.png" "b/public/images/partners/1X/Card/Solution Providers/TradeTrust/TRAM\303\211S.png" new file mode 100644 index 0000000..c99bf01 Binary files /dev/null and "b/public/images/partners/1X/Card/Solution Providers/TradeTrust/TRAM\303\211S.png" differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/TradeGo.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/TradeGo.png new file mode 100644 index 0000000..9c9aebc Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/TradeGo.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/VAYANA.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/VAYANA.png new file mode 100644 index 0000000..5259b90 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/VAYANA.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/ZenithBlox.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/ZenithBlox.png new file mode 100644 index 0000000..37d0d5c Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/ZenithBlox.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/eTEU.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/eTEU.png new file mode 100644 index 0000000..dfd48f4 Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/eTEU.png differ diff --git a/public/images/partners/1X/Card/Solution Providers/TradeTrust/veriTAG.png b/public/images/partners/1X/Card/Solution Providers/TradeTrust/veriTAG.png new file mode 100644 index 0000000..a369b1d Binary files /dev/null and b/public/images/partners/1X/Card/Solution Providers/TradeTrust/veriTAG.png differ diff --git a/public/images/partners/1X/Card/Verification Validation/TradeTrust/Bank of China.png b/public/images/partners/1X/Card/Verification Validation/TradeTrust/Bank of China.png new file mode 100644 index 0000000..510f811 Binary files /dev/null and b/public/images/partners/1X/Card/Verification Validation/TradeTrust/Bank of China.png differ diff --git a/public/images/partners/1X/Card/Verification Validation/TradeTrust/DBS Group.png b/public/images/partners/1X/Card/Verification Validation/TradeTrust/DBS Group.png new file mode 100644 index 0000000..7875543 Binary files /dev/null and b/public/images/partners/1X/Card/Verification Validation/TradeTrust/DBS Group.png differ diff --git a/public/images/partners/1X/Card/Verification Validation/TradeTrust/UOB.png b/public/images/partners/1X/Card/Verification Validation/TradeTrust/UOB.png new file mode 100644 index 0000000..1987d1a Binary files /dev/null and b/public/images/partners/1X/Card/Verification Validation/TradeTrust/UOB.png differ diff --git a/public/images/partners/2X/Banner/AEOTRADE.png b/public/images/partners/2X/Banner/AEOTRADE.png new file mode 100644 index 0000000..cd289cf Binary files /dev/null and b/public/images/partners/2X/Banner/AEOTRADE.png differ diff --git a/public/images/partners/2X/Banner/ASTROn.png b/public/images/partners/2X/Banner/ASTROn.png new file mode 100644 index 0000000..120e7b6 Binary files /dev/null and b/public/images/partners/2X/Banner/ASTROn.png differ diff --git a/public/images/partners/2X/Banner/Angsana Technology.png b/public/images/partners/2X/Banner/Angsana Technology.png new file mode 100644 index 0000000..ba71b97 Binary files /dev/null and b/public/images/partners/2X/Banner/Angsana Technology.png differ diff --git a/public/images/partners/2X/Banner/Automaxis.png b/public/images/partners/2X/Banner/Automaxis.png new file mode 100644 index 0000000..147e26c Binary files /dev/null and b/public/images/partners/2X/Banner/Automaxis.png differ diff --git a/public/images/partners/2X/Banner/Banco.png b/public/images/partners/2X/Banner/Banco.png new file mode 100644 index 0000000..2996b95 Binary files /dev/null and b/public/images/partners/2X/Banner/Banco.png differ diff --git a/public/images/partners/2X/Banner/Bank of China.png b/public/images/partners/2X/Banner/Bank of China.png new file mode 100644 index 0000000..cc54d9d Binary files /dev/null and b/public/images/partners/2X/Banner/Bank of China.png differ diff --git a/public/images/partners/2X/Banner/BlockPeer.png b/public/images/partners/2X/Banner/BlockPeer.png new file mode 100644 index 0000000..c24ffd8 Binary files /dev/null and b/public/images/partners/2X/Banner/BlockPeer.png differ diff --git a/public/images/partners/2X/Banner/BunkerChain.png b/public/images/partners/2X/Banner/BunkerChain.png new file mode 100644 index 0000000..39ee9a0 Binary files /dev/null and b/public/images/partners/2X/Banner/BunkerChain.png differ diff --git a/public/images/partners/2X/Banner/CALISTA.png b/public/images/partners/2X/Banner/CALISTA.png new file mode 100644 index 0000000..8ef36c5 Binary files /dev/null and b/public/images/partners/2X/Banner/CALISTA.png differ diff --git a/public/images/partners/2X/Banner/COFCO.png b/public/images/partners/2X/Banner/COFCO.png new file mode 100644 index 0000000..f52a42c Binary files /dev/null and b/public/images/partners/2X/Banner/COFCO.png differ diff --git a/public/images/partners/2X/Banner/CargoX.png b/public/images/partners/2X/Banner/CargoX.png new file mode 100644 index 0000000..aa191b0 Binary files /dev/null and b/public/images/partners/2X/Banner/CargoX.png differ diff --git a/public/images/partners/2X/Banner/ChainDoX.png b/public/images/partners/2X/Banner/ChainDoX.png new file mode 100644 index 0000000..2051533 Binary files /dev/null and b/public/images/partners/2X/Banner/ChainDoX.png differ diff --git a/public/images/partners/2X/Banner/Credore.png b/public/images/partners/2X/Banner/Credore.png new file mode 100644 index 0000000..eb250b3 Binary files /dev/null and b/public/images/partners/2X/Banner/Credore.png differ diff --git a/public/images/partners/2X/Banner/DBS Group.png b/public/images/partners/2X/Banner/DBS Group.png new file mode 100644 index 0000000..a8d47d9 Binary files /dev/null and b/public/images/partners/2X/Banner/DBS Group.png differ diff --git a/public/images/partners/2X/Banner/DIMUTO.png b/public/images/partners/2X/Banner/DIMUTO.png new file mode 100644 index 0000000..dc19d77 Binary files /dev/null and b/public/images/partners/2X/Banner/DIMUTO.png differ diff --git a/public/images/partners/2X/Banner/DLTLedgers.png b/public/images/partners/2X/Banner/DLTLedgers.png new file mode 100644 index 0000000..6bf8f91 Binary files /dev/null and b/public/images/partners/2X/Banner/DLTLedgers.png differ diff --git a/public/images/partners/2X/Banner/DOCKLAB.png b/public/images/partners/2X/Banner/DOCKLAB.png new file mode 100644 index 0000000..26bba0e Binary files /dev/null and b/public/images/partners/2X/Banner/DOCKLAB.png differ diff --git a/public/images/partners/2X/Banner/Docsonblocks.png b/public/images/partners/2X/Banner/Docsonblocks.png new file mode 100644 index 0000000..eb63116 Binary files /dev/null and b/public/images/partners/2X/Banner/Docsonblocks.png differ diff --git a/public/images/partners/2X/Banner/DocuShield.png b/public/images/partners/2X/Banner/DocuShield.png new file mode 100644 index 0000000..a2890f1 Binary files /dev/null and b/public/images/partners/2X/Banner/DocuShield.png differ diff --git a/public/images/partners/2X/Banner/DocuTrade.png b/public/images/partners/2X/Banner/DocuTrade.png new file mode 100644 index 0000000..9ac5088 Binary files /dev/null and b/public/images/partners/2X/Banner/DocuTrade.png differ diff --git a/public/images/partners/2X/Banner/FUIX LABS.png b/public/images/partners/2X/Banner/FUIX LABS.png new file mode 100644 index 0000000..37d39bb Binary files /dev/null and b/public/images/partners/2X/Banner/FUIX LABS.png differ diff --git a/public/images/partners/2X/Banner/FilPass.png b/public/images/partners/2X/Banner/FilPass.png new file mode 100644 index 0000000..0faf27a Binary files /dev/null and b/public/images/partners/2X/Banner/FilPass.png differ diff --git a/public/images/partners/2X/Banner/GUUD.png b/public/images/partners/2X/Banner/GUUD.png new file mode 100644 index 0000000..1a5b226 Binary files /dev/null and b/public/images/partners/2X/Banner/GUUD.png differ diff --git a/public/images/partners/2X/Banner/ICICI Bank.png b/public/images/partners/2X/Banner/ICICI Bank.png new file mode 100644 index 0000000..7c94ea8 Binary files /dev/null and b/public/images/partners/2X/Banner/ICICI Bank.png differ diff --git a/public/images/partners/2X/Banner/Institute of Technical Education.png b/public/images/partners/2X/Banner/Institute of Technical Education.png new file mode 100644 index 0000000..6ee4eca Binary files /dev/null and b/public/images/partners/2X/Banner/Institute of Technical Education.png differ diff --git a/public/images/partners/2X/Banner/JSLA.png b/public/images/partners/2X/Banner/JSLA.png new file mode 100644 index 0000000..e030b43 Binary files /dev/null and b/public/images/partners/2X/Banner/JSLA.png differ diff --git a/public/images/partners/2X/Banner/JUPYTON.png b/public/images/partners/2X/Banner/JUPYTON.png new file mode 100644 index 0000000..b1bc58d Binary files /dev/null and b/public/images/partners/2X/Banner/JUPYTON.png differ diff --git a/public/images/partners/2X/Banner/Jed.png b/public/images/partners/2X/Banner/Jed.png new file mode 100644 index 0000000..57157a2 Binary files /dev/null and b/public/images/partners/2X/Banner/Jed.png differ diff --git a/public/images/partners/2X/Banner/LASALLE College of the Arts.png b/public/images/partners/2X/Banner/LASALLE College of the Arts.png new file mode 100644 index 0000000..f8eb287 Binary files /dev/null and b/public/images/partners/2X/Banner/LASALLE College of the Arts.png differ diff --git a/public/images/partners/2X/Banner/Linklogis.png b/public/images/partners/2X/Banner/Linklogis.png new file mode 100644 index 0000000..4cfc5cb Binary files /dev/null and b/public/images/partners/2X/Banner/Linklogis.png differ diff --git a/public/images/partners/2X/Banner/MAPTRASCO.png b/public/images/partners/2X/Banner/MAPTRASCO.png new file mode 100644 index 0000000..85e6d72 Binary files /dev/null and b/public/images/partners/2X/Banner/MAPTRASCO.png differ diff --git a/public/images/partners/2X/Banner/Morpheus.Network.png b/public/images/partners/2X/Banner/Morpheus.Network.png new file mode 100644 index 0000000..e3c58c8 Binary files /dev/null and b/public/images/partners/2X/Banner/Morpheus.Network.png differ diff --git a/public/images/partners/2X/Banner/NAFA.png b/public/images/partners/2X/Banner/NAFA.png new file mode 100644 index 0000000..248bf67 Binary files /dev/null and b/public/images/partners/2X/Banner/NAFA.png differ diff --git a/public/images/partners/2X/Banner/NIEC.png b/public/images/partners/2X/Banner/NIEC.png new file mode 100644 index 0000000..74a4d12 Binary files /dev/null and b/public/images/partners/2X/Banner/NIEC.png differ diff --git a/public/images/partners/2X/Banner/Nanyang Polytechnic.png b/public/images/partners/2X/Banner/Nanyang Polytechnic.png new file mode 100644 index 0000000..b5771d8 Binary files /dev/null and b/public/images/partners/2X/Banner/Nanyang Polytechnic.png differ diff --git a/public/images/partners/2X/Banner/National University of Singapore.png b/public/images/partners/2X/Banner/National University of Singapore.png new file mode 100644 index 0000000..44d8704 Binary files /dev/null and b/public/images/partners/2X/Banner/National University of Singapore.png differ diff --git a/public/images/partners/2X/Banner/Ngee Ann Polytechnic.png b/public/images/partners/2X/Banner/Ngee Ann Polytechnic.png new file mode 100644 index 0000000..5f2908c Binary files /dev/null and b/public/images/partners/2X/Banner/Ngee Ann Polytechnic.png differ diff --git a/public/images/partners/2X/Banner/Pacific International Lines.png b/public/images/partners/2X/Banner/Pacific International Lines.png new file mode 100644 index 0000000..d26247f Binary files /dev/null and b/public/images/partners/2X/Banner/Pacific International Lines.png differ diff --git a/public/images/partners/2X/Banner/Republic Polytechnic.png b/public/images/partners/2X/Banner/Republic Polytechnic.png new file mode 100644 index 0000000..2612756 Binary files /dev/null and b/public/images/partners/2X/Banner/Republic Polytechnic.png differ diff --git a/public/images/partners/2X/Banner/SECRO.png b/public/images/partners/2X/Banner/SECRO.png new file mode 100644 index 0000000..40e2957 Binary files /dev/null and b/public/images/partners/2X/Banner/SECRO.png differ diff --git a/public/images/partners/2X/Banner/SGTraDex.png b/public/images/partners/2X/Banner/SGTraDex.png new file mode 100644 index 0000000..1134f5a Binary files /dev/null and b/public/images/partners/2X/Banner/SGTraDex.png differ diff --git a/public/images/partners/2X/Banner/SMU.png b/public/images/partners/2X/Banner/SMU.png new file mode 100644 index 0000000..dc79c45 Binary files /dev/null and b/public/images/partners/2X/Banner/SMU.png differ diff --git a/public/images/partners/2X/Banner/STABILITY.png b/public/images/partners/2X/Banner/STABILITY.png new file mode 100644 index 0000000..f33febc Binary files /dev/null and b/public/images/partners/2X/Banner/STABILITY.png differ diff --git a/public/images/partners/2X/Banner/Singapore Examinations and Assessment Board.png b/public/images/partners/2X/Banner/Singapore Examinations and Assessment Board.png new file mode 100644 index 0000000..f4d7c51 Binary files /dev/null and b/public/images/partners/2X/Banner/Singapore Examinations and Assessment Board.png differ diff --git a/public/images/partners/2X/Banner/Singapore Polytechnic.png b/public/images/partners/2X/Banner/Singapore Polytechnic.png new file mode 100644 index 0000000..9def663 Binary files /dev/null and b/public/images/partners/2X/Banner/Singapore Polytechnic.png differ diff --git a/public/images/partners/2X/Banner/Singapore University of Social Sciences.png b/public/images/partners/2X/Banner/Singapore University of Social Sciences.png new file mode 100644 index 0000000..f83324e Binary files /dev/null and b/public/images/partners/2X/Banner/Singapore University of Social Sciences.png differ diff --git a/public/images/partners/2X/Banner/SkillsFuture SG.png b/public/images/partners/2X/Banner/SkillsFuture SG.png new file mode 100644 index 0000000..16a1256 Binary files /dev/null and b/public/images/partners/2X/Banner/SkillsFuture SG.png differ diff --git a/public/images/partners/2X/Banner/TASConnect.png b/public/images/partners/2X/Banner/TASConnect.png new file mode 100644 index 0000000..5fc0532 Binary files /dev/null and b/public/images/partners/2X/Banner/TASConnect.png differ diff --git "a/public/images/partners/2X/Banner/TRAM\303\211S.png" "b/public/images/partners/2X/Banner/TRAM\303\211S.png" new file mode 100644 index 0000000..351feb7 Binary files /dev/null and "b/public/images/partners/2X/Banner/TRAM\303\211S.png" differ diff --git a/public/images/partners/2X/Banner/Temasek Polytechnic.png b/public/images/partners/2X/Banner/Temasek Polytechnic.png new file mode 100644 index 0000000..3774def Binary files /dev/null and b/public/images/partners/2X/Banner/Temasek Polytechnic.png differ diff --git a/public/images/partners/2X/Banner/TradeGo.png b/public/images/partners/2X/Banner/TradeGo.png new file mode 100644 index 0000000..052dcdd Binary files /dev/null and b/public/images/partners/2X/Banner/TradeGo.png differ diff --git a/public/images/partners/2X/Banner/UOB.png b/public/images/partners/2X/Banner/UOB.png new file mode 100644 index 0000000..2d8f234 Binary files /dev/null and b/public/images/partners/2X/Banner/UOB.png differ diff --git a/public/images/partners/2X/Banner/VAYANA.png b/public/images/partners/2X/Banner/VAYANA.png new file mode 100644 index 0000000..3b98b1b Binary files /dev/null and b/public/images/partners/2X/Banner/VAYANA.png differ diff --git a/public/images/partners/2X/Banner/XDC Network.png b/public/images/partners/2X/Banner/XDC Network.png new file mode 100644 index 0000000..53ed604 Binary files /dev/null and b/public/images/partners/2X/Banner/XDC Network.png differ diff --git a/public/images/partners/2X/Banner/YIT HONG PTE LTD.png b/public/images/partners/2X/Banner/YIT HONG PTE LTD.png new file mode 100644 index 0000000..c21fcf3 Binary files /dev/null and b/public/images/partners/2X/Banner/YIT HONG PTE LTD.png differ diff --git a/public/images/partners/2X/Banner/ZenithBlox.png b/public/images/partners/2X/Banner/ZenithBlox.png new file mode 100644 index 0000000..9d770d1 Binary files /dev/null and b/public/images/partners/2X/Banner/ZenithBlox.png differ diff --git a/public/images/partners/2X/Banner/eTEU.png b/public/images/partners/2X/Banner/eTEU.png new file mode 100644 index 0000000..8f2f19f Binary files /dev/null and b/public/images/partners/2X/Banner/eTEU.png differ diff --git a/public/images/partners/2X/Banner/veriTAG.png b/public/images/partners/2X/Banner/veriTAG.png new file mode 100644 index 0000000..99570c8 Binary files /dev/null and b/public/images/partners/2X/Banner/veriTAG.png differ diff --git a/public/images/partners/2X/Card/Infrastructure/TradeTrust/ASTROn.png b/public/images/partners/2X/Card/Infrastructure/TradeTrust/ASTROn.png new file mode 100644 index 0000000..b0d033f Binary files /dev/null and b/public/images/partners/2X/Card/Infrastructure/TradeTrust/ASTROn.png differ diff --git a/public/images/partners/2X/Card/Infrastructure/TradeTrust/DLTLedgers.png b/public/images/partners/2X/Card/Infrastructure/TradeTrust/DLTLedgers.png new file mode 100644 index 0000000..7edd2b1 Binary files /dev/null and b/public/images/partners/2X/Card/Infrastructure/TradeTrust/DLTLedgers.png differ diff --git a/public/images/partners/2X/Card/Infrastructure/TradeTrust/STABILITY.png b/public/images/partners/2X/Card/Infrastructure/TradeTrust/STABILITY.png new file mode 100644 index 0000000..ac97b16 Binary files /dev/null and b/public/images/partners/2X/Card/Infrastructure/TradeTrust/STABILITY.png differ diff --git a/public/images/partners/2X/Card/Infrastructure/TradeTrust/XDC Network.png b/public/images/partners/2X/Card/Infrastructure/TradeTrust/XDC Network.png new file mode 100644 index 0000000..79448bb Binary files /dev/null and b/public/images/partners/2X/Card/Infrastructure/TradeTrust/XDC Network.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Institute of Technical Education.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Institute of Technical Education.png new file mode 100644 index 0000000..2a168b9 Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Institute of Technical Education.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/LASALLE College of the Arts.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/LASALLE College of the Arts.png new file mode 100644 index 0000000..c9aa494 Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/LASALLE College of the Arts.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/NAFA.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/NAFA.png new file mode 100644 index 0000000..6295596 Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/NAFA.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/NIEC.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/NIEC.png new file mode 100644 index 0000000..905d36a Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/NIEC.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Nanyang Polytechnic.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Nanyang Polytechnic.png new file mode 100644 index 0000000..28c6429 Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Nanyang Polytechnic.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/National University of Singapore.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/National University of Singapore.png new file mode 100644 index 0000000..169dcce Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/National University of Singapore.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Ngee Ann Polytechnic.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Ngee Ann Polytechnic.png new file mode 100644 index 0000000..b2bad44 Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Ngee Ann Polytechnic.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Republic Polytechnic.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Republic Polytechnic.png new file mode 100644 index 0000000..bedf9ba Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Republic Polytechnic.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/SMU.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/SMU.png new file mode 100644 index 0000000..02547d4 Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/SMU.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Singapore Examinations and Assessment Board.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Singapore Examinations and Assessment Board.png new file mode 100644 index 0000000..e0fa81b Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Singapore Examinations and Assessment Board.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Singapore Polytechnic.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Singapore Polytechnic.png new file mode 100644 index 0000000..3bf4484 Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Singapore Polytechnic.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Singapore University of Social Sciences.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Singapore University of Social Sciences.png new file mode 100644 index 0000000..79c5ccf Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Singapore University of Social Sciences.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/SkillsFuture SG.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/SkillsFuture SG.png new file mode 100644 index 0000000..cfccae7 Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/SkillsFuture SG.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Temasek Polytechnic.png b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Temasek Polytechnic.png new file mode 100644 index 0000000..7bba28c Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/OpenCert/Temasek Polytechnic.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/COFCO.png b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/COFCO.png new file mode 100644 index 0000000..bb31349 Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/COFCO.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/ICICI Bank.png b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/ICICI Bank.png new file mode 100644 index 0000000..72f409a Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/ICICI Bank.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/JSLA.png b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/JSLA.png new file mode 100644 index 0000000..c978aaa Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/JSLA.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/MAPTRASCO.png b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/MAPTRASCO.png new file mode 100644 index 0000000..80176bb Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/MAPTRASCO.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/Pacific International Lines.png b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/Pacific International Lines.png new file mode 100644 index 0000000..a2a7254 Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/Pacific International Lines.png differ diff --git a/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/YIT HONG PTE LTD.png b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/YIT HONG PTE LTD.png new file mode 100644 index 0000000..5e15e1e Binary files /dev/null and b/public/images/partners/2X/Card/Issuance Attestation/TradeTrust/YIT HONG PTE LTD.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/AEOTRADE.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/AEOTRADE.png new file mode 100644 index 0000000..0cadac1 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/AEOTRADE.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/Angsana Technology.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Angsana Technology.png new file mode 100644 index 0000000..f5aaea3 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Angsana Technology.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/Automaxis.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Automaxis.png new file mode 100644 index 0000000..c3c4d84 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Automaxis.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/Banco.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Banco.png new file mode 100644 index 0000000..bde5f3a Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Banco.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/BlockPeer.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/BlockPeer.png new file mode 100644 index 0000000..f869a4e Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/BlockPeer.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/BunkerChain.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/BunkerChain.png new file mode 100644 index 0000000..361587c Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/BunkerChain.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/CALISTA.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/CALISTA.png new file mode 100644 index 0000000..d1614b9 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/CALISTA.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/CargoX.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/CargoX.png new file mode 100644 index 0000000..9315f27 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/CargoX.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/ChainDoX.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/ChainDoX.png new file mode 100644 index 0000000..5daabd6 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/ChainDoX.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/Credore.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Credore.png new file mode 100644 index 0000000..ec436cc Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Credore.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/DIMUTO.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/DIMUTO.png new file mode 100644 index 0000000..1e0e8a5 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/DIMUTO.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/DOCKLAB.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/DOCKLAB.png new file mode 100644 index 0000000..ebc7c72 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/DOCKLAB.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/Docsonblocks.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Docsonblocks.png new file mode 100644 index 0000000..10ca80f Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Docsonblocks.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/DocuShield.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/DocuShield.png new file mode 100644 index 0000000..5efe174 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/DocuShield.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/DocuTrade.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/DocuTrade.png new file mode 100644 index 0000000..c677c67 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/DocuTrade.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/FUIX LABS.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/FUIX LABS.png new file mode 100644 index 0000000..f73b34c Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/FUIX LABS.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/FilPass.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/FilPass.png new file mode 100644 index 0000000..4da4eb9 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/FilPass.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/GUUD.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/GUUD.png new file mode 100644 index 0000000..9cb2f30 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/GUUD.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/JUPYTON.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/JUPYTON.png new file mode 100644 index 0000000..607d77d Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/JUPYTON.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/Jed.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Jed.png new file mode 100644 index 0000000..1ea808f Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Jed.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/Linklogis.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Linklogis.png new file mode 100644 index 0000000..1bd1c6f Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Linklogis.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/Morpheus.Network.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Morpheus.Network.png new file mode 100644 index 0000000..8aca59e Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/Morpheus.Network.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/SECRO.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/SECRO.png new file mode 100644 index 0000000..3f7c318 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/SECRO.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/SGTraDex.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/SGTraDex.png new file mode 100644 index 0000000..022eba1 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/SGTraDex.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/TASConnect.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/TASConnect.png new file mode 100644 index 0000000..d8cdbbb Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/TASConnect.png differ diff --git "a/public/images/partners/2X/Card/Solution Provider/TradeTrust/TRAM\303\211S.png" "b/public/images/partners/2X/Card/Solution Provider/TradeTrust/TRAM\303\211S.png" new file mode 100644 index 0000000..5c96e20 Binary files /dev/null and "b/public/images/partners/2X/Card/Solution Provider/TradeTrust/TRAM\303\211S.png" differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/TradeGo.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/TradeGo.png new file mode 100644 index 0000000..648c009 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/TradeGo.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/VAYANA.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/VAYANA.png new file mode 100644 index 0000000..1b980e1 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/VAYANA.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/ZenithBlox.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/ZenithBlox.png new file mode 100644 index 0000000..497e9df Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/ZenithBlox.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/eTEU.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/eTEU.png new file mode 100644 index 0000000..82fa826 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/eTEU.png differ diff --git a/public/images/partners/2X/Card/Solution Provider/TradeTrust/veriTAG.png b/public/images/partners/2X/Card/Solution Provider/TradeTrust/veriTAG.png new file mode 100644 index 0000000..aa1c533 Binary files /dev/null and b/public/images/partners/2X/Card/Solution Provider/TradeTrust/veriTAG.png differ diff --git a/public/images/partners/2X/Card/Verification Validation/TradeTrust/Bank of China.png b/public/images/partners/2X/Card/Verification Validation/TradeTrust/Bank of China.png new file mode 100644 index 0000000..c560aa5 Binary files /dev/null and b/public/images/partners/2X/Card/Verification Validation/TradeTrust/Bank of China.png differ diff --git a/public/images/partners/2X/Card/Verification Validation/TradeTrust/DBS Group.png b/public/images/partners/2X/Card/Verification Validation/TradeTrust/DBS Group.png new file mode 100644 index 0000000..1ee92bb Binary files /dev/null and b/public/images/partners/2X/Card/Verification Validation/TradeTrust/DBS Group.png differ diff --git a/public/images/partners/2X/Card/Verification Validation/TradeTrust/UOB.png b/public/images/partners/2X/Card/Verification Validation/TradeTrust/UOB.png new file mode 100644 index 0000000..df3fa16 Binary files /dev/null and b/public/images/partners/2X/Card/Verification Validation/TradeTrust/UOB.png differ diff --git a/public/images/partners/AEOTRADE.svg b/public/images/partners/AEOTRADE.svg new file mode 100644 index 0000000..3b8c37d --- /dev/null +++ b/public/images/partners/AEOTRADE.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/ASTROn.svg b/public/images/partners/ASTROn.svg new file mode 100644 index 0000000..0bb9cef --- /dev/null +++ b/public/images/partners/ASTROn.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Angsana Technology.svg b/public/images/partners/Angsana Technology.svg new file mode 100644 index 0000000..c188492 --- /dev/null +++ b/public/images/partners/Angsana Technology.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Automaxis.svg b/public/images/partners/Automaxis.svg new file mode 100644 index 0000000..5932599 --- /dev/null +++ b/public/images/partners/Automaxis.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Banco.svg b/public/images/partners/Banco.svg new file mode 100644 index 0000000..7576227 --- /dev/null +++ b/public/images/partners/Banco.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Bank of China.svg b/public/images/partners/Bank of China.svg new file mode 100644 index 0000000..2894e24 --- /dev/null +++ b/public/images/partners/Bank of China.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/images/partners/BlockPeer.svg b/public/images/partners/BlockPeer.svg new file mode 100644 index 0000000..e25fd85 --- /dev/null +++ b/public/images/partners/BlockPeer.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/BunkerChain.svg b/public/images/partners/BunkerChain.svg new file mode 100644 index 0000000..c05496f --- /dev/null +++ b/public/images/partners/BunkerChain.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/CALISTA.svg b/public/images/partners/CALISTA.svg new file mode 100644 index 0000000..2374c9b --- /dev/null +++ b/public/images/partners/CALISTA.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/COFCO.svg b/public/images/partners/COFCO.svg new file mode 100644 index 0000000..f0a383a --- /dev/null +++ b/public/images/partners/COFCO.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/CargoX.svg b/public/images/partners/CargoX.svg new file mode 100644 index 0000000..b5e3fbd --- /dev/null +++ b/public/images/partners/CargoX.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/ChainDoX.svg b/public/images/partners/ChainDoX.svg new file mode 100644 index 0000000..e6af716 --- /dev/null +++ b/public/images/partners/ChainDoX.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Credore.svg b/public/images/partners/Credore.svg new file mode 100644 index 0000000..a2a23bb --- /dev/null +++ b/public/images/partners/Credore.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/DBS Group.svg b/public/images/partners/DBS Group.svg new file mode 100644 index 0000000..79905c2 --- /dev/null +++ b/public/images/partners/DBS Group.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/DIMUTO.svg b/public/images/partners/DIMUTO.svg new file mode 100644 index 0000000..9cee423 --- /dev/null +++ b/public/images/partners/DIMUTO.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/DLTLedgers.svg b/public/images/partners/DLTLedgers.svg new file mode 100644 index 0000000..4fba3e4 --- /dev/null +++ b/public/images/partners/DLTLedgers.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/DOCKLAB.svg b/public/images/partners/DOCKLAB.svg new file mode 100644 index 0000000..6e9cb17 --- /dev/null +++ b/public/images/partners/DOCKLAB.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Docsonblocks.svg b/public/images/partners/Docsonblocks.svg new file mode 100644 index 0000000..3b4a049 --- /dev/null +++ b/public/images/partners/Docsonblocks.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/DocuShield.svg b/public/images/partners/DocuShield.svg new file mode 100644 index 0000000..515ce01 --- /dev/null +++ b/public/images/partners/DocuShield.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/DocuTrade.svg b/public/images/partners/DocuTrade.svg new file mode 100644 index 0000000..c938304 --- /dev/null +++ b/public/images/partners/DocuTrade.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/FUIX LABS.svg b/public/images/partners/FUIX LABS.svg new file mode 100644 index 0000000..8b71a92 --- /dev/null +++ b/public/images/partners/FUIX LABS.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/FilPass.svg b/public/images/partners/FilPass.svg new file mode 100644 index 0000000..aa5c1c0 --- /dev/null +++ b/public/images/partners/FilPass.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/GUUD.svg b/public/images/partners/GUUD.svg new file mode 100644 index 0000000..6001e5d --- /dev/null +++ b/public/images/partners/GUUD.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/ICICI Bank.svg b/public/images/partners/ICICI Bank.svg new file mode 100644 index 0000000..6e4dcd9 --- /dev/null +++ b/public/images/partners/ICICI Bank.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/partners/Institute of Technical Education.svg b/public/images/partners/Institute of Technical Education.svg new file mode 100644 index 0000000..944c0d9 --- /dev/null +++ b/public/images/partners/Institute of Technical Education.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/JSLA.svg b/public/images/partners/JSLA.svg new file mode 100644 index 0000000..bc01fc4 --- /dev/null +++ b/public/images/partners/JSLA.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/JUPYTON.svg b/public/images/partners/JUPYTON.svg new file mode 100644 index 0000000..5720b66 --- /dev/null +++ b/public/images/partners/JUPYTON.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/LASALLE College of the Arts.svg b/public/images/partners/LASALLE College of the Arts.svg new file mode 100644 index 0000000..6dd11c1 --- /dev/null +++ b/public/images/partners/LASALLE College of the Arts.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Linklogis.svg b/public/images/partners/Linklogis.svg new file mode 100644 index 0000000..f50bdb9 --- /dev/null +++ b/public/images/partners/Linklogis.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/MAPTRASCO.svg b/public/images/partners/MAPTRASCO.svg new file mode 100644 index 0000000..16473f3 --- /dev/null +++ b/public/images/partners/MAPTRASCO.svg @@ -0,0 +1,3175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/partners/Morpheus.Network.svg b/public/images/partners/Morpheus.Network.svg new file mode 100644 index 0000000..e8c1a19 --- /dev/null +++ b/public/images/partners/Morpheus.Network.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/NAFA.svg b/public/images/partners/NAFA.svg new file mode 100644 index 0000000..ce23ce0 --- /dev/null +++ b/public/images/partners/NAFA.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/NIEC.svg b/public/images/partners/NIEC.svg new file mode 100644 index 0000000..da9065c --- /dev/null +++ b/public/images/partners/NIEC.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Nanyang Polytechnic.svg b/public/images/partners/Nanyang Polytechnic.svg new file mode 100644 index 0000000..b659dca --- /dev/null +++ b/public/images/partners/Nanyang Polytechnic.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/National University of Singapore.svg b/public/images/partners/National University of Singapore.svg new file mode 100644 index 0000000..0036689 --- /dev/null +++ b/public/images/partners/National University of Singapore.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/public/images/partners/Ngee Ann Polytechnic.svg b/public/images/partners/Ngee Ann Polytechnic.svg new file mode 100644 index 0000000..7dbba73 --- /dev/null +++ b/public/images/partners/Ngee Ann Polytechnic.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/partners/Pacific International Lines.svg b/public/images/partners/Pacific International Lines.svg new file mode 100644 index 0000000..3a9bffb --- /dev/null +++ b/public/images/partners/Pacific International Lines.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Republic Polytechnic.svg b/public/images/partners/Republic Polytechnic.svg new file mode 100644 index 0000000..d11cd22 --- /dev/null +++ b/public/images/partners/Republic Polytechnic.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/partners/SECRO.svg b/public/images/partners/SECRO.svg new file mode 100644 index 0000000..092cfab --- /dev/null +++ b/public/images/partners/SECRO.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/SGTraDex.svg b/public/images/partners/SGTraDex.svg new file mode 100644 index 0000000..ebb5be6 --- /dev/null +++ b/public/images/partners/SGTraDex.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/SMU.svg b/public/images/partners/SMU.svg new file mode 100644 index 0000000..3ff9c20 --- /dev/null +++ b/public/images/partners/SMU.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/images/partners/STABILITY.svg b/public/images/partners/STABILITY.svg new file mode 100644 index 0000000..c30256a --- /dev/null +++ b/public/images/partners/STABILITY.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Singapore Examinations and Assessment Board.svg b/public/images/partners/Singapore Examinations and Assessment Board.svg new file mode 100644 index 0000000..bfe4c7c --- /dev/null +++ b/public/images/partners/Singapore Examinations and Assessment Board.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Singapore Polytechnic.svg b/public/images/partners/Singapore Polytechnic.svg new file mode 100644 index 0000000..ea0e130 --- /dev/null +++ b/public/images/partners/Singapore Polytechnic.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/partners/Singapore University of Social Sciences.svg b/public/images/partners/Singapore University of Social Sciences.svg new file mode 100644 index 0000000..cbbd070 --- /dev/null +++ b/public/images/partners/Singapore University of Social Sciences.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/SkillsFuture SG.svg b/public/images/partners/SkillsFuture SG.svg new file mode 100644 index 0000000..c08a485 --- /dev/null +++ b/public/images/partners/SkillsFuture SG.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/TASConnect.svg b/public/images/partners/TASConnect.svg new file mode 100644 index 0000000..bf0568a --- /dev/null +++ b/public/images/partners/TASConnect.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/Temasek Polytechnic.svg b/public/images/partners/Temasek Polytechnic.svg new file mode 100644 index 0000000..9428003 --- /dev/null +++ b/public/images/partners/Temasek Polytechnic.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/partners/TradeGo.svg b/public/images/partners/TradeGo.svg new file mode 100644 index 0000000..4cc2849 --- /dev/null +++ b/public/images/partners/TradeGo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/UOB.svg b/public/images/partners/UOB.svg new file mode 100644 index 0000000..a312b8c --- /dev/null +++ b/public/images/partners/UOB.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/images/partners/VAYANA.svg b/public/images/partners/VAYANA.svg new file mode 100644 index 0000000..514b6ea --- /dev/null +++ b/public/images/partners/VAYANA.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/XDC Network.svg b/public/images/partners/XDC Network.svg new file mode 100644 index 0000000..c8d8983 --- /dev/null +++ b/public/images/partners/XDC Network.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/YIT HONG PTE LTD.svg b/public/images/partners/YIT HONG PTE LTD.svg new file mode 100644 index 0000000..2312f26 --- /dev/null +++ b/public/images/partners/YIT HONG PTE LTD.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/ZenithBlox.svg b/public/images/partners/ZenithBlox.svg new file mode 100644 index 0000000..3565732 --- /dev/null +++ b/public/images/partners/ZenithBlox.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/eTEU.svg b/public/images/partners/eTEU.svg new file mode 100644 index 0000000..350daa7 --- /dev/null +++ b/public/images/partners/eTEU.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/jed.svg b/public/images/partners/jed.svg new file mode 100644 index 0000000..e4f42b3 --- /dev/null +++ b/public/images/partners/jed.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/jindal.svg b/public/images/partners/jindal.svg new file mode 100644 index 0000000..e37a148 --- /dev/null +++ b/public/images/partners/jindal.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/lasalle-uas.svg b/public/images/partners/lasalle-uas.svg new file mode 100644 index 0000000..b9f7438 --- /dev/null +++ b/public/images/partners/lasalle-uas.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/trames.svg b/public/images/partners/trames.svg new file mode 100644 index 0000000..a8d6ac9 --- /dev/null +++ b/public/images/partners/trames.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/images/partners/veriTAG.svg b/public/images/partners/veriTAG.svg new file mode 100644 index 0000000..49f9e22 --- /dev/null +++ b/public/images/partners/veriTAG.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/App.test.tsx b/src/App.test.tsx index 99632ae..e90da4b 100644 --- a/src/App.test.tsx +++ b/src/App.test.tsx @@ -17,9 +17,9 @@ describe('App Component', () => { render() // Check if navigation elements are present - expect(screen.getByText('Home')).toBeInTheDocument() - // Ecosystem temporarily removed - expect(screen.getByText('News & Updates')).toBeInTheDocument() + expect(screen.getAllByText('About').length).toBeGreaterThan(0) + expect(screen.getAllByText('Partners').length).toBeGreaterThan(0) + expect(screen.getAllByText('News & Updates').length).toBeGreaterThan(0) }) it('starts with light mode by default', () => { diff --git a/src/App.tsx b/src/App.tsx index dc2a552..57c27e6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -20,6 +20,16 @@ const BACKGROUND_ROUTE_RULES: BackgroundRouteRule[] = [ lightClass: 'app-shell--settings-light', darkClass: 'app-shell--settings-dark', }, + { + paths: ['/partners'], + lightClass: 'app-shell--partners-light', + darkClass: 'app-shell--partners-dark', + }, + { + paths: ['/about'], + lightClass: 'app-shell--about-light', + darkClass: 'app-shell--about-dark', + }, ] function App() { @@ -37,6 +47,10 @@ function App() { localStorage.setItem('darkMode', JSON.stringify(isDarkMode)) }, [isDarkMode]) + useEffect(() => { + window.scrollTo(0, 0) + }, [location.pathname]) + useEffect(() => { if (isDarkMode) { document.body.classList.add('dark-mode') diff --git a/src/__tests__/About.test.tsx b/src/__tests__/About.test.tsx new file mode 100644 index 0000000..0302ea0 --- /dev/null +++ b/src/__tests__/About.test.tsx @@ -0,0 +1,97 @@ +import { describe, it, expect } from 'vitest' +import { render, screen, within } from './test-utils' +import About from '../pages/About' +import capabilities from '../data/capabilities' + +const renderAbout = (isDarkMode = false) => + render() + +describe('About page', () => { + describe('hero', () => { + it('renders the main heading', () => { + renderAbout() + expect(screen.getByRole('heading', { level: 1 })).toBeInTheDocument() + expect(screen.getByText(/The Foundation of/i)).toBeInTheDocument() + expect(screen.getByText(/Digital Trust/i)).toBeInTheDocument() + }) + + it('renders the hero subtitle', () => { + renderAbout() + expect( + screen.getByText(/core infrastructure layer enabling secure/i) + ).toBeInTheDocument() + }) + }) + + describe('EcosystemCard integration', () => { + it('renders the ecosystem card heading', () => { + renderAbout() + expect( + screen.getByRole('heading', { + level: 2, + name: /How TrustVC Powers Multiple Ecosystems/i, + }) + ).toBeInTheDocument() + }) + + it('renders the ecosystem center image', () => { + renderAbout() + expect( + screen.getByAltText(/How TrustVC Powers Multiple Ecosystems/i) + ).toBeInTheDocument() + }) + }) + + describe('Core Capabilities section', () => { + it('renders the Core Capabilities heading', () => { + renderAbout() + expect( + screen.getByRole('heading', { level: 2, name: /Core Capabilities/i }) + ).toBeInTheDocument() + }) + + it(`renders all ${capabilities.length} capability cards`, () => { + renderAbout() + expect(screen.getAllByRole('heading', { level: 3 })).toHaveLength( + capabilities.length + ) + }) + + it('renders each capability title and description', () => { + renderAbout() + capabilities.forEach(cap => { + expect(screen.getByText(cap.title)).toBeInTheDocument() + expect(screen.getByText(cap.description)).toBeInTheDocument() + }) + }) + + it('renders each card with its own tags', () => { + renderAbout() + capabilities.forEach(cap => { + const card = screen.getByText(cap.title).closest('.rounded-2xl')! + cap.tags.forEach(tag => { + expect(within(card as HTMLElement).getByText(tag)).toBeInTheDocument() + }) + }) + }) + }) + + describe('dark / light mode', () => { + it('renders without errors in dark mode', () => { + renderAbout(true) + expect(screen.getByRole('heading', { level: 1 })).toBeInTheDocument() + }) + + it('applies dark mode classes to capability cards', () => { + const { container } = renderAbout(true) + expect( + container.querySelectorAll('.bg-neutral-20\\/30').length + ).toBeGreaterThan(0) + }) + + it('applies light mode classes to capability cards', () => { + const { container } = renderAbout(false) + expect(container.querySelectorAll('.bg-white').length).toBeGreaterThan(0) + }) + }) +}) diff --git a/src/__tests__/PartnerCard.test.tsx b/src/__tests__/PartnerCard.test.tsx new file mode 100644 index 0000000..8570820 --- /dev/null +++ b/src/__tests__/PartnerCard.test.tsx @@ -0,0 +1,154 @@ +import { describe, it, expect } from 'vitest' +import { render, screen } from './test-utils' +import PartnerCard from '../components/common/PartnerCard' +import type { Partner } from '../types/partner' + +const minimalPartner: Partner = { + name: 'Test Partner', + logo: '/images/partners/test.svg', +} + +const fullPartner: Partner = { + name: 'AEOTRADE', + logo: '/images/partners/AEOTRADE.svg', + website: 'https://www.aeotrade.com', + description: 'A trade finance platform', + verticalType: 'TradeTrust', + category: 'Solution Partners', +} + +describe('PartnerCard', () => { + describe('partner name', () => { + it('renders the partner name', () => { + render() + expect( + screen.getByRole('heading', { level: 3, name: 'Test Partner' }) + ).toBeInTheDocument() + }) + }) + + describe('logo', () => { + it('renders logo with correct src and alt attributes', () => { + render() + const img = screen.getByRole('img', { name: 'Test Partner' }) + expect(img).toHaveAttribute('src', '/images/partners/test.svg') + }) + + it('sets loading="lazy" on the logo', () => { + render() + expect(screen.getByRole('img')).toHaveAttribute('loading', 'lazy') + }) + }) + + describe('vertical type tag', () => { + it('renders TradeTrust tag with correct text', () => { + render() + expect(screen.getByText('TradeTrust')).toBeInTheDocument() + }) + + it('renders OpenCerts tag with correct text', () => { + const partner: Partner = { ...minimalPartner, verticalType: 'OpenCerts' } + render() + expect(screen.getByText('OpenCerts')).toBeInTheDocument() + }) + + it('renders no vertical tag when verticalType is absent', () => { + render() + expect(screen.queryByText('TradeTrust')).not.toBeInTheDocument() + expect(screen.queryByText('OpenCerts')).not.toBeInTheDocument() + }) + }) + + describe('category tag', () => { + it('renders category tag when provided', () => { + render() + expect(screen.getByText('Solution Partners')).toBeInTheDocument() + }) + + it('renders no category tag when absent', () => { + render() + expect(screen.queryByText('Solution Partners')).not.toBeInTheDocument() + expect(screen.queryByText('Infrastructure')).not.toBeInTheDocument() + }) + }) + + describe('description', () => { + it('renders description text when provided', () => { + render() + expect(screen.getByText('A trade finance platform')).toBeInTheDocument() + }) + + it('does not render description element when absent', () => { + render() + expect( + screen.queryByText('A trade finance platform') + ).not.toBeInTheDocument() + }) + }) + + describe('Visit Site link', () => { + it('renders Visit Site link with correct href', () => { + render() + const link = screen.getByRole('link', { name: /Visit Site/i }) + expect(link).toHaveAttribute('href', 'https://www.aeotrade.com') + }) + + it('opens Visit Site link in a new tab', () => { + render() + const link = screen.getByRole('link', { name: /Visit Site/i }) + expect(link).toHaveAttribute('target', '_blank') + expect(link).toHaveAttribute('rel', 'noopener noreferrer') + }) + + it('does not render Visit Site link when website is absent', () => { + render() + expect( + screen.queryByRole('link', { name: /Visit Site/i }) + ).not.toBeInTheDocument() + }) + }) + + describe('dark/light mode', () => { + it('applies dark mode background and border', () => { + const { container } = render( + + ) + const card = container.firstChild as HTMLElement + expect(card.className).toContain('bg-[#2A2D35]') + expect(card.className).toContain('border-neutral-10') + }) + + it('applies light mode background and border', () => { + const { container } = render( + + ) + const card = container.firstChild as HTMLElement + expect(card.className).toContain('bg-white') + expect(card.className).toContain('border-neutral-60') + }) + + it('applies dark mode TradeTrust tag colors', () => { + render( + + ) + const tag = screen.getByText('TradeTrust') + expect(tag.className).toContain('bg-[#0B384F]') + expect(tag.className).toContain('text-[#B3ECFF]') + }) + + it('applies light mode TradeTrust tag colors', () => { + render( + + ) + const tag = screen.getByText('TradeTrust') + expect(tag.className).toContain('bg-[#B3ECFF]') + expect(tag.className).toContain('text-[#0B384F]') + }) + }) +}) diff --git a/src/__tests__/Partners.test.tsx b/src/__tests__/Partners.test.tsx new file mode 100644 index 0000000..80fb455 --- /dev/null +++ b/src/__tests__/Partners.test.tsx @@ -0,0 +1,171 @@ +import { describe, it, expect } from 'vitest' +import { render, screen, fireEvent } from './test-utils' +import Partners from '../pages/Partners' +import partners from '../data/partners' + +const CATEGORIES = [ + 'All', + 'Issuance & Attestation', + 'Verification & Validation', + 'Solution Partners', + 'Infrastructure', +] + +describe('Partners page', () => { + describe('heading and subtitle', () => { + it('renders the page heading with "Our Partners"', () => { + render() + const heading = screen.getByRole('heading', { level: 1 }) + expect(heading).toHaveTextContent('Our Partners') + }) + + it('renders the subtitle text', () => { + render() + expect( + screen.getByText( + /The Global Engine for Verifiable Documents and Transferable Records/i + ) + ).toBeInTheDocument() + }) + }) + + describe('category filter', () => { + it('renders all 5 category filter buttons', () => { + render() + CATEGORIES.forEach(cat => { + expect(screen.getByRole('button', { name: cat })).toBeInTheDocument() + }) + }) + + it('"All" filter is active by default', () => { + render() + const allBtn = screen.getByRole('button', { name: 'All' }) + expect(allBtn.className).toContain('bg-primary-60') + expect(allBtn.className).toContain('text-white') + }) + + it('inactive filter buttons do not have active styling', () => { + render() + CATEGORIES.slice(1).forEach(cat => { + const btn = screen.getByRole('button', { name: cat }) + expect(btn.className).not.toContain('bg-primary-60') + }) + }) + + it('clicking a category makes it active', () => { + render() + const infraBtn = screen.getByRole('button', { name: 'Infrastructure' }) + fireEvent.click(infraBtn) + expect(infraBtn.className).toContain('bg-primary-60') + expect(infraBtn.className).toContain('text-white') + }) + + it('clicking a category deactivates the previously active filter', () => { + render() + fireEvent.click(screen.getByRole('button', { name: 'Infrastructure' })) + expect( + screen.getByRole('button', { name: 'All' }).className + ).not.toContain('bg-primary-60') + }) + + it('clicking "All" after a filter restores all partners', () => { + render() + fireEvent.click(screen.getByRole('button', { name: 'Infrastructure' })) + fireEvent.click(screen.getByRole('button', { name: 'All' })) + const cards = screen.getAllByRole('heading', { level: 3 }) + expect(cards).toHaveLength(partners.length) + }) + }) + + describe('partner grid', () => { + it('shows all partners when "All" is selected', () => { + render() + const cards = screen.getAllByRole('heading', { level: 3 }) + expect(cards).toHaveLength(partners.length) + }) + + it('filters to only Solution Partners when that category is selected', () => { + render() + fireEvent.click(screen.getByRole('button', { name: 'Solution Partners' })) + const expected = partners.filter(p => p.category === 'Solution Partners') + expect(screen.getAllByRole('heading', { level: 3 })).toHaveLength( + expected.length + ) + }) + + it('filters to only Infrastructure partners when that category is selected', () => { + render() + fireEvent.click(screen.getByRole('button', { name: 'Infrastructure' })) + const expected = partners.filter(p => p.category === 'Infrastructure') + expect(screen.getAllByRole('heading', { level: 3 })).toHaveLength( + expected.length + ) + }) + + it('filters to only Issuance & Attestation partners when that category is selected', () => { + render() + fireEvent.click( + screen.getByRole('button', { name: 'Issuance & Attestation' }) + ) + const expected = partners.filter( + p => p.category === 'Issuance & Attestation' + ) + expect(screen.getAllByRole('heading', { level: 3 })).toHaveLength( + expected.length + ) + }) + + it('filters to only Verification & Validation partners when that category is selected', () => { + render() + fireEvent.click( + screen.getByRole('button', { name: 'Verification & Validation' }) + ) + const expected = partners.filter( + p => p.category === 'Verification & Validation' + ) + expect(screen.getAllByRole('heading', { level: 3 })).toHaveLength( + expected.length + ) + }) + + it('renders the first partner name in the full list', () => { + render() + expect(screen.getByText(partners[0].name)).toBeInTheDocument() + }) + + it('renders PartnerCard with Visit Site link for partners with a website', () => { + render() + const partnerWithSite = partners.find(p => p.website)! + expect( + screen.getAllByRole('link', { name: /Visit Site/i }).length + ).toBeGreaterThan(0) + // The first partner with a website should appear in the page + expect(screen.getByText(partnerWithSite.name)).toBeInTheDocument() + }) + }) + + describe('dark/light mode', () => { + it('applies dark mode background', () => { + const { container } = render() + expect((container.firstChild as HTMLElement).className).toContain( + 'w-full' + ) + }) + + it('applies light mode background', () => { + const { container } = render() + expect((container.firstChild as HTMLElement).className).toContain( + 'w-full' + ) + }) + + it('passes isDarkMode to PartnerCard components', () => { + const { container: darkContainer } = render( + + ) + // PartnerCard dark mode uses bg-[#2A2D35] - verify at least one card has it + const darkCards = darkContainer.querySelectorAll('.bg-\\[\\#2A2D35\\]') + expect(darkCards.length).toBeGreaterThan(0) + }) + }) +}) diff --git a/src/__tests__/PartnersSection.test.tsx b/src/__tests__/PartnersSection.test.tsx new file mode 100644 index 0000000..e68d1f4 --- /dev/null +++ b/src/__tests__/PartnersSection.test.tsx @@ -0,0 +1,126 @@ +import { describe, it, expect, vi, afterEach } from 'vitest' +import { render, screen, fireEvent } from './test-utils' +import PartnersSection from '../components/home/PartnersSection' + +const mockNavigate = vi.hoisted(() => vi.fn()) + +vi.mock('react-router-dom', async () => { + const actual = await vi.importActual('react-router-dom') + return { + ...(actual as object), + useNavigate: () => mockNavigate, + } +}) + +const HOME_PARTNERS = [ + 'Institute of Technical Education', + 'Jed', + 'JSLA', + 'JUPYTON', + 'LASALLE College of the Arts', +] + +afterEach(() => { + vi.clearAllMocks() +}) + +describe('PartnersSection', () => { + describe('heading and tagline', () => { + it('renders "Our Partners" heading', () => { + render() + const heading = screen.getByRole('heading', { level: 2 }) + expect(heading).toHaveTextContent('Our Partners') + }) + + it('renders the tagline text', () => { + render() + expect( + screen.getByText(/Building a foundation of trust for every industry/i) + ).toBeInTheDocument() + }) + }) + + describe('partner logos', () => { + it('renders logos for home partners in the marquee', () => { + render() + HOME_PARTNERS.forEach(name => { + const imgs = screen.getAllByRole('img', { name }) + expect(imgs.length).toBeGreaterThanOrEqual(1) + }) + }) + + it('renders logos with eager loading for marquee animation', () => { + render() + const imgs = screen.getAllByRole('img') + imgs.forEach(img => expect(img).toHaveAttribute('loading', 'eager')) + }) + + it('duplicates partner logos for infinite marquee effect', () => { + render() + const firstPartnerImgs = screen.getAllByRole('img', { + name: HOME_PARTNERS[0], + }) + expect(firstPartnerImgs.length).toBe(2) + }) + + it('all partner logo containers are visible (no hidden class)', () => { + render() + const imgs = screen.getAllByRole('img', { name: HOME_PARTNERS[0] }) + imgs.forEach(img => { + const container = img.closest('div') + expect(container?.className).not.toContain('hidden') + }) + }) + }) + + describe('View All Partners CTA', () => { + it('renders View All Partners button', () => { + render() + expect( + screen.getByRole('button', { name: /View All Partners/i }) + ).toBeInTheDocument() + }) + + it('navigates to /partners when button is clicked', () => { + render() + fireEvent.click( + screen.getByRole('button', { name: /View All Partners/i }) + ) + expect(mockNavigate).toHaveBeenCalledWith('/partners') + }) + + it('calls navigate exactly once per click', () => { + render() + fireEvent.click( + screen.getByRole('button', { name: /View All Partners/i }) + ) + expect(mockNavigate).toHaveBeenCalledTimes(1) + }) + }) + + describe('dark/light mode', () => { + it('applies dark mode text class to "Our" span in heading', () => { + render() + const heading = screen.getByRole('heading', { level: 2 }) + expect(heading.innerHTML).toContain('text-neutral-60') + }) + + it('applies light mode text class to "Our" span in heading', () => { + render() + const heading = screen.getByRole('heading', { level: 2 }) + expect(heading.innerHTML).toContain('text-[#1E2026]') + }) + + it('applies dark mode class to tagline paragraph', () => { + render() + const tagline = screen.getByText(/Building a foundation of trust/i) + expect(tagline.className).toContain('text-neutral-50') + }) + + it('applies light mode class to tagline paragraph', () => { + render() + const tagline = screen.getByText(/Building a foundation of trust/i) + expect(tagline.className).toContain('text-[#3D444D]') + }) + }) +}) diff --git a/src/__tests__/home.test.tsx b/src/__tests__/home.test.tsx index 8721aa7..7a48a0a 100644 --- a/src/__tests__/home.test.tsx +++ b/src/__tests__/home.test.tsx @@ -46,4 +46,37 @@ describe('Home page', () => { renderHome(false) expect(screen.getByText(/Built for Developers,/i)).toBeInTheDocument() }) + + describe('Partners section', () => { + it('renders the Partners section heading', () => { + renderHome(false) + const heading = screen.getByRole('heading', { + level: 2, + name: /Our Partners/i, + }) + expect(heading).toBeInTheDocument() + }) + + it('renders the Partners section tagline', () => { + renderHome(false) + expect( + screen.getByText(/Building a foundation of trust for every industry/i) + ).toBeInTheDocument() + }) + + it('renders the View All Partners button', () => { + renderHome(false) + expect( + screen.getByRole('button', { name: /View All Partners/i }) + ).toBeInTheDocument() + }) + + it('renders at least one partner logo', () => { + renderHome(false) + const imgs = screen.getAllByRole('img', { + name: 'Institute of Technical Education', + }) + expect(imgs[0]).toBeInTheDocument() + }) + }) }) diff --git a/src/components/about/CapabilityCard/CapabilityCard.test.tsx b/src/components/about/CapabilityCard/CapabilityCard.test.tsx new file mode 100644 index 0000000..724afe2 --- /dev/null +++ b/src/components/about/CapabilityCard/CapabilityCard.test.tsx @@ -0,0 +1,127 @@ +import { describe, it, expect } from 'vitest' +import { render, screen } from '@testing-library/react' +import CapabilityCard from './CapabilityCard' +import { type Capability } from '../../../data/capabilities' + +const transferableOnlyCap: Capability = { + icon: '/images/about/single-source.svg', + tags: ['Transferable Record'], + title: 'Single Source of Truth', + description: + 'TrustVC uses a public blockchain to maintain a single source of truth for ETRs.', +} + +const dualTagCap: Capability = { + icon: '/images/about/unified-foundation.svg', + tags: ['Verifiable Document', 'Transferable Record'], + title: 'Unified Foundation', + description: + 'Single SDK powering multiple industry-specific verification solutions.', +} + +describe('CapabilityCard', () => { + describe('content rendering', () => { + it('renders the card title', () => { + render() + expect( + screen.getByRole('heading', { + level: 3, + name: transferableOnlyCap.title, + }) + ).toBeInTheDocument() + }) + + it('renders the card description', () => { + render() + expect( + screen.getByText(transferableOnlyCap.description) + ).toBeInTheDocument() + }) + + it('renders the icon image with correct alt text', () => { + render() + expect(screen.getByAltText(transferableOnlyCap.title)).toBeInTheDocument() + }) + + it('renders the icon image with correct src', () => { + render() + expect(screen.getByAltText(transferableOnlyCap.title)).toHaveAttribute( + 'src', + transferableOnlyCap.icon + ) + }) + }) + + describe('tag pills', () => { + it('renders a single Transferable Record tag', () => { + render() + expect(screen.getByText('Transferable Record')).toBeInTheDocument() + }) + + it('renders both tags for a dual-tag capability', () => { + render() + expect(screen.getByText('Verifiable Document')).toBeInTheDocument() + expect(screen.getByText('Transferable Record')).toBeInTheDocument() + }) + + it('applies correct styles to Transferable Record tag', () => { + render() + const tag = screen.getByText('Transferable Record') + expect(tag).toHaveStyle({ background: '#dfe1ff', color: '#312d62' }) + }) + + it('applies correct styles to Verifiable Document tag', () => { + render() + const tag = screen.getByText('Verifiable Document') + expect(tag).toHaveStyle({ background: '#b3ecff', color: '#0b384f' }) + }) + + it('renders pill with correct dimensions', () => { + render() + const tag = screen.getByText('Transferable Record') + expect(tag).toHaveStyle({ width: '128px', height: '24px' }) + }) + }) + + describe('dark mode', () => { + it('applies dark mode class to card', () => { + const { container } = render( + + ) + expect(container.firstChild).toHaveClass('bg-neutral-20/30') + }) + + it('applies light mode class to card', () => { + const { container } = render( + + ) + expect(container.firstChild).toHaveClass('bg-white') + }) + + it('applies dark mode class to icon container', () => { + const { container } = render( + + ) + expect(container.querySelector('.bg-neutral-20\\/60')).toBeInTheDocument() + }) + + it('applies light mode class to icon container', () => { + const { container } = render( + + ) + expect(container.querySelector('.bg-\\[\\#F5F6F7\\]')).toBeInTheDocument() + }) + + it('applies dark description color in dark mode', () => { + render() + const desc = screen.getByText(transferableOnlyCap.description) + expect(desc).toHaveStyle({ color: '#8B929A' }) + }) + + it('applies light description color in light mode', () => { + render() + const desc = screen.getByText(transferableOnlyCap.description) + expect(desc).toHaveStyle({ color: '#3D444D' }) + }) + }) +}) diff --git a/src/components/about/CapabilityCard/CapabilityCard.tsx b/src/components/about/CapabilityCard/CapabilityCard.tsx new file mode 100644 index 0000000..817f532 --- /dev/null +++ b/src/components/about/CapabilityCard/CapabilityCard.tsx @@ -0,0 +1,76 @@ +import clsx from 'clsx' +import { type Capability } from '../../../data/capabilities' + +const TAG_STYLES: Record = { + 'Transferable Record': { background: '#dfe1ff', color: '#312d62' }, + 'Verifiable Document': { background: '#b3ecff', color: '#0b384f' }, +} + +interface CapabilityCardProps { + cap: Capability + isDarkMode: boolean +} + +const CapabilityCard = ({ cap, isDarkMode }: CapabilityCardProps) => ( +
+
+
+ {cap.title} +
+
+ {cap.tags.map(tag => ( + + {tag} + + ))} +
+
+ +

+ {cap.title} +

+ +

+ {cap.description} +

+
+) + +export default CapabilityCard diff --git a/src/components/about/CapabilityCard/index.ts b/src/components/about/CapabilityCard/index.ts new file mode 100644 index 0000000..208e753 --- /dev/null +++ b/src/components/about/CapabilityCard/index.ts @@ -0,0 +1 @@ +export { default } from './CapabilityCard' diff --git a/src/components/about/EcosystemCard/EcosystemCard.test.tsx b/src/components/about/EcosystemCard/EcosystemCard.test.tsx new file mode 100644 index 0000000..10ee4d8 --- /dev/null +++ b/src/components/about/EcosystemCard/EcosystemCard.test.tsx @@ -0,0 +1,61 @@ +import { describe, it, expect } from 'vitest' +import { render, screen } from '@testing-library/react' +import EcosystemCard from './EcosystemCard' + +describe('EcosystemCard', () => { + it('renders the heading', () => { + render() + expect( + screen.getByRole('heading', { + level: 2, + name: /How TrustVC Powers Multiple Ecosystems/i, + }) + ).toBeInTheDocument() + }) + + it('renders the subtitle', () => { + render() + expect( + screen.getByText( + /One foundational platform, unlimited verification possibilities/i + ) + ).toBeInTheDocument() + }) + + it('renders the center image with correct alt text', () => { + render() + expect( + screen.getByAltText(/How TrustVC Powers Multiple Ecosystems/i) + ).toBeInTheDocument() + }) + + it('renders the center image with correct src', () => { + render() + expect( + screen.getByAltText(/How TrustVC Powers Multiple Ecosystems/i) + ).toHaveAttribute('src', '/images/about/center-image.svg') + }) + + it('applies the ecosystem card CSS classes', () => { + const { container } = render() + expect(container.querySelector('.about-ecosystem-card')).toBeInTheDocument() + expect( + container.querySelector('.about-ecosystem-card-content') + ).toBeInTheDocument() + }) + + it('has rounded corners only on sm+ breakpoint', () => { + const { container } = render() + const wrapper = container.firstChild as HTMLElement + expect(wrapper.classList.contains('sm:rounded-2xl')).toBe(true) + expect(wrapper.classList.contains('rounded-2xl')).toBe(false) + }) + + it('subtitle has white color style', () => { + render() + const subtitle = screen.getByText( + /One foundational platform, unlimited verification possibilities/i + ) + expect(subtitle).toHaveStyle({ color: '#FFFFFF' }) + }) +}) diff --git a/src/components/about/EcosystemCard/EcosystemCard.tsx b/src/components/about/EcosystemCard/EcosystemCard.tsx new file mode 100644 index 0000000..d5a1fec --- /dev/null +++ b/src/components/about/EcosystemCard/EcosystemCard.tsx @@ -0,0 +1,34 @@ +const EcosystemCard = () => ( +
+
+
+
+

+ How TrustVC Powers Multiple Ecosystems +

+

+ One foundational platform, unlimited verification possibilities. +

+ How TrustVC Powers Multiple Ecosystems +
+
+
+
+) + +export default EcosystemCard diff --git a/src/components/about/EcosystemCard/index.ts b/src/components/about/EcosystemCard/index.ts new file mode 100644 index 0000000..9539e90 --- /dev/null +++ b/src/components/about/EcosystemCard/index.ts @@ -0,0 +1 @@ +export { default } from './EcosystemCard' diff --git a/src/components/common/AttachmentFileList/AttachmentFileList.tsx b/src/components/common/AttachmentFileList/AttachmentFileList.tsx index 6c60333..67d5db3 100644 --- a/src/components/common/AttachmentFileList/AttachmentFileList.tsx +++ b/src/components/common/AttachmentFileList/AttachmentFileList.tsx @@ -23,7 +23,11 @@ export function AttachmentFileList({ + + + ) +} + +export default PartnersSection diff --git a/src/components/home/VerifySection/ObfuscatedMessage.tsx b/src/components/home/VerifySection/ObfuscatedMessage.tsx index 01ecc8c..d877905 100644 --- a/src/components/home/VerifySection/ObfuscatedMessage.tsx +++ b/src/components/home/VerifySection/ObfuscatedMessage.tsx @@ -34,6 +34,8 @@ export const ObfuscatedMessage: FunctionComponent = ({ return (
( +
+
+ {/* Hero */} +
+

+ + The Foundation of{' '} + + Digital Trust +

+

+ TrustVC serves as a core infrastructure layer enabling secure, + verifiable digital credentials across multiple industries and use + cases. +

+
+ +
+
+ +
+ + {/* Core Capabilities */} +
+

+ Core Capabilities +

+
+ +
+ {capabilities.map(cap => ( + + ))} +
+
+
+
+) + +export default About diff --git a/src/pages/Home/index.tsx b/src/pages/Home/index.tsx index 72469f3..26d1c69 100644 --- a/src/pages/Home/index.tsx +++ b/src/pages/Home/index.tsx @@ -2,6 +2,7 @@ import HeroSection from '../../components/home/HeroSection' import VerifySection from '../../components/home/VerifySection' import Carousel from '../../components/home/Carousel' import BuiltForDev from '../../components/home/BuiltForDev' +import PartnersSection from '../../components/home/PartnersSection' interface HomeProps { isDarkMode: boolean @@ -15,6 +16,7 @@ const Home = ({ isDarkMode }: HomeProps) => { +
) diff --git a/src/pages/Partners/index.tsx b/src/pages/Partners/index.tsx new file mode 100644 index 0000000..8eaaea0 --- /dev/null +++ b/src/pages/Partners/index.tsx @@ -0,0 +1,90 @@ +import { useState } from 'react' +import clsx from 'clsx' +import partners from '../../data/partners' +import PartnerCard from '../../components/common/PartnerCard' + +const CATEGORIES = [ + 'All', + 'Issuance & Attestation', + 'Verification & Validation', + 'Solution Partners', + 'Infrastructure', +] + +interface PartnersProps { + isDarkMode: boolean +} + +const Partners = ({ isDarkMode }: PartnersProps) => { + const [activeCategory, setActiveCategory] = useState('All') + + const filtered = + activeCategory === 'All' + ? partners + : partners.filter(p => p.category === activeCategory) + + return ( +
+
+ {/* Heading */} +
+

+ + Our{' '} + + Partners +

+

+ The Global Engine for Verifiable Documents and Transferable Records. +

+
+ + {/* Category filter */} +
+ {CATEGORIES.map(cat => ( + + ))} +
+ + {/* Grid */} +
+ {filtered.map(partner => ( + + ))} +
+
+
+ ) +} + +export default Partners diff --git a/src/routes.tsx b/src/routes.tsx index 9bad865..4f1ad0d 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -4,6 +4,8 @@ import Home from './pages/Home' import Contact from './pages/Contact' import Settings from './pages/Settings' import NotFound from './pages/NotFound' +import Partners from './pages/Partners' +import About from './pages/About' import NewsRouteFallback from './components/common/NewsRouteFallback' const News = lazy(() => import('./pages/News')) @@ -34,6 +36,8 @@ const AppRouter = ({ isDarkMode }: AppRouterProps) => { } /> + } /> + } /> } /> } /> } /> diff --git a/src/types/partner.ts b/src/types/partner.ts new file mode 100644 index 0000000..815e354 --- /dev/null +++ b/src/types/partner.ts @@ -0,0 +1,11 @@ +export interface Partner { + name: string + logo: string + logo2x?: string + bannerLogo?: string + bannerLogo2x?: string + website?: string + description?: string + verticalType?: string + category?: string +} diff --git a/tailwind.config.js b/tailwind.config.js index c14f305..0b5c6bb 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -70,6 +70,15 @@ export default { 'form-card': '0px 8px 32px rgba(104, 106, 210, 0.33)', 'form-card-dark': '0px 8px 32px 0px #686AD2', }, + keyframes: { + marquee: { + '0%': { transform: 'translateX(0)' }, + '100%': { transform: 'translateX(-50%)' }, + }, + }, + animation: { + marquee: 'marquee 200s linear infinite', + }, backgroundImage: { 'overlay-light': 'linear-gradient(0deg, rgba(255, 255, 255, 0.66), rgba(255, 255, 255, 0.66)), linear-gradient(0deg, rgba(222, 228, 233, 0), rgba(222, 228, 233, 0))',