diff --git a/apps/customer_dashboard/src/components/dashboard_header/dashboard_header.tsx b/apps/customer_dashboard/src/components/dashboard_header/dashboard_header.tsx index 0f24dc6fe..ac026ce76 100644 --- a/apps/customer_dashboard/src/components/dashboard_header/dashboard_header.tsx +++ b/apps/customer_dashboard/src/components/dashboard_header/dashboard_header.tsx @@ -1,9 +1,9 @@ -import React from "react"; +import { type FC } from "react"; import { Logo } from "@oko-wallet/oko-common-ui/logo"; import styles from "./dashboard_header.module.scss"; -export const DashboardHeader: React.FC = () => { +export const DashboardHeader: FC = () => { return (
{/* NOTE: theme is hardcoded to light for now */} diff --git a/apps/customer_dashboard/src/components/info_modal/info_modal.tsx b/apps/customer_dashboard/src/components/info_modal/info_modal.tsx index 0243d614e..cd372547b 100644 --- a/apps/customer_dashboard/src/components/info_modal/info_modal.tsx +++ b/apps/customer_dashboard/src/components/info_modal/info_modal.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useState } from "react"; +import { useState, type FC } from "react"; import { Card } from "@oko-wallet/oko-common-ui/card"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; @@ -14,7 +14,7 @@ interface InfoModalProps { renderTrigger: (props: { onOpen: () => void }) => React.ReactNode; } -export const InfoModal: React.FC = ({ +export const InfoModal: FC = ({ title, content, renderTrigger, diff --git a/apps/customer_dashboard/src/components/reset_password/reset_password.tsx b/apps/customer_dashboard/src/components/reset_password/reset_password.tsx index ff4688280..4a10a2697 100644 --- a/apps/customer_dashboard/src/components/reset_password/reset_password.tsx +++ b/apps/customer_dashboard/src/components/reset_password/reset_password.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useState } from "react"; +import { useState, type FC } from "react"; import { EyeIcon } from "@oko-wallet/oko-common-ui/icons/eye"; import { EyeOffIcon } from "@oko-wallet/oko-common-ui/icons/eye_off"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; @@ -11,7 +11,7 @@ import { AccountForm } from "@oko-wallet-ct-dashboard/ui"; import { useResetPasswordForm } from "./use_reset_password_form"; import styles from "./reset_password.module.scss"; -export const ResetPassword: React.FC = () => { +export const ResetPassword: FC = () => { const { onSubmit, register, errors, isLoading, isValid } = useResetPasswordForm(); diff --git a/apps/customer_dashboard/src/components/sign_in_form/sign_in_form.tsx b/apps/customer_dashboard/src/components/sign_in_form/sign_in_form.tsx index 9d169ba82..4348241d7 100644 --- a/apps/customer_dashboard/src/components/sign_in_form/sign_in_form.tsx +++ b/apps/customer_dashboard/src/components/sign_in_form/sign_in_form.tsx @@ -1,6 +1,6 @@ "use client"; -import React from "react"; +import type { FC } from "react"; import { Input } from "@oko-wallet/oko-common-ui/input"; import { Card } from "@oko-wallet/oko-common-ui/card"; import { Logo } from "@oko-wallet/oko-common-ui/logo"; @@ -14,7 +14,7 @@ import styles from "./sign_in_form.module.scss"; import { useSignInForm } from "./use_sign_in_form"; import { GET_STARTED_URL } from "@oko-wallet-ct-dashboard/constants"; -export const SignInForm: React.FC = () => { +export const SignInForm: FC = () => { const { onSubmit, register, diff --git a/apps/customer_dashboard/src/components/sign_up_digits/sign_up_digits.tsx b/apps/customer_dashboard/src/components/sign_up_digits/sign_up_digits.tsx index ecdd7510c..c5128d22b 100644 --- a/apps/customer_dashboard/src/components/sign_up_digits/sign_up_digits.tsx +++ b/apps/customer_dashboard/src/components/sign_up_digits/sign_up_digits.tsx @@ -1,6 +1,6 @@ "use client"; -import React from "react"; +import { type FC } from "react"; import { OtpInput } from "@oko-wallet/oko-common-ui/otp_input"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; @@ -10,7 +10,7 @@ import { ResendCode } from "../resend_code/resend_code"; import { ExpiryTimer } from "../expiry_timer/expiry_timer"; import { EMAIL_VERIFICATION_TIMER_SECONDS } from "@oko-wallet-ct-dashboard/constants"; -export const SignUpDigits: React.FC = () => { +export const SignUpDigits: FC = () => { const { digits, handleDigitsChange, diff --git a/apps/demo_web/src/components/oko_provider/oko_provider.tsx b/apps/demo_web/src/components/oko_provider/oko_provider.tsx index acf6553b3..3bb8305a3 100644 --- a/apps/demo_web/src/components/oko_provider/oko_provider.tsx +++ b/apps/demo_web/src/components/oko_provider/oko_provider.tsx @@ -1,10 +1,10 @@ "use client"; -import React, { type PropsWithChildren } from "react"; +import { type FC, type PropsWithChildren } from "react"; import { useInitOko } from "./use_oko"; -export const OkoProvider: React.FC = ({ children }) => { +export const OkoProvider: FC = ({ children }) => { useInitOko(); return <>{children}; diff --git a/apps/demo_web/src/components/preview_panel/preview_panel.tsx b/apps/demo_web/src/components/preview_panel/preview_panel.tsx index 6c7a2d894..ef783b609 100644 --- a/apps/demo_web/src/components/preview_panel/preview_panel.tsx +++ b/apps/demo_web/src/components/preview_panel/preview_panel.tsx @@ -1,6 +1,7 @@ "use client"; import cn from "classnames"; +import type { FC } from "react"; import { Skeleton } from "@oko-wallet/oko-common-ui/skeleton"; import styles from "./preview_panel.module.scss"; @@ -14,7 +15,7 @@ import { EthereumOffchainSignWidget } from "@oko-wallet-demo-web/components/widg import { useUserInfoState } from "@oko-wallet-demo-web/state/user_info"; import { useSDKState } from "@oko-wallet-demo-web/state/sdk"; -export const PreviewPanel: React.FC = () => { +export const PreviewPanel: FC = () => { const isLazyInitialized = useSDKState( (st) => st.isCosmosLazyInitialized && st.isEthLazyInitialized, ); diff --git a/apps/demo_web/src/components/widgets/account_widget/account_info_widget.tsx b/apps/demo_web/src/components/widgets/account_widget/account_info_widget.tsx index 1a0f54079..02ba46e62 100644 --- a/apps/demo_web/src/components/widgets/account_widget/account_info_widget.tsx +++ b/apps/demo_web/src/components/widgets/account_widget/account_info_widget.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type { FC } from "react"; import { GoogleIcon } from "@oko-wallet/oko-common-ui/icons/google_icon"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; @@ -21,7 +21,7 @@ export type AccountInfoWidgetProps = { onSignOut: () => void; }; -export const AccountInfoWidget: React.FC = ({ +export const AccountInfoWidget: FC = ({ type, email, publicKey, diff --git a/apps/demo_web/src/components/widgets/account_widget/account_widget.tsx b/apps/demo_web/src/components/widgets/account_widget/account_widget.tsx index bf1a91530..8a3b6f87b 100644 --- a/apps/demo_web/src/components/widgets/account_widget/account_widget.tsx +++ b/apps/demo_web/src/components/widgets/account_widget/account_widget.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useState, type FC } from "react"; import type { AuthType } from "@oko-wallet/oko-types/auth"; import { useSDKState } from "@oko-wallet-demo-web/state/sdk"; import { useUserInfoState } from "@oko-wallet-demo-web/state/user_info"; @@ -22,7 +22,7 @@ function authTypeToLoginMethod(authType: AuthType | null): LoginMethod { return authType; } -export const AccountWidget: React.FC = () => { +export const AccountWidget: FC = () => { const okoWallet = useSDKState((state) => state.oko_cosmos)?.okoWallet; const [signingInState, setSigningInState] = useState({ status: "ready", diff --git a/apps/demo_web/src/components/widgets/account_widget/auth_progress_widget.tsx b/apps/demo_web/src/components/widgets/account_widget/auth_progress_widget.tsx index 0cd84e862..a3e60a09f 100644 --- a/apps/demo_web/src/components/widgets/account_widget/auth_progress_widget.tsx +++ b/apps/demo_web/src/components/widgets/account_widget/auth_progress_widget.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type { FC } from "react"; import cn from "classnames"; import { GoogleIcon } from "@oko-wallet/oko-common-ui/icons/google_icon"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; @@ -20,7 +20,7 @@ type AuthProgressWidgetProps = { onRetry?: () => void; }; -export const AuthProgressWidget: React.FC = ({ +export const AuthProgressWidget: FC = ({ method, status = "loading", onRetry, diff --git a/apps/demo_web/src/components/widgets/account_widget/spinner.tsx b/apps/demo_web/src/components/widgets/account_widget/spinner.tsx index 6570067ba..2121b8d23 100644 --- a/apps/demo_web/src/components/widgets/account_widget/spinner.tsx +++ b/apps/demo_web/src/components/widgets/account_widget/spinner.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type { FC } from "react"; import styles from "./spinner.module.scss"; @@ -8,7 +8,7 @@ interface SpinnerProps { status?: "loading" | "failed"; } -export const Spinner: React.FC = ({ +export const Spinner: FC = ({ size = 62, className, status = "loading", diff --git a/apps/demo_web/src/components/widgets/account_widget/wallet_box.tsx b/apps/demo_web/src/components/widgets/account_widget/wallet_box.tsx index 10fafb8a6..7b3f91cf0 100644 --- a/apps/demo_web/src/components/widgets/account_widget/wallet_box.tsx +++ b/apps/demo_web/src/components/widgets/account_widget/wallet_box.tsx @@ -1,9 +1,9 @@ -import React, { type ReactElement } from "react"; +import { type FC, type ReactElement } from "react"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; import styles from "./wallet_box.module.scss"; -export const WalletBox: React.FC = ({ icon, label }) => { +export const WalletBox: FC = ({ icon, label }) => { return (
{icon} diff --git a/apps/demo_web/src/components/widgets/address_widget/address_row.tsx b/apps/demo_web/src/components/widgets/address_widget/address_row.tsx index 09180f299..344f3bed1 100644 --- a/apps/demo_web/src/components/widgets/address_widget/address_row.tsx +++ b/apps/demo_web/src/components/widgets/address_widget/address_row.tsx @@ -1,14 +1,10 @@ -import React, { type ReactElement } from "react"; +import { type FC, type ReactElement } from "react"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; import { Tooltip } from "@oko-wallet/oko-common-ui/tooltip"; import styles from "./address_row.module.scss"; -export const AddressRow: React.FC = ({ - icon, - chain, - address, -}) => { +export const AddressRow: FC = ({ icon, chain, address }) => { const isLoggedIn = !!address; const label = chain === "ethereum" ? "Ethereum" : "Cosmos Hub"; const prefix = chain === "ethereum" ? "0x" : "cosmos1"; diff --git a/apps/demo_web/src/components/widgets/address_widget/address_widget.tsx b/apps/demo_web/src/components/widgets/address_widget/address_widget.tsx index 1710aa165..6b4fb7358 100644 --- a/apps/demo_web/src/components/widgets/address_widget/address_widget.tsx +++ b/apps/demo_web/src/components/widgets/address_widget/address_widget.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useState, type FC } from "react"; import { CosmosIcon } from "@oko-wallet/oko-common-ui/icons/cosmos_icon"; import { EthereumBlueIcon } from "@oko-wallet/oko-common-ui/icons/ethereum_blue_icon"; import { WalletIcon } from "@oko-wallet/oko-common-ui/icons/wallet"; @@ -13,7 +13,7 @@ import { ViewChainsModal } from "./view_chains_modal"; import { useAddresses } from "@oko-wallet-demo-web/hooks/wallet"; import { useGetChainInfos } from "@oko-wallet-demo-web/hooks/use_get_chain_infos"; -export const AddressWidget: React.FC = ({}) => { +export const AddressWidget: FC = ({}) => { const [showModal, setShowModal] = useState(false); const { cosmosAddress, ethAddress } = useAddresses(); diff --git a/apps/demo_web/src/components/widgets/address_widget/chains_row.tsx b/apps/demo_web/src/components/widgets/address_widget/chains_row.tsx index 033eafd37..9418de3e0 100644 --- a/apps/demo_web/src/components/widgets/address_widget/chains_row.tsx +++ b/apps/demo_web/src/components/widgets/address_widget/chains_row.tsx @@ -1,4 +1,4 @@ -import React, { type ReactElement } from "react"; +import { type FC, type ReactElement } from "react"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; import styles from "./chains_row.module.scss"; @@ -8,7 +8,7 @@ export interface ChainsRowProps { icon: ReactElement; } -export const ChainsRow: React.FC = ({ chainName, icon }) => { +export const ChainsRow: FC = ({ chainName, icon }) => { return (
{icon} diff --git a/apps/demo_web/src/components/widgets/address_widget/view_chains_button.tsx b/apps/demo_web/src/components/widgets/address_widget/view_chains_button.tsx index 096a7cea3..c4f424285 100644 --- a/apps/demo_web/src/components/widgets/address_widget/view_chains_button.tsx +++ b/apps/demo_web/src/components/widgets/address_widget/view_chains_button.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type { FC } from "react"; import { CosmosIcon } from "@oko-wallet/oko-common-ui/icons/cosmos_icon"; import { EthereumBlueIcon } from "@oko-wallet/oko-common-ui/icons/ethereum_blue_icon"; import { OsmosisIcon } from "@oko-wallet/oko-common-ui/icons/osmosis_icon"; @@ -6,7 +6,7 @@ import { Button } from "@oko-wallet/oko-common-ui/button"; import styles from "./view_chains_button.module.scss"; -export const ViewChainsButton: React.FC = ({ +export const ViewChainsButton: FC = ({ buttonVariant, onClick, }) => { diff --git a/apps/demo_web/src/components/widgets/address_widget/view_chains_modal.tsx b/apps/demo_web/src/components/widgets/address_widget/view_chains_modal.tsx index 2a781537d..6f359fc6d 100644 --- a/apps/demo_web/src/components/widgets/address_widget/view_chains_modal.tsx +++ b/apps/demo_web/src/components/widgets/address_widget/view_chains_modal.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useState, type FC } from "react"; import type { ChainInfo } from "@keplr-wallet/types"; import { SearchIcon } from "@oko-wallet/oko-common-ui/icons/search"; import { XCloseIcon } from "@oko-wallet/oko-common-ui/icons/x_close"; @@ -8,7 +8,7 @@ import cn from "classnames"; import styles from "./view_chains_modal.module.scss"; import { ChainsRow } from "./chains_row"; -export const ViewChainsModal: React.FC = ({ +export const ViewChainsModal: FC = ({ onClose, chains, }) => { diff --git a/apps/demo_web/src/components/widgets/cosmos_offchain_sign_widget/cosmos_offchain_sign_widget.tsx b/apps/demo_web/src/components/widgets/cosmos_offchain_sign_widget/cosmos_offchain_sign_widget.tsx index 3bb2bb2e7..f49025ce2 100644 --- a/apps/demo_web/src/components/widgets/cosmos_offchain_sign_widget/cosmos_offchain_sign_widget.tsx +++ b/apps/demo_web/src/components/widgets/cosmos_offchain_sign_widget/cosmos_offchain_sign_widget.tsx @@ -1,4 +1,4 @@ -import React, { useCallback } from "react"; +import { useCallback } from "react"; import { CosmosIcon } from "@oko-wallet/oko-common-ui/icons/cosmos_icon"; import { SignWidget } from "@oko-wallet-demo-web/components/widgets/sign_widget/sign_widget"; diff --git a/apps/demo_web/src/components/widgets/cosmos_onchain_sign_widget/cosmos_onchain_sign_widget.tsx b/apps/demo_web/src/components/widgets/cosmos_onchain_sign_widget/cosmos_onchain_sign_widget.tsx index 838a9fa09..bf48aa6ba 100644 --- a/apps/demo_web/src/components/widgets/cosmos_onchain_sign_widget/cosmos_onchain_sign_widget.tsx +++ b/apps/demo_web/src/components/widgets/cosmos_onchain_sign_widget/cosmos_onchain_sign_widget.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState } from "react"; +import { useCallback, useState } from "react"; import { makeSignDoc as makeProtoSignDoc } from "@cosmjs/proto-signing"; import { makeSignDoc as makeAminoSignDoc } from "@cosmjs/amino"; import { diff --git a/apps/demo_web/src/components/widgets/docs_widget/docs_widget.tsx b/apps/demo_web/src/components/widgets/docs_widget/docs_widget.tsx index d880dff23..f82494e90 100644 --- a/apps/demo_web/src/components/widgets/docs_widget/docs_widget.tsx +++ b/apps/demo_web/src/components/widgets/docs_widget/docs_widget.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type { FC } from "react"; import { Button } from "@oko-wallet/oko-common-ui/button"; import { ArrowRightOutlinedIcon } from "@oko-wallet/oko-common-ui/icons/arrow_right_outlined"; import { BookOpenIcon } from "@oko-wallet/oko-common-ui/icons/book_open"; @@ -8,7 +8,7 @@ import { Widget } from "../widget_components"; import styles from "./docs_widget.module.scss"; import { useUserInfoState } from "@oko-wallet-demo-web/state/user_info"; -export const DocsWidget: React.FC = () => { +export const DocsWidget: FC = () => { const isSignedIn = useUserInfoState((state) => state.isSignedIn); const handleOpenDocs = () => { diff --git a/apps/demo_web/src/components/widgets/ethereum_offchain_sign_widget/ethereum_offchain_sign_widget.tsx b/apps/demo_web/src/components/widgets/ethereum_offchain_sign_widget/ethereum_offchain_sign_widget.tsx index fb5b8a4bb..089c25f63 100644 --- a/apps/demo_web/src/components/widgets/ethereum_offchain_sign_widget/ethereum_offchain_sign_widget.tsx +++ b/apps/demo_web/src/components/widgets/ethereum_offchain_sign_widget/ethereum_offchain_sign_widget.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { EthereumBlueIcon } from "@oko-wallet/oko-common-ui/icons/ethereum_blue_icon"; import { isAddressEqual, recoverMessageAddress } from "viem"; diff --git a/apps/demo_web/src/components/widgets/ethereum_onchain_sign_widget/ethereum_onchain_sign_widget.tsx b/apps/demo_web/src/components/widgets/ethereum_onchain_sign_widget/ethereum_onchain_sign_widget.tsx index 516f6975c..234925487 100644 --- a/apps/demo_web/src/components/widgets/ethereum_onchain_sign_widget/ethereum_onchain_sign_widget.tsx +++ b/apps/demo_web/src/components/widgets/ethereum_onchain_sign_widget/ethereum_onchain_sign_widget.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { EthereumBlueIcon } from "@oko-wallet/oko-common-ui/icons/ethereum_blue_icon"; import { parseTransaction, diff --git a/apps/demo_web/src/components/widgets/login_widget/login_widget.tsx b/apps/demo_web/src/components/widgets/login_widget/login_widget.tsx index 0c457b99d..6ef3a3f9c 100644 --- a/apps/demo_web/src/components/widgets/login_widget/login_widget.tsx +++ b/apps/demo_web/src/components/widgets/login_widget/login_widget.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useState, type FC } from "react"; import { Widget } from "../widget_components"; import styles from "./login_widget.module.scss"; @@ -10,7 +10,7 @@ export interface LoginWidgetProps { onSignIn: (method: LoginMethod) => void; } -export const LoginWidget: React.FC = ({ onSignIn }) => { +export const LoginWidget: FC = ({ onSignIn }) => { const [showSocials, setShowSocials] = useState(false); return ( diff --git a/apps/demo_web/src/components/widgets/sign_widget/sign_widget.tsx b/apps/demo_web/src/components/widgets/sign_widget/sign_widget.tsx index 5e296f959..92e6deaf1 100644 --- a/apps/demo_web/src/components/widgets/sign_widget/sign_widget.tsx +++ b/apps/demo_web/src/components/widgets/sign_widget/sign_widget.tsx @@ -1,4 +1,4 @@ -import React, { type ReactElement, useState, useRef, useEffect } from "react"; +import { type ReactElement, useState, useRef, useEffect, type FC } from "react"; import { Button } from "@oko-wallet/oko-common-ui/button"; import { InfoCircleIcon } from "@oko-wallet/oko-common-ui/icons/info_circle"; import { LoadingIcon } from "@oko-wallet/oko-common-ui/icons/loading"; @@ -10,7 +10,7 @@ import styles from "./sign_widget.module.scss"; type SignStep = "initial" | "loading" | "success" | "error"; -export const SignWidget: React.FC = ({ +export const SignWidget: FC = ({ chain, chainIcon, signType, diff --git a/apps/demo_web/src/components/widgets/user_data_widget/user_data_widget.tsx b/apps/demo_web/src/components/widgets/user_data_widget/user_data_widget.tsx index 1927a151b..c131fe13c 100644 --- a/apps/demo_web/src/components/widgets/user_data_widget/user_data_widget.tsx +++ b/apps/demo_web/src/components/widgets/user_data_widget/user_data_widget.tsx @@ -1,11 +1,11 @@ -import React from "react"; +import type { FC } from "react"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; import { CodeIcon } from "@oko-wallet/oko-common-ui/icons/code"; import { Widget } from "@oko-wallet-demo-web/components/widgets/widget_components"; import styles from "./user_data_widget.module.scss"; -export const UserDataWidget: React.FC = ({ userData }) => { +export const UserDataWidget: FC = ({ userData }) => { const isLoggedIn = !!userData; return ( diff --git a/apps/demo_web/src/components/widgets/widget_components.tsx b/apps/demo_web/src/components/widgets/widget_components.tsx index bd55a6196..99a538420 100644 --- a/apps/demo_web/src/components/widgets/widget_components.tsx +++ b/apps/demo_web/src/components/widgets/widget_components.tsx @@ -1,9 +1,9 @@ -import React, { type PropsWithChildren } from "react"; +import { type FC, type PropsWithChildren } from "react"; import cn from "classnames"; import styles from "./widget_components.module.scss"; -export const Widget: React.FC< +export const Widget: FC< PropsWithChildren<{ gradientBorder?: boolean; }> diff --git a/apps/oko_admin_web/src/components/account/account_info_base.tsx b/apps/oko_admin_web/src/components/account/account_info_base.tsx index 1223e0522..280eea7d7 100644 --- a/apps/oko_admin_web/src/components/account/account_info_base.tsx +++ b/apps/oko_admin_web/src/components/account/account_info_base.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; import styles from "./account_info_base.module.scss"; @@ -10,7 +10,7 @@ export interface AccountInfoBaseProps { avatarUrl?: string; } -export const AccountInfoBase: React.FC = ({ +export const AccountInfoBase: FC = ({ username, email, avatarUrl, diff --git a/apps/oko_admin_web/src/components/account/avatar.tsx b/apps/oko_admin_web/src/components/account/avatar.tsx index 3247995c3..d2999a632 100644 --- a/apps/oko_admin_web/src/components/account/avatar.tsx +++ b/apps/oko_admin_web/src/components/account/avatar.tsx @@ -1,5 +1,4 @@ -import Image from "next/image"; -import { useState } from "react"; +import { useState, type FC } from "react"; import styles from "./avatar.module.scss"; @@ -9,7 +8,7 @@ export interface AvatarProps { alt: string; } -export const Avatar: React.FC = ({ src, fallback, alt }) => { +export const Avatar: FC = ({ src, fallback, alt }) => { const [imgSrc, setImgSrc] = useState(src || fallback || ""); const [showAlt, setShowAlt] = useState(!src && !fallback); diff --git a/apps/oko_admin_web/src/components/apps_view/apps_view_header.tsx b/apps/oko_admin_web/src/components/apps_view/apps_view_header.tsx index 8391a37c7..531302601 100644 --- a/apps/oko_admin_web/src/components/apps_view/apps_view_header.tsx +++ b/apps/oko_admin_web/src/components/apps_view/apps_view_header.tsx @@ -1,6 +1,6 @@ "use client"; -import React from "react"; +import { type FC } from "react"; import { useRouter } from "next/navigation"; import { Button } from "@oko-wallet/oko-common-ui/button"; @@ -8,7 +8,7 @@ import { paths } from "@oko-wallet-admin/paths"; import { useGetCustomerListWithAPIKeys } from "./use_get_customer"; import { TitleHeader } from "@oko-wallet-admin/components/title_header/title_header"; -export const AppsViewHeader: React.FC = () => { +export const AppsViewHeader: FC = () => { const router = useRouter(); const { data } = useGetCustomerListWithAPIKeys(); diff --git a/apps/oko_admin_web/src/components/apps_view/manage_apps.tsx b/apps/oko_admin_web/src/components/apps_view/manage_apps.tsx index d9205b092..d28244242 100644 --- a/apps/oko_admin_web/src/components/apps_view/manage_apps.tsx +++ b/apps/oko_admin_web/src/components/apps_view/manage_apps.tsx @@ -1,12 +1,12 @@ "use client"; -import React from "react"; +import { type FC } from "react"; import styles from "./manage_apps.module.scss"; import { AppsViewHeader } from "./apps_view_header"; import { CustomerTable } from "./customer_table"; -export const AppsView: React.FC = () => { +export const AppsView: FC = () => { return (
diff --git a/apps/oko_admin_web/src/components/create_customer/create_customer_form.tsx b/apps/oko_admin_web/src/components/create_customer/create_customer_form.tsx index 0925ab635..6415869ae 100644 --- a/apps/oko_admin_web/src/components/create_customer/create_customer_form.tsx +++ b/apps/oko_admin_web/src/components/create_customer/create_customer_form.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useRef } from "react"; +import { useRef, type FC } from "react"; import { useRouter } from "next/navigation"; import { type SubmitHandler } from "react-hook-form"; import { Input } from "@oko-wallet/oko-common-ui/input"; @@ -13,7 +13,7 @@ import styles from "./create_customer_form.module.scss"; import { useCreateCustomerForm } from "./use_create_customer_form"; import { useToast } from "../toast/use_toast"; -export const CreateCustomerForm: React.FC = () => { +export const CreateCustomerForm: FC = () => { const router = useRouter(); const { showSuccessToast, showErrorToast } = useToast(); const fileInputRef = useRef(null); diff --git a/apps/oko_admin_web/src/components/create_ks_node/create_customer_form.tsx b/apps/oko_admin_web/src/components/create_ks_node/create_customer_form.tsx index 6fa471085..281983a2f 100644 --- a/apps/oko_admin_web/src/components/create_ks_node/create_customer_form.tsx +++ b/apps/oko_admin_web/src/components/create_ks_node/create_customer_form.tsx @@ -1,6 +1,6 @@ "use client"; -import React from "react"; +import { type FC } from "react"; import { useRouter } from "next/navigation"; import { type SubmitHandler } from "react-hook-form"; import { Input } from "@oko-wallet/oko-common-ui/input"; @@ -45,7 +45,7 @@ function useGetKSNodeInfo(nodeId?: string) { return { ...query, data: query.data }; } -export const CreateKSNodeForm: React.FC = ({ +export const CreateKSNodeForm: FC = ({ mode = "create", nodeId, }) => { diff --git a/apps/oko_admin_web/src/components/empty_state/empty_state.tsx b/apps/oko_admin_web/src/components/empty_state/empty_state.tsx index b22fc7d23..2f6c69d5f 100644 --- a/apps/oko_admin_web/src/components/empty_state/empty_state.tsx +++ b/apps/oko_admin_web/src/components/empty_state/empty_state.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import { Button } from "@oko-wallet/oko-common-ui/button"; import styles from "./empty_state.module.scss"; @@ -10,7 +10,7 @@ interface EmptyStateProps { onButtonClick?: () => void; } -export const EmptyState: React.FC = ({ +export const EmptyState: FC = ({ text, showButton = false, buttonText, diff --git a/apps/oko_admin_web/src/components/login/login_form.tsx b/apps/oko_admin_web/src/components/login/login_form.tsx index b9364d443..01ef48e2f 100644 --- a/apps/oko_admin_web/src/components/login/login_form.tsx +++ b/apps/oko_admin_web/src/components/login/login_form.tsx @@ -59,7 +59,7 @@ export const LoginForm = () => { id="email" type="text" value={email} - onChange={(e) => setEmail(e.target.value)} + onChange={(e: any) => setEmail(e.target.value)} required placeholder="Email" fullWidth @@ -69,7 +69,7 @@ export const LoginForm = () => { id="password" type="password" value={password} - onChange={(e) => setPassword(e.target.value)} + onChange={(e: any) => setPassword(e.target.value)} required placeholder="Password" fullWidth diff --git a/apps/oko_admin_web/src/components/navigation/nav_item.tsx b/apps/oko_admin_web/src/components/navigation/nav_item.tsx index dc1f52194..a801edff6 100644 --- a/apps/oko_admin_web/src/components/navigation/nav_item.tsx +++ b/apps/oko_admin_web/src/components/navigation/nav_item.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import styles from "./nav_item.module.scss"; import cn from "classnames"; @@ -11,7 +11,7 @@ export interface NavItemProps { isParent?: boolean; } -export const NavItem: React.FC = ({ +export const NavItem: FC = ({ onClick, kind = "menu", active = false, diff --git a/apps/oko_admin_web/src/components/navigation/nav_menu.tsx b/apps/oko_admin_web/src/components/navigation/nav_menu.tsx index 607c0ade2..e58388f58 100644 --- a/apps/oko_admin_web/src/components/navigation/nav_menu.tsx +++ b/apps/oko_admin_web/src/components/navigation/nav_menu.tsx @@ -1,9 +1,7 @@ -import React from "react"; +import { type FC } from "react"; import styles from "./nav_menu.module.scss"; -export const NavMenu: React.FC<{ children: React.ReactNode }> = ({ - children, -}) => { +export const NavMenu: FC<{ children: React.ReactNode }> = ({ children }) => { return
{children}
; }; diff --git a/apps/oko_admin_web/src/components/navigation/navigation.tsx b/apps/oko_admin_web/src/components/navigation/navigation.tsx index 89baebf07..d6f151c20 100644 --- a/apps/oko_admin_web/src/components/navigation/navigation.tsx +++ b/apps/oko_admin_web/src/components/navigation/navigation.tsx @@ -1,5 +1,6 @@ "use client"; +import type { FC } from "react"; import { usePathname, useRouter } from "next/navigation"; import styles from "./navigation.module.scss"; @@ -16,7 +17,7 @@ export interface NavigationItem { export interface NavigationProps {} -export const Navigation: React.FC = () => { +export const Navigation: FC = () => { const router = useRouter(); const pathname = usePathname(); diff --git a/apps/oko_admin_web/src/components/pagination/pagination.tsx b/apps/oko_admin_web/src/components/pagination/pagination.tsx index d9d0621a8..8e08e3ab4 100644 --- a/apps/oko_admin_web/src/components/pagination/pagination.tsx +++ b/apps/oko_admin_web/src/components/pagination/pagination.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import styles from "./pagination.module.scss"; export interface PaginationProps { @@ -11,7 +11,7 @@ function range(start: number, end: number) { return Array.from({ length: end - start + 1 }, (_, i) => start + i); } -export const Pagination: React.FC = ({ +export const Pagination: FC = ({ currentPage, totalPages, onPageChange, diff --git a/apps/oko_admin_web/src/components/side_bar/side_bar_footer.tsx b/apps/oko_admin_web/src/components/side_bar/side_bar_footer.tsx index 34db72124..a00d50dcd 100644 --- a/apps/oko_admin_web/src/components/side_bar/side_bar_footer.tsx +++ b/apps/oko_admin_web/src/components/side_bar/side_bar_footer.tsx @@ -1,6 +1,6 @@ "use client"; -import React from "react"; +import { type FC } from "react"; import { SidebarAccountInfo } from "@oko-wallet/oko-common-ui/sidebar_account_info"; import { AnchoredMenu } from "@oko-wallet/oko-common-ui/anchored_menu"; import { ThreeDotsVerticalIcon } from "@oko-wallet/oko-common-ui/icons/three_dots_vertical"; @@ -10,7 +10,7 @@ import styles from "./side_bar_footer.module.scss"; import { useLogin } from "../login/use_login"; import { useAppState } from "@oko-wallet-admin/state"; -export const SideBarFooter: React.FC = () => { +export const SideBarFooter: FC = () => { const { logout } = useLogin(); const { user } = useAppState(); diff --git a/apps/oko_admin_web/src/components/sig_shares_view/sig_shares_table.tsx b/apps/oko_admin_web/src/components/sig_shares_view/sig_shares_table.tsx index 886e1f844..db18be86a 100644 --- a/apps/oko_admin_web/src/components/sig_shares_view/sig_shares_table.tsx +++ b/apps/oko_admin_web/src/components/sig_shares_view/sig_shares_table.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { useEffect, useRef, useState, type FC } from "react"; import { useSearchParams, useRouter } from "next/navigation"; import Link from "next/link"; import { createColumnHelper, flexRender } from "@tanstack/react-table"; @@ -133,7 +133,7 @@ const columns = [ }), ]; -export const SigSharesTable: React.FC = () => { +export const SigSharesTable: FC = () => { const { pageIndex, currentPage, @@ -159,13 +159,11 @@ export const SigSharesTable: React.FC = () => { return "app"; }; - const [filterType, setFilterType] = React.useState<"app" | "node">( - getFilterType(), - ); + const [filterType, setFilterType] = useState<"app" | "node">(getFilterType()); - const isUserChangingFilterType = React.useRef(false); + const isUserChangingFilterType = useRef(false); - React.useEffect(() => { + useEffect(() => { if (isUserChangingFilterType.current) { return; } diff --git a/apps/oko_admin_web/src/components/sig_shares_view/sig_shares_view.tsx b/apps/oko_admin_web/src/components/sig_shares_view/sig_shares_view.tsx index 552c03da9..7e0af7931 100644 --- a/apps/oko_admin_web/src/components/sig_shares_view/sig_shares_view.tsx +++ b/apps/oko_admin_web/src/components/sig_shares_view/sig_shares_view.tsx @@ -1,12 +1,12 @@ "use client"; -import React from "react"; +import { type FC } from "react"; import styles from "./sig_shares_view.module.scss"; import { SigSharesTable } from "./sig_shares_table"; import { TitleHeader } from "@oko-wallet-admin/components/title_header/title_header"; -export const SigSharesView: React.FC = () => { +export const SigSharesView: FC = () => { return (
diff --git a/apps/oko_admin_web/src/components/toast/toast.tsx b/apps/oko_admin_web/src/components/toast/toast.tsx index ab241191c..7d0a79de0 100644 --- a/apps/oko_admin_web/src/components/toast/toast.tsx +++ b/apps/oko_admin_web/src/components/toast/toast.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import cn from "classnames"; import styles from "./toast.module.scss"; @@ -11,7 +11,7 @@ export interface ToastProps { onClose?: () => void; } -export const Toast: React.FC = ({ message, type, onClose }) => ( +export const Toast: FC = ({ message, type, onClose }) => (
{message} {onClose && ( diff --git a/apps/oko_admin_web/src/components/toast/toastProvider.tsx b/apps/oko_admin_web/src/components/toast/toastProvider.tsx index 2245e0d62..3a1a533ed 100644 --- a/apps/oko_admin_web/src/components/toast/toastProvider.tsx +++ b/apps/oko_admin_web/src/components/toast/toastProvider.tsx @@ -1,4 +1,4 @@ -import React, { createContext, useContext, useState, useCallback } from "react"; +import { createContext, useState, type FC } from "react"; import { Toast, type ToastType } from "./toast"; @@ -11,7 +11,7 @@ export const ToastContext = createContext( undefined, ); -export const ToastProvider: React.FC<{ children: React.ReactNode }> = ({ +export const ToastProvider: FC<{ children: React.ReactNode }> = ({ children, }) => { const [message, setMessage] = useState<{ diff --git a/apps/oko_admin_web/src/components/top_provider/top_provider.tsx b/apps/oko_admin_web/src/components/top_provider/top_provider.tsx index e8ff88712..3952954c2 100644 --- a/apps/oko_admin_web/src/components/top_provider/top_provider.tsx +++ b/apps/oko_admin_web/src/components/top_provider/top_provider.tsx @@ -6,7 +6,7 @@ import { QueryClient, QueryClientProvider, } from "@tanstack/react-query"; -import React, { type PropsWithChildren } from "react"; +import { type FC, type PropsWithChildren } from "react"; import { IntlProvider } from "react-intl"; import { ToastProvider } from "@oko-wallet-admin/components/toast/toastProvider"; @@ -14,7 +14,7 @@ import { en } from "@oko-wallet-admin/i18n/en"; const queryClient = new QueryClient(); -export const TopProvider: React.FC = ({ children }) => { +export const TopProvider: FC = ({ children }) => { return ( diff --git a/apps/oko_admin_web/src/components/user_list_view/user_list_table.tsx b/apps/oko_admin_web/src/components/user_list_view/user_list_table.tsx index 5934d850b..d5fbd7566 100644 --- a/apps/oko_admin_web/src/components/user_list_view/user_list_table.tsx +++ b/apps/oko_admin_web/src/components/user_list_view/user_list_table.tsx @@ -1,5 +1,6 @@ "use client"; +import type { FC } from "react"; import { Table, TableBody, @@ -14,7 +15,7 @@ import styles from "./user_list_table.module.scss"; import { Pagination } from "../pagination/pagination"; import { useUserListTable } from "./use_user_list_table"; -export const UserListTable: React.FC = () => { +export const UserListTable: FC = () => { const { table, totalPageCount, currentPage, handlePageChange } = useUserListTable(); diff --git a/apps/oko_admin_web/src/components/user_list_view/user_list_view.tsx b/apps/oko_admin_web/src/components/user_list_view/user_list_view.tsx index f3d6a15cc..ba4c12bc0 100644 --- a/apps/oko_admin_web/src/components/user_list_view/user_list_view.tsx +++ b/apps/oko_admin_web/src/components/user_list_view/user_list_view.tsx @@ -1,10 +1,10 @@ -import React from "react"; +import { type FC } from "react"; import styles from "./user_list_view.module.scss"; import { UserListTable } from "./user_list_table"; import { TitleHeader } from "@oko-wallet-admin/components/title_header/title_header"; -export const UserListView: React.FC = () => { +export const UserListView: FC = () => { return (
diff --git a/crypto/tecdsa/client_example/src/components/step/step.tsx b/crypto/tecdsa/client_example/src/components/step/step.tsx index 55bbd8fb4..51b89f363 100644 --- a/crypto/tecdsa/client_example/src/components/step/step.tsx +++ b/crypto/tecdsa/client_example/src/components/step/step.tsx @@ -2,7 +2,7 @@ import React from "react"; import styles from "./step.module.css"; -export const Step: React.FC = ({ +export const Step: FC = ({ label, handleClick, result, diff --git a/crypto/tecdsa/client_example/src/components/workflow/workflow.tsx b/crypto/tecdsa/client_example/src/components/workflow/workflow.tsx index c72b0a1b3..a7ca50906 100644 --- a/crypto/tecdsa/client_example/src/components/workflow/workflow.tsx +++ b/crypto/tecdsa/client_example/src/components/workflow/workflow.tsx @@ -4,7 +4,7 @@ import styles from "./workflow.module.css"; import { Step } from "../../components/step/step"; import { useTECDSA } from "./use_tecdsa"; -export const Workflow: React.FC = () => { +export const Workflow: FC = () => { const { handleClickKeygen, handleClickTriples, diff --git a/embed/oko_attached/oko_attached.env.example b/embed/oko_attached/oko_attached.env.example index ed4b9fc1a..ef524b885 100644 --- a/embed/oko_attached/oko_attached.env.example +++ b/embed/oko_attached/oko_attached.env.example @@ -7,3 +7,4 @@ VITE_TX_INTERPRETER_API_ENDPOINT=https://tx-interpreter.keplr.app VITE_AMPLITUDE_API_KEY= VITE_IPFS_GATEWAY_URL= VITE_TELEGRAM_BOT_NAME=telegram_bot_name +VITE_PUBLIC_S3_BUCKET_URL=https://oko-wallet.s3.ap-northeast-2.amazonaws.com diff --git a/embed/oko_attached/src/components/avatar/avatar.tsx b/embed/oko_attached/src/components/avatar/avatar.tsx index 311dac125..9a1a86289 100644 --- a/embed/oko_attached/src/components/avatar/avatar.tsx +++ b/embed/oko_attached/src/components/avatar/avatar.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useRef } from "react"; +import { useState, useEffect, useRef, type FC } from "react"; import styles from "./avatar.module.scss"; import { AvatarInitial } from "./avatar_initial"; @@ -57,7 +57,7 @@ function getBorderRadius(variant: AvatarProps["variant"]) { } } -export const Avatar: React.FC = ({ +export const Avatar: FC = ({ src, fallback, alt, diff --git a/embed/oko_attached/src/components/avatar/avatar_initial.tsx b/embed/oko_attached/src/components/avatar/avatar_initial.tsx index b1d820731..d7d92d12f 100644 --- a/embed/oko_attached/src/components/avatar/avatar_initial.tsx +++ b/embed/oko_attached/src/components/avatar/avatar_initial.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import { Typography, type BaseTypographyProps, @@ -15,7 +15,7 @@ export interface AvatarInitialProps { visible?: boolean; } -export const AvatarInitial: React.FC = ({ +export const AvatarInitial: FC = ({ initial, sizePx, textSize, diff --git a/embed/oko_attached/src/components/collapsible/collapsible.tsx b/embed/oko_attached/src/components/collapsible/collapsible.tsx index 18ad1a4b1..8ca25f765 100644 --- a/embed/oko_attached/src/components/collapsible/collapsible.tsx +++ b/embed/oko_attached/src/components/collapsible/collapsible.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useState, type FC } from "react"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; import { ChevronDownIcon } from "@oko-wallet/oko-common-ui/icons/chevron_down"; import cn from "classnames"; @@ -12,7 +12,7 @@ export interface CollapsibleProps { className?: string; } -export const Collapsible: React.FC = ({ +export const Collapsible: FC = ({ title, children, defaultExpanded = false, diff --git a/embed/oko_attached/src/components/discord_callback/discord_callback.tsx b/embed/oko_attached/src/components/discord_callback/discord_callback.tsx index d73a407f0..2982f57ab 100644 --- a/embed/oko_attached/src/components/discord_callback/discord_callback.tsx +++ b/embed/oko_attached/src/components/discord_callback/discord_callback.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useEffect, useState } from "react"; +import { type FC } from "react"; import { LoadingIcon } from "@oko-wallet/oko-common-ui/icons/loading"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; @@ -12,7 +12,7 @@ import styles from "@oko-wallet-attached/components/google_callback/google_callb import { useDiscordCallback } from "@oko-wallet-attached/components/discord_callback/use_callback"; import { useSetThemeInCallback } from "@oko-wallet-attached/hooks/theme"; -export const DiscordCallback: React.FC = () => { +export const DiscordCallback: FC = () => { const theme = useSetThemeInCallback("discord"); const { error } = useDiscordCallback(); @@ -43,7 +43,7 @@ export const DiscordCallback: React.FC = () => { ); }; -const ErrorMessage: React.FC<{ error: string }> = ({ error }) => { +const ErrorMessage: FC<{ error: string }> = ({ error }) => { const errorCode = error || "unknown_error"; const isParamsNotSufficient = errorCode === "params_not_sufficient"; const errorMessage = isParamsNotSufficient diff --git a/embed/oko_attached/src/components/email/email_login_popup.tsx b/embed/oko_attached/src/components/email/email_login_popup.tsx index 252339bc2..dbccfb3af 100644 --- a/embed/oko_attached/src/components/email/email_login_popup.tsx +++ b/embed/oko_attached/src/components/email/email_login_popup.tsx @@ -120,7 +120,7 @@ export const EmailLoginPopup: FC = ({ { + onChange={(digits: string[]) => { resetError(); setOtpDigits(digits); }} diff --git a/embed/oko_attached/src/components/email_callback/email_callback.tsx b/embed/oko_attached/src/components/email_callback/email_callback.tsx index 669107da6..4f14b32cb 100644 --- a/embed/oko_attached/src/components/email_callback/email_callback.tsx +++ b/embed/oko_attached/src/components/email_callback/email_callback.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useEffect, useState } from "react"; +import { type FC } from "react"; import { LoadingIcon } from "@oko-wallet/oko-common-ui/icons/loading"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; @@ -12,7 +12,7 @@ import styles from "@oko-wallet-attached/components/google_callback/google_callb import { useEmailCallback } from "@oko-wallet-attached/components/email_callback/use_callback"; import { useSetThemeInCallback } from "@oko-wallet-attached/hooks/theme"; -export const EmailCallback: React.FC = () => { +export const EmailCallback: FC = () => { const theme = useSetThemeInCallback("auth0"); const { error } = useEmailCallback(); @@ -26,7 +26,7 @@ export const EmailCallback: React.FC = () => { ); }; -const SuccessMessage: React.FC = () => { +const SuccessMessage: FC = () => { return ( <> { ); }; -const ErrorMessage: React.FC<{ error: string }> = ({ error }) => { +const ErrorMessage: FC<{ error: string }> = ({ error }) => { const errorCode = error || "unknown_error"; const isParamsNotSufficient = errorCode === "params_not_sufficient"; const errorMessage = isParamsNotSufficient diff --git a/embed/oko_attached/src/components/google_callback/google_callback.tsx b/embed/oko_attached/src/components/google_callback/google_callback.tsx index 6bd2f5e42..23cd641af 100644 --- a/embed/oko_attached/src/components/google_callback/google_callback.tsx +++ b/embed/oko_attached/src/components/google_callback/google_callback.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useEffect, useState } from "react"; +import { type FC } from "react"; import { LoadingIcon } from "@oko-wallet/oko-common-ui/icons/loading"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; @@ -12,7 +12,7 @@ import styles from "./google_callback.module.scss"; import { useGoogleCallback } from "@oko-wallet-attached/components/google_callback/use_callback"; import { useSetThemeInCallback } from "@oko-wallet-attached/hooks/theme"; -export const GoogleCallback: React.FC = () => { +export const GoogleCallback: FC = () => { const theme = useSetThemeInCallback("google"); const { error } = useGoogleCallback(); @@ -42,7 +42,7 @@ export const GoogleCallback: React.FC = () => { ); }; -const ErrorMessage: React.FC<{ error: string }> = ({ error }) => { +const ErrorMessage: FC<{ error: string }> = ({ error }) => { const errorCode = error || "unknown_error"; const isParamsNotSufficient = errorCode === "params_not_sufficient"; const errorMessage = isParamsNotSufficient diff --git a/embed/oko_attached/src/components/modal_variants/common/common_modal.tsx b/embed/oko_attached/src/components/modal_variants/common/common_modal.tsx index c63866014..7b715bf69 100644 --- a/embed/oko_attached/src/components/modal_variants/common/common_modal.tsx +++ b/embed/oko_attached/src/components/modal_variants/common/common_modal.tsx @@ -1,4 +1,4 @@ -import React, { type PropsWithChildren } from "react"; +import { type FC, type PropsWithChildren } from "react"; import cn from "classnames"; import styles from "./common_modal.module.scss"; @@ -8,7 +8,7 @@ export interface CommonModalProps { className?: string; } -export const CommonModal: React.FC> = ({ +export const CommonModal: FC> = ({ children, padding, className, diff --git a/embed/oko_attached/src/components/modal_variants/common/make_signature/demo_view.tsx b/embed/oko_attached/src/components/modal_variants/common/make_signature/demo_view.tsx index 779412d42..d306858e8 100644 --- a/embed/oko_attached/src/components/modal_variants/common/make_signature/demo_view.tsx +++ b/embed/oko_attached/src/components/modal_variants/common/make_signature/demo_view.tsx @@ -1,10 +1,10 @@ -import React from "react"; +import { type FC } from "react"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; import styles from "@oko-wallet-attached/components/modal_variants/common/make_signature/make_signature_modal.module.scss"; import { CommonModal } from "@oko-wallet-attached/components/modal_variants/common/common_modal"; -export const DemoView: React.FC = () => { +export const DemoView: FC = () => { return ( = ({ children }) => { - return
{children}
; +> = ({ children, className }) => { + return ( +
{children}
+ ); }; diff --git a/embed/oko_attached/src/components/modal_variants/common/metadata_content/metadata_content.tsx b/embed/oko_attached/src/components/modal_variants/common/metadata_content/metadata_content.tsx index 78807c69a..346a2979c 100644 --- a/embed/oko_attached/src/components/modal_variants/common/metadata_content/metadata_content.tsx +++ b/embed/oko_attached/src/components/modal_variants/common/metadata_content/metadata_content.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import type { ChainInfoForAttachedModal } from "@oko-wallet/oko-sdk-core"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; @@ -6,19 +6,7 @@ import { Typography } from "@oko-wallet/oko-common-ui/typography"; import styles from "./metadata_content.module.scss"; import { SignerAddressOrEmail } from "./signer_address_or_email/signer_address_or_email"; import { Avatar } from "@oko-wallet-attached/components/avatar/avatar"; - -function getFaviconUrl(origin: string): string { - if (!origin) return ""; - - try { - const parsed = new URL(origin); - return `https://www.google.com/s2/favicons?domain_url=${encodeURIComponent( - parsed.origin, - )}`; - } catch (error) { - return ""; - } -} +import { getFaviconUrl } from "@oko-wallet-attached/utils/favicon"; interface MakeSignatureModalMetadataContentProps { origin: string; @@ -26,9 +14,11 @@ interface MakeSignatureModalMetadataContentProps { signer: string; } -export const MetadataContent: React.FC< - MakeSignatureModalMetadataContentProps -> = ({ origin, chainInfo, signer }) => { +export const MetadataContent: FC = ({ + origin, + chainInfo, + signer, +}) => { const faviconUrl = getFaviconUrl(origin); return ( @@ -66,7 +56,11 @@ export const MetadataContent: React.FC<
- +
); diff --git a/embed/oko_attached/src/components/modal_variants/common/metadata_content/signer_address_or_email/signer_address_or_email.module.scss b/embed/oko_attached/src/components/modal_variants/common/metadata_content/signer_address_or_email/signer_address_or_email.module.scss index dead07476..0541e90ea 100644 --- a/embed/oko_attached/src/components/modal_variants/common/metadata_content/signer_address_or_email/signer_address_or_email.module.scss +++ b/embed/oko_attached/src/components/modal_variants/common/metadata_content/signer_address_or_email/signer_address_or_email.module.scss @@ -17,6 +17,12 @@ cursor: pointer; border-radius: 12px; - background: var(--bg-secondary); + background-color: var(--bg-secondary); width: fit-content; + + transition: background-color 0.15s ease-in-out; + + &:hover { + background-color: var(--bg-secondary-hover); + } } diff --git a/embed/oko_attached/src/components/modal_variants/common/metadata_content/signer_address_or_email/signer_address_or_email.tsx b/embed/oko_attached/src/components/modal_variants/common/metadata_content/signer_address_or_email/signer_address_or_email.tsx index 8752ac10e..09bd28fff 100644 --- a/embed/oko_attached/src/components/modal_variants/common/metadata_content/signer_address_or_email/signer_address_or_email.tsx +++ b/embed/oko_attached/src/components/modal_variants/common/metadata_content/signer_address_or_email/signer_address_or_email.tsx @@ -8,25 +8,72 @@ import styles from "./signer_address_or_email.module.scss"; interface SignerAddressOrEmailProps { signer: string; origin: string; + initialViewType: "View Address" | "Login Info" | null; } +interface ViewProps { + value: string; + origin: string; + type: "address" | "email"; + prefix?: string; +} + +export const SignerAddressOrEmailView: FC = ({ + value, + type, + origin, + prefix, +}) => { + const email = useAppState((state) => state.getWallet(origin)?.email); + const displayValue = + type === "address" ? `${value.slice(0, 9)}...${value.slice(-9)}` : email; + + return ( + + {prefix && `${prefix} `} + {displayValue} + + ); +}; + +interface SignerAddressOrEmailChangeViewTypeButtonProps { + viewType: "View Address" | "Login Info"; + onClick: () => void; +} + +export const SignerAddressOrEmailChangeViewTypeButton: FC< + SignerAddressOrEmailChangeViewTypeButtonProps +> = ({ viewType, onClick }) => { + return ( +
+ + + {viewType} + +
+ ); +}; + export const SignerAddressOrEmail: FC = ({ signer, origin, + initialViewType, }) => { - const [viewType, setViewType] = useState<"View Address" | "Login Info">( - "View Address", - ); - const email = useAppState((state) => state.getWallet(origin)?.email); + const [viewType, setViewType] = useState< + "View Address" | "Login Info" | null + >(initialViewType); switch (viewType) { + case null: case "View Address": return (
- - {signer.slice(0, 9)}...{signer.slice(-9)} - - + setViewType("Login Info")} /> @@ -35,10 +82,12 @@ export const SignerAddressOrEmail: FC = ({ case "Login Info": return (
- - {email} - - + setViewType("View Address")} /> @@ -46,17 +95,3 @@ export const SignerAddressOrEmail: FC = ({ ); } }; - -const ChangeViewTypeButton: FC<{ - viewType: "View Address" | "Login Info"; - onClick: () => void; -}> = ({ viewType, onClick }) => { - return ( -
- - - {viewType} - -
- ); -}; diff --git a/embed/oko_attached/src/components/modal_variants/common/tx_row.tsx b/embed/oko_attached/src/components/modal_variants/common/tx_row.tsx index e222b63a4..81d956702 100644 --- a/embed/oko_attached/src/components/modal_variants/common/tx_row.tsx +++ b/embed/oko_attached/src/components/modal_variants/common/tx_row.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; import styles from "./tx_row.module.scss"; @@ -8,7 +8,7 @@ export interface TxRowProps { children: React.ReactNode; } -export const TxRow: React.FC = ({ label, children }) => { +export const TxRow: FC = ({ label, children }) => { return (
{label ? ( diff --git a/embed/oko_attached/src/components/modal_variants/cosmos/arbitrary_sig/cosmos_arbitrary_signature_content.tsx b/embed/oko_attached/src/components/modal_variants/cosmos/arbitrary_sig/cosmos_arbitrary_signature_content.tsx index 3bbfd24f6..1dd787b9c 100644 --- a/embed/oko_attached/src/components/modal_variants/cosmos/arbitrary_sig/cosmos_arbitrary_signature_content.tsx +++ b/embed/oko_attached/src/components/modal_variants/cosmos/arbitrary_sig/cosmos_arbitrary_signature_content.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useState, type FC } from "react"; import type { CosmosArbitrarySignPayload } from "@oko-wallet/oko-sdk-core"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; @@ -12,7 +12,7 @@ interface CosmosArbitrarySignatureContentProps { payload: CosmosArbitrarySignPayload; } -export const CosmosArbitrarySignatureContent: React.FC< +export const CosmosArbitrarySignatureContent: FC< CosmosArbitrarySignatureContentProps > = ({ payload }) => { const [isViewRawData, setIsViewRawData] = useState(false); diff --git a/embed/oko_attached/src/components/modal_variants/cosmos/arbitrary_sig/make_arbitrary_sig_modal.tsx b/embed/oko_attached/src/components/modal_variants/cosmos/arbitrary_sig/make_arbitrary_sig_modal.tsx index b900b5199..2d558dbbb 100644 --- a/embed/oko_attached/src/components/modal_variants/cosmos/arbitrary_sig/make_arbitrary_sig_modal.tsx +++ b/embed/oko_attached/src/components/modal_variants/cosmos/arbitrary_sig/make_arbitrary_sig_modal.tsx @@ -1,5 +1,5 @@ -import React from "react"; import type { CosmosArbitrarySigData } from "@oko-wallet/oko-sdk-core"; +import type { FC } from "react"; import { XCloseIcon } from "@oko-wallet/oko-common-ui/icons/x_close"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; import { Button } from "@oko-wallet/oko-common-ui/button"; @@ -12,7 +12,7 @@ import { ArbitrarySignatureDesc } from "@oko-wallet-attached/components/modal_va import { CosmosArbitrarySignatureContent } from "./cosmos_arbitrary_signature_content"; import { SignWithOkoBox } from "@oko-wallet-attached/components/sign_with_oko_box/sign_with_oko_box"; -export const MakeArbitrarySigModal: React.FC = ({ +export const MakeArbitrarySigModal: FC = ({ getIsAborted, data, modalId, diff --git a/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/messages.tsx b/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/messages.tsx index dbc226683..1c443b098 100644 --- a/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/messages.tsx +++ b/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/messages.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import type { Msg } from "@keplr-wallet/types"; import { Bech32Address } from "@keplr-wallet/cosmos"; import { MsgSend as ThorMsgSend } from "@keplr-wallet/proto-types/thorchain/v1/types/msg_send"; @@ -77,7 +77,7 @@ function renderMessage( } } -export const Messages: React.FC = ({ +export const Messages: FC = ({ chainId, messages, isLoading, diff --git a/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/send/send.tsx b/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/send/send.tsx index 90bb8547a..0c369db70 100644 --- a/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/send/send.tsx +++ b/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/send/send.tsx @@ -10,7 +10,7 @@ import styles from "../messages.module.scss"; import { TxRow } from "@oko-wallet-attached/components/modal_variants/common/tx_row"; import { useGetMultipleAssetMeta } from "@oko-wallet-attached/web3/cosmos/use_get_asset_meta"; -const TokenInfo: React.FC<{ +const TokenInfo: FC<{ chainId: string; amount: Coin[]; }> = ({ chainId, amount }) => { diff --git a/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/unknown/unknown.tsx b/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/unknown/unknown.tsx index e20d5b3d1..5ce099ce6 100644 --- a/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/unknown/unknown.tsx +++ b/embed/oko_attached/src/components/modal_variants/cosmos/tx_sig/msg/unknown/unknown.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useRef, useState } from "react"; +import { useEffect, useRef, useState, type FC } from "react"; import type { Msg } from "@keplr-wallet/types"; import { Typography } from "@oko-wallet-common-ui/typography/typography"; import { ChevronDownIcon } from "@oko-wallet-common-ui/icons/chevron_down"; @@ -8,7 +8,7 @@ import cn from "classnames"; import type { UnpackedMsgForView } from "@oko-wallet-attached/types/cosmos_msg"; import styles from "./unknown.module.scss"; -export const UnknownMessage: React.FC = ({ msg }) => { +export const UnknownMessage: FC = ({ msg }) => { const [isCollapse, setIsCollapse] = useState(true); const contentRef = useRef(null); const sentinelRef = useRef(null); diff --git a/embed/oko_attached/src/components/modal_variants/eth/arbitrary_sig/ethereum_arbitrary_signature_content.tsx b/embed/oko_attached/src/components/modal_variants/eth/arbitrary_sig/ethereum_arbitrary_signature_content.tsx index 1391e0c6e..7c8a8cd00 100644 --- a/embed/oko_attached/src/components/modal_variants/eth/arbitrary_sig/ethereum_arbitrary_signature_content.tsx +++ b/embed/oko_attached/src/components/modal_variants/eth/arbitrary_sig/ethereum_arbitrary_signature_content.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import type { EthereumArbitrarySignPayload } from "@oko-wallet/oko-sdk-core"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; import { Typography } from "@oko-wallet/oko-common-ui/typography"; @@ -13,7 +13,7 @@ interface EthereumArbitrarySignatureContentProps { payload: EthereumArbitrarySignPayload; } -export const EthereumArbitrarySignatureContent: React.FC< +export const EthereumArbitrarySignatureContent: FC< EthereumArbitrarySignatureContentProps > = ({ payload }) => { const message = (() => { diff --git a/embed/oko_attached/src/components/modal_variants/eth/arbitrary_sig/make_arbitrary_sig_modal.tsx b/embed/oko_attached/src/components/modal_variants/eth/arbitrary_sig/make_arbitrary_sig_modal.tsx index 2973a1de1..b830071a1 100644 --- a/embed/oko_attached/src/components/modal_variants/eth/arbitrary_sig/make_arbitrary_sig_modal.tsx +++ b/embed/oko_attached/src/components/modal_variants/eth/arbitrary_sig/make_arbitrary_sig_modal.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { useMemo, useState, type FC } from "react"; import type { MakeArbitrarySigData } from "@oko-wallet/oko-sdk-core"; import { XCloseIcon } from "@oko-wallet/oko-common-ui/icons/x_close"; import { Spacing } from "@oko-wallet/oko-common-ui/spacing"; @@ -11,16 +11,29 @@ import { useArbitrarySigModal } from "./hooks/use_arbitrary_sig_modal"; import { ArbitrarySignatureDesc } from "@oko-wallet-attached/components/modal_variants/common/arbitrary_sig_desc/arbitrary_signature_desc"; import { EthereumArbitrarySignatureContent } from "./ethereum_arbitrary_signature_content"; import { SignWithOkoBox } from "@oko-wallet-attached/components/sign_with_oko_box/sign_with_oko_box"; +import { + getSiweMessage, + verifySiweMessage, +} from "@oko-wallet-attached/components/modal_variants/eth/siwe_message"; +import { EthereumSiweSignatureContent } from "@oko-wallet-attached/components/modal_variants/eth/arbitrary_sig/siwe_sig/make_siwe_signature_content"; +import { SiweRiskWarningCheckBox } from "@oko-wallet-attached/components/modal_variants/eth/arbitrary_sig/siwe_sig/siwe_risk_warning_box"; -export const MakeArbitrarySigModal: React.FC = ({ +export const MakeArbitrarySigModal: FC = ({ getIsAborted, data, modalId, }) => { + const siweMessage = getSiweMessage(data.payload.data.message); + const isValidSiweMessage = siweMessage + ? verifySiweMessage(siweMessage, data.payload.origin) + : false; + const [isSiweRiskWarningChecked, setIsSiweRiskWarningChecked] = + useState(false); + const { onReject, onApprove, - isApproveEnabled, + isApproveEnabled: isApproveEnabledOriginal, isLoading, isDemo, theme, @@ -30,6 +43,18 @@ export const MakeArbitrarySigModal: React.FC = ({ data, modalId, }); + const isApproveEnabled = useMemo(() => { + if (siweMessage && !isValidSiweMessage) { + return isApproveEnabledOriginal && isSiweRiskWarningChecked; + } + + return isApproveEnabledOriginal; + }, [ + isApproveEnabledOriginal, + isSiweRiskWarningChecked, + siweMessage, + isValidSiweMessage, + ]); return (
@@ -39,13 +64,30 @@ export const MakeArbitrarySigModal: React.FC = ({
- + {!!siweMessage ? ( + + ) : ( + + )}
- + {!hasOnChainSchema && } - + + + {siweMessage && !isValidSiweMessage && ( + <> + + + + )}
+ + {error && (
{error?.message} diff --git a/sandbox/sandbox_simple_host/src/components/cosmos_accounts_modal/cosmos_accounts_modal.tsx b/sandbox/sandbox_simple_host/src/components/cosmos_accounts_modal/cosmos_accounts_modal.tsx index 3f14eb021..c269e4aa6 100644 --- a/sandbox/sandbox_simple_host/src/components/cosmos_accounts_modal/cosmos_accounts_modal.tsx +++ b/sandbox/sandbox_simple_host/src/components/cosmos_accounts_modal/cosmos_accounts_modal.tsx @@ -1,4 +1,4 @@ -import React, { useMemo, useState } from "react"; +import { type FC, useMemo, useState } from "react"; import styles from "./cosmos_accounts_modal.module.scss"; import { @@ -12,7 +12,7 @@ export interface CosmosAccountsModalProps { accounts?: CosmosChainAccount[]; } -export const CosmosAccountsModal: React.FC = ({ +export const CosmosAccountsModal: FC = ({ open, onClose, accounts: accountsProp, diff --git a/sandbox/sandbox_simple_host/src/components/skeleton/skeleton.tsx b/sandbox/sandbox_simple_host/src/components/skeleton/skeleton.tsx index 7b09c680d..af8260a5d 100644 --- a/sandbox/sandbox_simple_host/src/components/skeleton/skeleton.tsx +++ b/sandbox/sandbox_simple_host/src/components/skeleton/skeleton.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type { FC } from "react"; import "./skeleton.scss"; @@ -9,7 +9,7 @@ interface SkeletonProps { className?: string; } -export const Skeleton: React.FC = ({ +export const Skeleton: FC = ({ width = "100%", height = "1em", borderRadius = "12px", diff --git a/sandbox/sandbox_simple_host/src/components/spinner/spinner.tsx b/sandbox/sandbox_simple_host/src/components/spinner/spinner.tsx index 6570067ba..2121b8d23 100644 --- a/sandbox/sandbox_simple_host/src/components/spinner/spinner.tsx +++ b/sandbox/sandbox_simple_host/src/components/spinner/spinner.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type { FC } from "react"; import styles from "./spinner.module.scss"; @@ -8,7 +8,7 @@ interface SpinnerProps { status?: "loading" | "failed"; } -export const Spinner: React.FC = ({ +export const Spinner: FC = ({ size = 62, className, status = "loading", diff --git a/sandbox/sandbox_simple_host/src/components/widgets/address_widget/address_row.tsx b/sandbox/sandbox_simple_host/src/components/widgets/address_widget/address_row.tsx index d7b80b89c..97f031525 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/address_widget/address_row.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/address_widget/address_row.tsx @@ -1,12 +1,8 @@ -import React, { type ReactElement } from "react"; +import { type FC, type ReactElement } from "react"; import styles from "./address_row.module.scss"; -export const AddressRow: React.FC = ({ - icon, - chain, - address, -}) => { +export const AddressRow: FC = ({ icon, chain, address }) => { const isLoggedIn = !!address; const label = chain === "ethereum" ? "Ethereum" : "Cosmos Hub"; diff --git a/sandbox/sandbox_simple_host/src/components/widgets/address_widget/address_widget.tsx b/sandbox/sandbox_simple_host/src/components/widgets/address_widget/address_widget.tsx index 25737aa9f..8296c2fe6 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/address_widget/address_widget.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/address_widget/address_widget.tsx @@ -1,12 +1,11 @@ -import React, { useState } from "react"; +import { useState, type FC } from "react"; import styles from "./address_widget.module.scss"; import { Widget } from "../widget_components"; -import { AddressRow } from "./address_row"; import { ViewChainsButton } from "./view_chains_button"; import { ViewChainsModal } from "./view_chains_modal"; -export const AddressWidget: React.FC = ({}) => { +export const AddressWidget: FC = ({}) => { const [showModal, setShowModal] = useState(false); const handleViewChains = () => { diff --git a/sandbox/sandbox_simple_host/src/components/widgets/address_widget/chains_row.tsx b/sandbox/sandbox_simple_host/src/components/widgets/address_widget/chains_row.tsx index f8f7ecc87..016135570 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/address_widget/chains_row.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/address_widget/chains_row.tsx @@ -1,4 +1,4 @@ -import React, { type ReactElement } from "react"; +import { type FC, type ReactElement } from "react"; import styles from "./chains_row.module.scss"; @@ -7,7 +7,7 @@ export interface ChainsRowProps { icon: ReactElement; } -export const ChainsRow: React.FC = ({ chainName, icon }) => { +export const ChainsRow: FC = ({ chainName, icon }) => { return (
{icon} diff --git a/sandbox/sandbox_simple_host/src/components/widgets/address_widget/view_chains_button.tsx b/sandbox/sandbox_simple_host/src/components/widgets/address_widget/view_chains_button.tsx index d8413b5bb..38dbbfc9b 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/address_widget/view_chains_button.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/address_widget/view_chains_button.tsx @@ -1,10 +1,8 @@ -import React from "react"; +import { type FC } from "react"; import styles from "./view_chains_button.module.scss"; -export const ViewChainsButton: React.FC = ({ - onClick, -}) => { +export const ViewChainsButton: FC = ({ onClick }) => { return (
diff --git a/sandbox/sandbox_simple_host/src/components/widgets/address_widget/view_chains_modal.tsx b/sandbox/sandbox_simple_host/src/components/widgets/address_widget/view_chains_modal.tsx index 1bfc72478..cbc83c3cc 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/address_widget/view_chains_modal.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/address_widget/view_chains_modal.tsx @@ -1,7 +1,6 @@ -import React from "react"; +import { type FC } from "react"; import styles from "./view_chains_modal.module.scss"; -import { ChainsRow } from "./chains_row"; const CHAINS = [ // { name: "Ethereum", icon: }, @@ -14,9 +13,7 @@ const CHAINS = [ // { name: "Solana", icon: }, ]; -export const ViewChainsModal: React.FC = ({ - onClose, -}) => { +export const ViewChainsModal: FC = ({ onClose }) => { return (
diff --git a/sandbox/sandbox_simple_host/src/components/widgets/cosmos_offchain_sign_widget/cosmos_offchain_sign_widget.tsx b/sandbox/sandbox_simple_host/src/components/widgets/cosmos_offchain_sign_widget/cosmos_offchain_sign_widget.tsx index 10ec1a98d..5f2c26621 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/cosmos_offchain_sign_widget/cosmos_offchain_sign_widget.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/cosmos_offchain_sign_widget/cosmos_offchain_sign_widget.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useState } from "react"; +import { useCallback, useState } from "react"; import { SignWidget } from "../sign_widget/sign_widget"; import { useOko } from "@/hooks/use_oko"; diff --git a/sandbox/sandbox_simple_host/src/components/widgets/cosmos_onchain_cosmjs_sign_widget/cosmos_onchain_cosmjs_sign_widget.tsx b/sandbox/sandbox_simple_host/src/components/widgets/cosmos_onchain_cosmjs_sign_widget/cosmos_onchain_cosmjs_sign_widget.tsx index bbc7f1982..6b6004fa8 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/cosmos_onchain_cosmjs_sign_widget/cosmos_onchain_cosmjs_sign_widget.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/cosmos_onchain_cosmjs_sign_widget/cosmos_onchain_cosmjs_sign_widget.tsx @@ -1,13 +1,12 @@ -import React from "react"; +import type { FC } from "react"; import { MsgSend } from "@keplr-wallet/proto-types/cosmos/bank/v1beta1/tx"; import { coin } from "@cosmjs/amino"; -import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; +import { useQuery, useMutation } from "@tanstack/react-query"; import { GasPrice, SigningStargateClient } from "@cosmjs/stargate"; import { makeMockSendTokenAminoSignDoc } from "@/utils/cosmos"; import styles from "./cosmos_onchain_cosmjs_sign_widget.module.scss"; import { useOko } from "@/hooks/use_oko"; -// import { useAuthState } from "@/state/auth"; import { TEST_COSMOS_CHAIN_ID, TEST_COSMOS_CHAIN_RPC } from "@/constants"; import { useUserInfoState } from "@/state/user_info"; @@ -210,7 +209,7 @@ interface ActionButtonProps { actionName: string; } -const ActionButton: React.FC = ({ +const ActionButton: FC = ({ label, onClick, mutation, diff --git a/sandbox/sandbox_simple_host/src/components/widgets/cosmos_onchain_sign_widget/cosmos_onchain_sign_widget.tsx b/sandbox/sandbox_simple_host/src/components/widgets/cosmos_onchain_sign_widget/cosmos_onchain_sign_widget.tsx index 7c04d6115..ec464c524 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/cosmos_onchain_sign_widget/cosmos_onchain_sign_widget.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/cosmos_onchain_sign_widget/cosmos_onchain_sign_widget.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useState } from "react"; import { type DirectSignResponse } from "@cosmjs/proto-signing"; import { type AminoSignResponse } from "@cosmjs/amino"; import { useMutation } from "@tanstack/react-query"; diff --git a/sandbox/sandbox_simple_host/src/components/widgets/docs_widget/docs_widget.tsx b/sandbox/sandbox_simple_host/src/components/widgets/docs_widget/docs_widget.tsx index 24700cab9..7f0cf0c05 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/docs_widget/docs_widget.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/docs_widget/docs_widget.tsx @@ -1,9 +1,9 @@ -import React from "react"; +import type { FC } from "react"; import { Widget } from "../widget_components"; import styles from "./docs_widget.module.scss"; -export const DocsWidget: React.FC = () => { +export const DocsWidget: FC = () => { const handleOpenDocs = () => { console.log("Open docs clicked"); }; diff --git a/sandbox/sandbox_simple_host/src/components/widgets/ethereum_offchain_sign_widget/ethereum_offchain_sign_widget.tsx b/sandbox/sandbox_simple_host/src/components/widgets/ethereum_offchain_sign_widget/ethereum_offchain_sign_widget.tsx index 292f856d7..2802783e5 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/ethereum_offchain_sign_widget/ethereum_offchain_sign_widget.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/ethereum_offchain_sign_widget/ethereum_offchain_sign_widget.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useState, type FC } from "react"; import { hashMessage, hashTypedData, recoverPublicKey } from "viem"; import { publicKeyToEthereumAddress } from "@oko-wallet/oko-sdk-eth"; @@ -6,7 +6,7 @@ import styles from "./ethereum_offchain_sign_widget.module.scss"; import { SignWidget } from "@/components/widgets/sign_widget/sign_widget"; import { useOko } from "@/hooks/use_oko"; -export const EthereumOffchainSignWidget = () => { +export const EthereumOffchainSignWidget: FC = () => { const { okoEth } = useOko(); const [isLoading, setIsLoading] = useState(false); const [signType, setSignType] = useState<"personal_sign" | "typed_data_v4">( diff --git a/sandbox/sandbox_simple_host/src/components/widgets/ethereum_onchain_sign_widget/ethereum_onchain_sign_widget.tsx b/sandbox/sandbox_simple_host/src/components/widgets/ethereum_onchain_sign_widget/ethereum_onchain_sign_widget.tsx index 8e6a46e98..7d5d9ea03 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/ethereum_onchain_sign_widget/ethereum_onchain_sign_widget.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/ethereum_onchain_sign_widget/ethereum_onchain_sign_widget.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { keccak256, parseTransaction, diff --git a/sandbox/sandbox_simple_host/src/components/widgets/sign_widget/mock_dapp_modal/mock_dapp_modal.tsx b/sandbox/sandbox_simple_host/src/components/widgets/sign_widget/mock_dapp_modal/mock_dapp_modal.tsx index 5472452d5..4a7862b0f 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/sign_widget/mock_dapp_modal/mock_dapp_modal.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/sign_widget/mock_dapp_modal/mock_dapp_modal.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type { FC } from "react"; import { createPortal } from "react-dom"; import styles from "./mock_dapp_modal.module.scss"; @@ -10,7 +10,7 @@ export interface MockDappModalProps { signWidgetProps: SignWidgetProps; } -export const MockDappModal: React.FC = ({ +export const MockDappModal: FC = ({ isOpen, onClose, signWidgetProps, diff --git a/sandbox/sandbox_simple_host/src/components/widgets/sign_widget/sign_widget.tsx b/sandbox/sandbox_simple_host/src/components/widgets/sign_widget/sign_widget.tsx index dbd6fdcd3..8e214605d 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/sign_widget/sign_widget.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/sign_widget/sign_widget.tsx @@ -1,4 +1,4 @@ -import React, { type ReactElement, useState } from "react"; +import { type ReactElement, useState, type FC } from "react"; import { MockDappModal } from "@/components/widgets/sign_widget/mock_dapp_modal/mock_dapp_modal"; import styles from "@/components/widgets/sign_widget/sign_widget.module.scss"; @@ -9,7 +9,7 @@ export type SignWidgetInnerProps = SignWidgetProps & { hideDappModalButton?: boolean; }; -export const SignWidgetContent: React.FC = ({ +export const SignWidgetContent: FC = ({ chain, chainIcon, signType, @@ -51,7 +51,7 @@ export const SignWidgetContent: React.FC = ({ ); }; -export const SignWidget: React.FC = (props) => { +export const SignWidget: FC = (props) => { const [isModalOpen, setIsModalOpen] = useState(false); const openModal = () => setIsModalOpen(true); diff --git a/sandbox/sandbox_simple_host/src/components/widgets/user_data_widget/user_data_widget.tsx b/sandbox/sandbox_simple_host/src/components/widgets/user_data_widget/user_data_widget.tsx index 067bfe489..1f22bafd1 100644 --- a/sandbox/sandbox_simple_host/src/components/widgets/user_data_widget/user_data_widget.tsx +++ b/sandbox/sandbox_simple_host/src/components/widgets/user_data_widget/user_data_widget.tsx @@ -1,8 +1,8 @@ -import React from "react"; +import { type FC } from "react"; import styles from "./user_data_widget.module.scss"; -export const UserDataWidget: React.FC = ({ userData }) => { +export const UserDataWidget: FC = ({ userData }) => { const isLoggedIn = !!userData; return ( diff --git a/sdk/oko_sdk_core/scripts/build.ts b/sdk/oko_sdk_core/scripts/build.ts index aa0f30d22..cc5bcc6ee 100644 --- a/sdk/oko_sdk_core/scripts/build.ts +++ b/sdk/oko_sdk_core/scripts/build.ts @@ -20,13 +20,13 @@ const __dirname = path.dirname(__filename); const PKG_ROOT = path.resolve(__dirname, ".."); async function main() { - console.log("Start building"); + console.log("Start build"); await removeDirtyFiles(); await bundle(); replaceTscAlias(); - console.log("Done"); + console.log("Done build"); } async function removeDirtyFiles() { diff --git a/sdk/oko_sdk_eth/scripts/build.ts b/sdk/oko_sdk_eth/scripts/build.ts index 426af195b..26193941c 100644 --- a/sdk/oko_sdk_eth/scripts/build.ts +++ b/sdk/oko_sdk_eth/scripts/build.ts @@ -27,7 +27,7 @@ async function main() { await bundle(); replaceTscAlias(); - console.log("Done"); + console.log("Done build"); } async function removeDirtyFiles() { diff --git a/ui/oko_common_ui/src/card/card.tsx b/ui/oko_common_ui/src/card/card.tsx index 6089c16cc..763de094f 100644 --- a/ui/oko_common_ui/src/card/card.tsx +++ b/ui/oko_common_ui/src/card/card.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import cn from "classnames"; import styles from "./card.module.scss"; @@ -10,7 +10,7 @@ export interface CardProps extends React.HTMLAttributes { footer?: React.ReactNode; } -export const Card: React.FC> = ({ +export const Card: FC> = ({ variant = "default", padding = "md", header, diff --git a/ui/oko_common_ui/src/checkbox/check_icon.tsx b/ui/oko_common_ui/src/checkbox/check_icon.tsx index 519b7f5a2..8ed11e71b 100644 --- a/ui/oko_common_ui/src/checkbox/check_icon.tsx +++ b/ui/oko_common_ui/src/checkbox/check_icon.tsx @@ -1,4 +1,6 @@ -export const CheckIcon = ({ size = 14 }: { size?: number }) => { +import type { FC } from "react"; + +export const CheckIcon: FC = ({ size = 14, color }) => { return ( { > { ); }; + +interface CheckIconProps { + size?: number; + color?: string; +} diff --git a/ui/oko_common_ui/src/checkbox/checkbox.module.scss b/ui/oko_common_ui/src/checkbox/checkbox.module.scss index 518ffa2e8..9dd1f2903 100644 --- a/ui/oko_common_ui/src/checkbox/checkbox.module.scss +++ b/ui/oko_common_ui/src/checkbox/checkbox.module.scss @@ -16,6 +16,16 @@ align-items: center; } +[data-theme="light"] { + .checkboxInput { + color: var(--white); + } +} +[data-theme="dark"] { + .checkboxInput { + color: var(--gray-700); + } +} .checkboxInput { display: flex; diff --git a/ui/oko_common_ui/src/checkbox/checkbox.tsx b/ui/oko_common_ui/src/checkbox/checkbox.tsx index fc06460c8..0fd30a625 100644 --- a/ui/oko_common_ui/src/checkbox/checkbox.tsx +++ b/ui/oko_common_ui/src/checkbox/checkbox.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import { type FC } from "react"; import cn from "classnames"; import styles from "./checkbox.module.scss"; @@ -13,6 +13,9 @@ interface CheckboxProps { size?: "sm" | "md"; checked: boolean; onChange: (checked: boolean) => void; + checkBoxInputContainerClassName?: string; + checkboxContainerClassName?: string; + label: string; labelStyle?: { color?: BaseTypographyProps["color"]; @@ -21,13 +24,15 @@ interface CheckboxProps { }; } -export const Checkbox: React.FC = ({ +export const Checkbox: FC = ({ id, size = "md", checked, onChange, label, labelStyle, + checkBoxInputContainerClassName, + checkboxContainerClassName, }) => { const iconSize = size === "sm" ? 12 : 14; const checkBoxInputStyle = cn( @@ -38,6 +43,7 @@ export const Checkbox: React.FC = ({ const checkboxContainerStyle = cn( styles.checkboxContainer, styles[`checkboxContainer-${size}`], + checkboxContainerClassName, ); return ( @@ -50,7 +56,12 @@ export const Checkbox: React.FC = ({ onChange={(e) => onChange(e.target.checked)} />