From 11ca1ae7ba6066f3b24c55bf38cde5fb05d36644 Mon Sep 17 00:00:00 2001 From: Tobias Merkle Date: Wed, 27 Mar 2024 13:31:12 -0400 Subject: [PATCH] spruce the register flow --- kinode/packages/app_store/pkg/ui/index.html | 2 +- kinode/src/http/login.html | 9 -- kinode/src/register-ui/.gitignore | 1 + kinode/src/register-ui/.sample.env | 10 +++ kinode/src/register-ui/README.md | 12 +-- .../src/register-ui/build/asset-manifest.json | 14 ++-- kinode/src/register-ui/build/index.html | 2 +- .../build/static/css/main.5066fae5.css | 1 - ...inode.86d0c1a6a4a3ca3be41616b5989d6925.svg | 18 ---- .../logo.45dcb752ac5b825f5e3b9299d2210f0a.svg | 10 --- kinode/src/register-ui/package.json | 3 +- .../register-ui/src/components/ChainInfo.tsx | 8 +- .../register-ui/src/components/KnsHeader.tsx | 37 +++++---- .../register-ui/src/components/Tooltip.tsx | 16 +++- kinode/src/register-ui/src/index.css | 69 ++++++++++++++-- kinode/src/register-ui/src/input.css | 6 +- kinode/src/register-ui/src/pages/Login.tsx | 82 ++++++++----------- .../register-ui/src/pages/RegisterEthName.tsx | 19 ++--- .../src/register-ui/src/pages/ResetNode.tsx | 55 ++++--------- 19 files changed, 188 insertions(+), 186 deletions(-) create mode 100644 kinode/src/register-ui/.sample.env delete mode 100644 kinode/src/register-ui/build/static/css/main.5066fae5.css delete mode 100644 kinode/src/register-ui/build/static/media/kinode.86d0c1a6a4a3ca3be41616b5989d6925.svg delete mode 100644 kinode/src/register-ui/build/static/media/logo.45dcb752ac5b825f5e3b9299d2210f0a.svg diff --git a/kinode/packages/app_store/pkg/ui/index.html b/kinode/packages/app_store/pkg/ui/index.html index 903f9990..ae348735 100644 --- a/kinode/packages/app_store/pkg/ui/index.html +++ b/kinode/packages/app_store/pkg/ui/index.html @@ -15,7 +15,7 @@ - + diff --git a/kinode/src/http/login.html b/kinode/src/http/login.html index 105d6031..0c763e45 100644 --- a/kinode/src/http/login.html +++ b/kinode/src/http/login.html @@ -173,15 +173,6 @@ cursor: not-allowed; } - #signup-page { - width: 100%; - height: 100%; - flex: 1; - display: flex; - padding: 2em; - max-width: calc(100vw - 4em); - } - label { font-size: 0.8em; } diff --git a/kinode/src/register-ui/.gitignore b/kinode/src/register-ui/.gitignore index 652e780a..c3c68ffd 100644 --- a/kinode/src/register-ui/.gitignore +++ b/kinode/src/register-ui/.gitignore @@ -13,6 +13,7 @@ # misc .DS_Store +.env .env.local .env.development.local .env.test.local diff --git a/kinode/src/register-ui/.sample.env b/kinode/src/register-ui/.sample.env new file mode 100644 index 00000000..dd92abca --- /dev/null +++ b/kinode/src/register-ui/.sample.env @@ -0,0 +1,10 @@ +# local +REACT_APP_INVITE_GET= +REACT_APP_BUILD_USER_OP_POST= +REACT_APP_BROADCAST_USER_OP_POST= + +REACT_APP_SEPOLIA_RPC_URL= +REACT_APP_OPTIMISM_RPC_URL= +REACT_APP_MAINNET_RPC_URL= +DANGEROUSLY_DISABLE_HOST_CHECK=true # needed for local development + diff --git a/kinode/src/register-ui/README.md b/kinode/src/register-ui/README.md index 05c4d94c..bcbeabdf 100644 --- a/kinode/src/register-ui/README.md +++ b/kinode/src/register-ui/README.md @@ -4,15 +4,15 @@ This app is compiled and put into the root directory of every Kinode node for lo ## Development 1. Run `yarn` to install dependencies -2. Run `yarn run tc` to generate ABIs -3. Start a kinode locally on port 8080 (default) -3. Run `yarn start` to serve the UI at http://localhost:3000 (proxies requests to local kinode) +1. Run `yarn run tc` to generate ABIs +1. Start a kinode locally on port 8080 (default) +1. Run `yarn start` to serve the UI at http://localhost:3000 (proxies requests to local kinode) If you would like to proxy requests to a kinode that is not at http://localhost:8080, change the `proxy` field in `package.json`. ## Building 1. Run `yarn` to install dependencies -2. Run `yarn run tc` to generate ABIs -3. Run `yarn build` to generate the `./build` folder -4. Overwrite `kinode/kinode/src/register-ui/build` with `./build` +1. Run `yarn run tc` to generate ABIs +1. Run `yarn build` to generate the `./build` folder +1. Overwrite `kinode/kinode/src/register-ui/build` with `./build` diff --git a/kinode/src/register-ui/build/asset-manifest.json b/kinode/src/register-ui/build/asset-manifest.json index adcadd56..412447ac 100644 --- a/kinode/src/register-ui/build/asset-manifest.json +++ b/kinode/src/register-ui/build/asset-manifest.json @@ -1,15 +1,17 @@ { "files": { - "main.css": "/static/css/main.5066fae5.css", - "main.js": "/static/js/main.5a1b6086.js", + "main.css": "/static/css/main.72c02557.css", + "main.js": "/static/js/main.6d54da2b.js", + "static/media/OpenSans-CondBold.ttf": "/static/media/OpenSans-CondBold.6293057f8484b6c0da03.ttf", + "static/media/BarlowCondensed-Black.ttf": "/static/media/BarlowCondensed-Black.3ba02bbdeb04e17f34bf.ttf", + "static/media/Futura-Heavy.ttf": "/static/media/Futura-Heavy.af72c25a6945b0f48abb.ttf", "static/media/unknown.png": "/static/media/unknown.880d04d4611a45ab1001.png", "static/media/background.jpg": "/static/media/background.01d2427cfc21fb685016.jpg", - "static/media/kinode.svg": "/static/media/kinode.86d0c1a6a4a3ca3be41616b5989d6925.svg", "index.html": "/index.html", - "static/media/logo.svg": "/static/media/logo.45dcb752ac5b825f5e3b9299d2210f0a.svg" + "static/media/kinode.svg": "/static/media/kinode.6b178bc9164b31d90099844a82d04497.svg" }, "entrypoints": [ - "static/css/main.5066fae5.css", - "static/js/main.5a1b6086.js" + "static/css/main.72c02557.css", + "static/js/main.6d54da2b.js" ] } \ No newline at end of file diff --git a/kinode/src/register-ui/build/index.html b/kinode/src/register-ui/build/index.html index 6b5ad06f..3f725b6c 100644 --- a/kinode/src/register-ui/build/index.html +++ b/kinode/src/register-ui/build/index.html @@ -1 +1 @@ -Welcome - Kinode
\ No newline at end of file +Welcome - Kinode
\ No newline at end of file diff --git a/kinode/src/register-ui/build/static/css/main.5066fae5.css b/kinode/src/register-ui/build/static/css/main.5066fae5.css deleted file mode 100644 index 7cd01d73..00000000 --- a/kinode/src/register-ui/build/static/css/main.5066fae5.css +++ /dev/null @@ -1 +0,0 @@ -:root{--text-light:#fff5d9;--text-dark:#22211f;--text-orange:#ff7533;--orange-light:#f36822;--orange-medium:#f35422;--medium-gray:7E7E7E;--gray-button:hsla(45,89%,93%,.25);--input-background:rgba(243,84,34,.25)}body{background-color:hsla(45,89%,93%,.25);background-color:var(--gray-button);background:url(/static/media/background.01d2427cfc21fb685016.jpg) no-repeat 50% fixed;background-size:cover;color:#fff5d9;color:var(--text-light);font-size:16px;font-weight:400;height:100vh;margin:0;width:100vw}a,body,button,h1,h2,h3,h4,h5,h6,input,p{font-family:Barlow Condensed,sans-serif}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.5em;margin:0}h1{font-size:64px}h2{font-size:48px}h3{font-size:36px}h4{font-size:24px}h5{font-size:20px}h6{font-size:16px}.col{flex-direction:column}.col,.row{align-items:center;display:flex}.row{flex-direction:row}input{all:unset}input[type=checkbox],input[type=password],input[type=text]{background-color:rgba(243,84,34,.25);background-color:var(--input-background);border:1px solid #f35422;border:1px solid var(--orange-medium);border-radius:8px;box-sizing:border-box;color:#fff5d9;color:var(--text-light);font-size:1em;padding:1em}input[type=password],input[type=text]{width:100%}input[type=checkbox]{cursor:pointer;height:28px;padding:.25em .8em}input[type=checkbox]:checked{background-color:#f35422;background-color:var(--orange-medium)}.checkmark{cursor:pointer;font-size:24px;left:4px;position:absolute;top:-1px}::-webkit-input-placeholder{color:#fff5d9;color:var(--text-light)}::placeholder{color:#fff5d9;color:var(--text-light)}::-webkit-input-placeholder::-webkit-input-placeholder{color:#fff5d9;color:var(--text-light)}::-webkit-input-placeholder::placeholder{color:#fff5d9;color:var(--text-light)}::-moz-placeholder::placeholder{color:#fff5d9;color:var(--text-light)}::-ms-input-placeholder{color:#fff5d9;color:var(--text-light)}label{font-size:20px}button{background:#f35422;background:var(--orange-medium);border:1px solid #f35422;border-color:var(--orange-medium);border-radius:8px;box-shadow:0 1px 2px #f36822;box-shadow:0 1px 2px var(--orange-light);box-sizing:border-box;color:#fff5d9;color:var(--text-light);cursor:pointer;font-size:1.125em;font-weight:500;margin:0;padding:.75em 1em;transition:all .1s;width:100%}button.alt{background-color:#fff5d9;background-color:var(--text-light);border-color:#fff5d9;border-color:var(--text-light);box-shadow:0 1px 2px #fff5d9;box-shadow:0 1px 2px var(--text-light);color:#22211f;color:var(--text-dark)}button:hover{box-shadow:none;opacity:.9}button:disabled{background-color:70000000E7E;background-color:var(--medium-gray);border:70000000e7e solid;border:1px solid var(--medium-gray);box-shadow:0 1px 2px 70000000E7E;box-shadow:0 1px 2px var(--medium-gray);cursor:not-allowed;opacity:.7}#signup-page{display:flex;flex:1 1;height:100vh;justify-content:center}.key-err{color:red;font-size:20px;margin-top:.5em;text-align:center;word-break:break-all}.label-row,.login-row{align-self:flex-start}.label-row{margin:.5em 0}.tooltip-container{cursor:pointer;display:inline-block;position:relative}.tooltip-button{font-size:16px;height:1em;line-height:.5em;margin-left:.5em;padding:4px 2px 0;text-align:center;width:1em}.tooltip-button,.tooltip-button.chain{border:2px solid #fff;border-radius:50%}.tooltip-button.chain{height:1.5em;margin:0 0 0 1em;padding:0;width:1.5em}.tooltip-button.chain img{height:100%;width:100%}.tooltip-content{background-color:#555;border-radius:6px;color:#fff;font-size:1rem;font-weight:500;left:50%;line-height:1.5em;margin-left:-60px;min-width:200px;opacity:0;padding:.5em;position:absolute;text-align:center;top:125%;transition:opacity .3s;visibility:hidden;z-index:1}.tooltip-content.left{left:auto;right:0}.tooltip-content:after{border:5px solid transparent;border-bottom-color:#555;bottom:100%;content:"";left:30%;margin-left:-5px;position:absolute}.tooltip-container:hover .tooltip-content{opacity:1;visibility:visible}.sepolia{-webkit-filter:grayscale(100%);filter:grayscale(100%)}#signup-form{gap:32px;max-width:calc(100vw - 2em);padding:1em;width:calc(420px + 2em)}#signup-form-header{margin-bottom:1em}#signup-form-header button{max-width:calc(100vw - 2em);width:calc(420px + 2em)}#current-address{font-family:Courier New,Courier,monospace;font-size:1.25em;font-weight:600;margin-left:1em}.current-username{border:1px solid #fff;border-radius:4px;cursor:pointer;margin:1em 0;padding:.5em}.current-username:hover{background-color:#fff;border:1px solid #fff;color:#027}#connect-wallet{max-width:420px}#wallet-required-message{line-height:1.5em;max-width:500px;text-align:center}#loading h3{text-align:center}#loader{display:inline-block;height:48px;margin-top:16px;position:relative;width:48px}#loader div{-webkit-animation:loader 1.2s cubic-bezier(.5,0,.5,1) infinite;animation:loader 1.2s cubic-bezier(.5,0,.5,1) infinite;border:6px solid transparent;border-radius:50%;border-top-color:#fff;box-sizing:border-box;display:block;height:36px;margin:6px;position:absolute;width:36px}#loader div:first-child{-webkit-animation-delay:-.45s;animation-delay:-.45s}#loader div:nth-child(2){-webkit-animation-delay:-.3s;animation-delay:-.3s}#loader div:nth-child(3){-webkit-animation-delay:-.15s;animation-delay:-.15s}@-webkit-keyframes loader{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loader{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.connect-modal{align-items:center;display:flex;justify-content:center}.connect-modal-content{background:#027;border-radius:15px;height:200px;padding:20px;position:fixed;top:120px;width:400px}.overlay-modal{background-color:hsla(0,0%,100%,.25);inset:0;position:fixed}.signup-form{max-width:400px;width:50vw}.direct-node-message{line-height:1.5em;margin-left:2em}.name-validity{color:red}.more-info-direct{cursor:pointer;margin:0 1em;text-decoration:underline}.more-info-direct:hover{color:#f36822;color:var(--orange-light)}a{color:#f35422;color:var(--orange-medium);text-decoration:none}a:hover{color:#f36822;color:var(--orange-light)}.reset-networking{cursor:pointer;font-size:1.25em;margin-left:.5em;margin-top:1em;text-decoration:underline;width:100%}.reset-networking:hover{color:#f36822;color:var(--orange-light)}.name-err{color:red;line-height:1.5em;margin-bottom:1em}.chain-button{align-items:center;background-color:hsla(45,89%,93%,.25);background-color:var(--gray-button);border:none;border-radius:2.5em;box-shadow:none;color:#fff5d9;color:var(--text-light);display:flex;flex-direction:row;font-family:Barlow Condensed,sans-serif;font-weight:300;justify-content:center;margin:0;padding:.4em .25em}.chain-button:hover{opacity:.9}.chain-button.monospace{font-family:Courier New,Courier,monospace}.network-icon{height:1.5em;margin-right:.5em;width:1.5em}.os{margin-left:.2em} \ No newline at end of file diff --git a/kinode/src/register-ui/build/static/media/kinode.86d0c1a6a4a3ca3be41616b5989d6925.svg b/kinode/src/register-ui/build/static/media/kinode.86d0c1a6a4a3ca3be41616b5989d6925.svg deleted file mode 100644 index 0ce39f9c..00000000 --- a/kinode/src/register-ui/build/static/media/kinode.86d0c1a6a4a3ca3be41616b5989d6925.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/kinode/src/register-ui/build/static/media/logo.45dcb752ac5b825f5e3b9299d2210f0a.svg b/kinode/src/register-ui/build/static/media/logo.45dcb752ac5b825f5e3b9299d2210f0a.svg deleted file mode 100644 index ebbfb449..00000000 --- a/kinode/src/register-ui/build/static/media/logo.45dcb752ac5b825f5e3b9299d2210f0a.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/kinode/src/register-ui/package.json b/kinode/src/register-ui/package.json index 0a4f2a4c..45946da8 100644 --- a/kinode/src/register-ui/package.json +++ b/kinode/src/register-ui/package.json @@ -2,6 +2,7 @@ "name": "register", "version": "0.1.0", "private": true, + "proxy": "http://localhost:8080", "dependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@ethersproject/hash": "^5.7.0", @@ -69,4 +70,4 @@ "@types/react-modal": "^3.16.2", "inline-source-cli": "^2.0.0" } -} +} \ No newline at end of file diff --git a/kinode/src/register-ui/src/components/ChainInfo.tsx b/kinode/src/register-ui/src/components/ChainInfo.tsx index a535ab37..3507998d 100644 --- a/kinode/src/register-ui/src/components/ChainInfo.tsx +++ b/kinode/src/register-ui/src/components/ChainInfo.tsx @@ -49,7 +49,6 @@ function ChainInfo({ className="network-icon" src={sepoliaLogo} alt={networkName} - style={{ filter: "grayscale(100%)" }} /> ); default: @@ -58,7 +57,6 @@ function ChainInfo({ className="network-icon" src={unknownLogo} alt={networkName} - style={{ filter: "grayscale(100%)" }} /> ); } @@ -75,7 +73,7 @@ function ChainInfo({ {/* TODO: prompt to change address */} diff --git a/kinode/src/register-ui/src/components/KnsHeader.tsx b/kinode/src/register-ui/src/components/KnsHeader.tsx index dadd29b9..97531955 100644 --- a/kinode/src/register-ui/src/components/KnsHeader.tsx +++ b/kinode/src/register-ui/src/components/KnsHeader.tsx @@ -78,14 +78,18 @@ function KinodeHeader({ {(nodeChainId === SEPOLIA_OPT_HEX || nodeChainId === OPTIMISM_OPT_HEX) && ( ) : nodeChainId === OPTIMISM_OPT_HEX ? ( optimism ) : null} @@ -96,12 +100,9 @@ function KinodeHeader({ : ''} /> )} -
- {header} -
{!hideConnect && (
{isActive && account ? ( ) : ( -
-
- You must connect to a browser wallet to continue +
+
+ {!isActivating && 'You must connect to a browser wallet to continue.'} + + {isActivating ? ( + + ) : ( + + )}
- {isActivating ? ( - - ) : ( - - )} {nodeChainId === SEPOLIA_OPT_HEX && (
- Kinode is currently on the Sepolia Testnet, if you need - testnet ETH, you can get some from the{" "} + Kinode is currently on the Sepolia Testnet. - Sepolia Faucet + Get Testnet ETH
)} @@ -139,6 +141,9 @@ function KinodeHeader({ )}
)} +
+ {header} +
); diff --git a/kinode/src/register-ui/src/components/Tooltip.tsx b/kinode/src/register-ui/src/components/Tooltip.tsx index 20845418..ae18f6f6 100644 --- a/kinode/src/register-ui/src/components/Tooltip.tsx +++ b/kinode/src/register-ui/src/components/Tooltip.tsx @@ -5,11 +5,13 @@ import { FaQuestion } from 'react-icons/fa6' interface TooltipProps { text: string button?: React.ReactNode + className?: string + position?: "top" | "bottom" | "left" | "right" } -export const Tooltip: React.FC = ({ text, button }) => { +export const Tooltip: React.FC = ({ text, button, className, position }) => { const [showTooltip, setShowTooltip] = useState(false) - return
+ return
setShowTooltip(!showTooltip)}> {button || }
-
+
{text}
} - diff --git a/kinode/src/register-ui/src/index.css b/kinode/src/register-ui/src/index.css index 5340e8be..c705a879 100644 --- a/kinode/src/register-ui/src/index.css +++ b/kinode/src/register-ui/src/index.css @@ -694,6 +694,10 @@ button:hover { position: absolute; } +.\!absolute { + position: absolute !important; +} + .relative { position: relative; } @@ -706,6 +710,26 @@ button:hover { top: 4rem; } +.right-8 { + right: 2rem; +} + +.top-8 { + top: 2rem; +} + +.bottom-16 { + bottom: 4rem; +} + +.left-16 { + left: 4rem; +} + +.right-16 { + right: 4rem; +} + .z-10 { z-index: 10; } @@ -720,6 +744,11 @@ button:hover { margin-bottom: 0.5rem; } +.my-4 { + margin-top: 1rem; + margin-bottom: 1rem; +} + .my-8 { margin-top: 2rem; margin-bottom: 2rem; @@ -737,6 +766,10 @@ button:hover { margin-bottom: 1rem; } +.mb-8 { + margin-bottom: 2rem; +} + .ml-2 { margin-left: 0.5rem; } @@ -753,6 +786,10 @@ button:hover { margin-right: 1rem; } +.mt-1 { + margin-top: 0.25rem; +} + .mt-2 { margin-top: 0.5rem; } @@ -781,10 +818,6 @@ button:hover { height: 100vh; } -.w-\[400px\] { - width: 400px; -} - .w-full { width: 100%; } @@ -805,14 +838,14 @@ button:hover { max-width: 460px; } -.max-w-\[500px\] { - max-width: 500px; -} - .max-w-\[50vw\] { max-width: 50vw; } +.shrink { + flex-shrink: 1; +} + .grow { flex-grow: 1; } @@ -833,6 +866,10 @@ button:hover { place-items: center; } +.gap-2 { + gap: 0.5rem; +} + .gap-4 { gap: 1rem; } @@ -889,6 +926,15 @@ button:hover { line-height: 1.25rem; } +.text-2xl { + font-size: 1.5rem; + line-height: 2rem; +} + +.font-bold { + font-weight: 700; +} + .leading-6 { line-height: 1.5rem; } @@ -1024,4 +1070,11 @@ button:disabled { .network-icon { height: 2rem; width: 2rem; + --tw-grayscale: grayscale(1); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +} + +.c { + place-content: center; + place-items: center; } \ No newline at end of file diff --git a/kinode/src/register-ui/src/input.css b/kinode/src/register-ui/src/input.css index 83b062a2..5a87003c 100644 --- a/kinode/src/register-ui/src/input.css +++ b/kinode/src/register-ui/src/input.css @@ -142,5 +142,9 @@ button:disabled { } .network-icon { - @apply h-8 w-8; + @apply h-8 w-8 filter grayscale-[1]; +} + +.c { + @apply place-items-center place-content-center; } \ No newline at end of file diff --git a/kinode/src/register-ui/src/pages/Login.tsx b/kinode/src/register-ui/src/pages/Login.tsx index b084a45b..d67ee25a 100644 --- a/kinode/src/register-ui/src/pages/Login.tsx +++ b/kinode/src/register-ui/src/pages/Login.tsx @@ -10,6 +10,7 @@ import { ipToNumber } from "../utils/ipToNumber"; import { downloadKeyfile } from "../utils/download-keyfile"; import DirectCheckbox from "../components/DirectCheckbox"; import { useNavigate } from "react-router-dom"; +import { Tooltip } from "../components/Tooltip"; const { useProvider } = hooks; @@ -186,7 +187,7 @@ function Login({ return ( <> Login to Kinode} + header={

Login to Kinode

} openConnect={openConnect} closeConnect={closeConnect} hideConnect={!showReset} @@ -195,78 +196,68 @@ function Login({ {loading ? ( ) : ( -
-
-
- {" "} - Login as {knsName}{" "} + +
+
+ + {knsName} + + + ({isDirect ? "direct" : "indirect"} node) +
- setPw(e.target.value)} autoFocus + className="self-stretch" />
-
+ {keyErrs.length > 0 &&
{keyErrs.map((x, i) => ( -
+
{x}
))} -
+
} -
- - {/* */} -
- Registered as {isDirect ? "a direct" : "an indirect"} node -
-
{reset ? "Reset & " : ""} Login + +
+
-
+
+ {showReset && (
-
-
+
+
setReset(e.target.checked)} autoFocus + className="mr-2" /> {reset && ( Reset networking keys and publish on-chain -
-
-
- This will update your networking keys and publish the new - info on-chain -
-
+
diff --git a/kinode/src/register-ui/src/pages/RegisterEthName.tsx b/kinode/src/register-ui/src/pages/RegisterEthName.tsx index 235a5dca..d2c17bc8 100644 --- a/kinode/src/register-ui/src/pages/RegisterEthName.tsx +++ b/kinode/src/register-ui/src/pages/RegisterEthName.tsx @@ -179,29 +179,22 @@ function RegisterEthName({ <> - Register - - Name - +

+ Register Kinode Name +

} openConnect={openConnect} closeConnect={closeConnect} nodeChainId={nodeChainId === OPTIMISM_OPT_HEX ? MAINNET_OPT_HEX : nodeChainId} /> {Boolean(provider) && ( - + {loading ? ( ) : ( <> -
-