diff --git a/src/components/CreateWallet.jsx b/src/components/CreateWallet.jsx index 40617dc0..82cad3db 100644 --- a/src/components/CreateWallet.jsx +++ b/src/components/CreateWallet.jsx @@ -2,6 +2,7 @@ import React, { useState } from 'react' import * as rb from 'react-bootstrap' import { Link, useNavigate } from 'react-router-dom' import PageTitle from './PageTitle' +import ToggleSwitch from './ToggleSwitch' import { serialize, walletDisplayName } from '../utils' import { useCurrentWallet } from '../context/WalletContext' @@ -61,8 +62,8 @@ const WalletCreationForm = ({ createWallet, isCreating }) => { const WalletCreationConfirmation = ({ createdWallet, walletConfirmed }) => { const [userConfirmed, setUserConfirmed] = useState(false) - const onSwitch = (e) => { - setUserConfirmed(e.target.checked) + const onToggle = (isToggled) => { + setUserConfirmed(isToggled) } return ( @@ -79,9 +80,9 @@ const WalletCreationConfirmation = ({ createdWallet, walletConfirmed }) => {
Password
{createdWallet.password}

-

- -

+
+ +
{ + onToggle(e.target.checked) + } + + return ( + + ) +} diff --git a/src/components/ToggleSwitch.module.css b/src/components/ToggleSwitch.module.css new file mode 100644 index 00000000..e2e2e58d --- /dev/null +++ b/src/components/ToggleSwitch.module.css @@ -0,0 +1,50 @@ +/* Adapted from https://medium.com/front-end-weekly/build-a-css-only-toggle-switch-using-tailwindcss-d2739882934 */ + +.toggle-switch-label { + display: flex; + align-items: center; + justify-content: flex-start; + position: relative; +} + +.toggle-switch-input { + appearance: none; + position: absolute; + border-radius: 0.375rem; + top: 0px; + left: 0px; + width: 100%; + height: 100%; +} + +.toggle-switch { + width: 2.75rem; + height: 1.75rem; + display: flex; + align-items: center; + flex-shrink: 0; + padding: 0.25rem; + margin-right: 1rem; + background-color: rgba(222, 222, 222, 1); + border-radius: 9999px; +} + +.toggle-switch:after { + content: ''; + width: 1.25rem; + height: 1.25rem; + background-color: white; + border-radius: 9999px; + box-shadow: 0 3px 5px rgb(0, 0, 0, 0.25); + transition-duration: 300ms; +} + +.peer:checked ~ .toggle-switch { + background-color: rgba(39, 174, 96, 1); + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +.peer:checked ~ .toggle-switch:after { + transform: translateX(1rem); +}