@daimo/pay 1.19.2 → 1.19.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/connectkit/package.json.js +117 -0
- package/build/connectkit/package.json.js.map +1 -0
- package/build/connectkit/src/assets/MobileWithLogos.js +329 -0
- package/build/connectkit/src/assets/MobileWithLogos.js.map +1 -0
- package/build/connectkit/src/assets/ScanIconWithLogos.js +243 -0
- package/build/connectkit/src/assets/ScanIconWithLogos.js.map +1 -0
- package/build/connectkit/src/assets/browsers.js +969 -0
- package/build/connectkit/src/assets/browsers.js.map +1 -0
- package/build/connectkit/src/assets/chains.js +648 -0
- package/build/connectkit/src/assets/chains.js.map +1 -0
- package/build/connectkit/src/assets/coins.js +43 -0
- package/build/connectkit/src/assets/coins.js.map +1 -0
- package/build/connectkit/src/assets/icons.js +273 -0
- package/build/connectkit/src/assets/icons.js.map +1 -0
- package/build/connectkit/src/assets/logos.js +1620 -0
- package/build/connectkit/src/assets/logos.js.map +1 -0
- package/build/connectkit/src/assets/wave.js +46 -0
- package/build/connectkit/src/assets/wave.js.map +1 -0
- package/build/connectkit/src/components/Common/Alert/index.js +13 -0
- package/build/connectkit/src/components/Common/Alert/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Alert/styles.js +55 -0
- package/build/connectkit/src/components/Common/Alert/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/AmountInput/AmountInputField.js +71 -0
- package/build/connectkit/src/components/Common/AmountInput/AmountInputField.js.map +1 -0
- package/build/connectkit/src/components/Common/AmountInput/index.js +159 -0
- package/build/connectkit/src/components/Common/AmountInput/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Avatar/index.js +78 -0
- package/build/connectkit/src/components/Common/Avatar/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Avatar/styles.js +54 -0
- package/build/connectkit/src/components/Common/Avatar/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/BrowserIcon/index.js +29 -0
- package/build/connectkit/src/components/Common/BrowserIcon/index.js.map +1 -0
- package/build/connectkit/src/components/Common/BrowserIcon/styles.js +20 -0
- package/build/connectkit/src/components/Common/BrowserIcon/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/Button/index.js +144 -0
- package/build/connectkit/src/components/Common/Button/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Button/styles.js +287 -0
- package/build/connectkit/src/components/Common/Button/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/Chain/index.js +141 -0
- package/build/connectkit/src/components/Common/Chain/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Chain/styles.js +90 -0
- package/build/connectkit/src/components/Common/Chain/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/ChainSelectList/index.js +250 -0
- package/build/connectkit/src/components/Common/ChainSelectList/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ChainSelectList/styles.js +226 -0
- package/build/connectkit/src/components/Common/ChainSelectList/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/CircleTimer.js +92 -0
- package/build/connectkit/src/components/Common/CircleTimer.js.map +1 -0
- package/build/connectkit/src/components/Common/ConnectorList/index.js +120 -0
- package/build/connectkit/src/components/Common/ConnectorList/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ConnectorList/styles.js +344 -0
- package/build/connectkit/src/components/Common/ConnectorList/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +78 -0
- package/build/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -0
- package/build/connectkit/src/components/Common/CopyToClipboard/index.js +33 -0
- package/build/connectkit/src/components/Common/CopyToClipboard/index.js.map +1 -0
- package/build/connectkit/src/components/Common/CustomQRCode/QRCode.js +128 -0
- package/build/connectkit/src/components/Common/CustomQRCode/QRCode.js.map +1 -0
- package/build/connectkit/src/components/Common/CustomQRCode/index.js +71 -0
- package/build/connectkit/src/components/Common/CustomQRCode/index.js.map +1 -0
- package/build/connectkit/src/components/Common/CustomQRCode/styles.js +139 -0
- package/build/connectkit/src/components/Common/CustomQRCode/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/FitText/index.js +34 -0
- package/build/connectkit/src/components/Common/FitText/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Modal/index.js +523 -0
- package/build/connectkit/src/components/Common/Modal/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Modal/styles.js +665 -0
- package/build/connectkit/src/components/Common/Modal/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/OptionsList/index.js +145 -0
- package/build/connectkit/src/components/Common/OptionsList/index.js.map +1 -0
- package/build/connectkit/src/components/Common/OptionsList/styles.js +138 -0
- package/build/connectkit/src/components/Common/OptionsList/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/OrderHeader/index.js +192 -0
- package/build/connectkit/src/components/Common/OrderHeader/index.js.map +1 -0
- package/build/connectkit/src/components/Common/PaymentBreakdown/index.js +70 -0
- package/build/connectkit/src/components/Common/PaymentBreakdown/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Portal/index.js +30 -0
- package/build/connectkit/src/components/Common/Portal/index.js.map +1 -0
- package/build/connectkit/src/components/Common/PoweredByFooter/index.js +66 -0
- package/build/connectkit/src/components/Common/PoweredByFooter/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ScrollArea/index.js +120 -0
- package/build/connectkit/src/components/Common/ScrollArea/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ScrollArea/styles.js +169 -0
- package/build/connectkit/src/components/Common/ScrollArea/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/SelectAnotherMethodButton/index.js +96 -0
- package/build/connectkit/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Spinner/index.js +64 -0
- package/build/connectkit/src/components/Common/Spinner/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Spinner/styles.js +22 -0
- package/build/connectkit/src/components/Common/Spinner/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/SwitchButton/index.js +43 -0
- package/build/connectkit/src/components/Common/SwitchButton/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ThemedButton/index.js +46 -0
- package/build/connectkit/src/components/Common/ThemedButton/index.js.map +1 -0
- package/build/connectkit/src/components/Common/ThemedButton/styles.js +152 -0
- package/build/connectkit/src/components/Common/ThemedButton/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/TokenChainLogo/index.js +62 -0
- package/build/connectkit/src/components/Common/TokenChainLogo/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Tooltip/index.js +129 -0
- package/build/connectkit/src/components/Common/Tooltip/index.js.map +1 -0
- package/build/connectkit/src/components/Common/Tooltip/styles.js +81 -0
- package/build/connectkit/src/components/Common/Tooltip/styles.js.map +1 -0
- package/build/connectkit/src/components/Common/WalletChainLogo/index.js +31 -0
- package/build/connectkit/src/components/Common/WalletChainLogo/index.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayButton/index.js +197 -0
- package/build/connectkit/src/components/DaimoPayButton/index.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayButton/styles.js +50 -0
- package/build/connectkit/src/components/DaimoPayButton/styles.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectUsing.js +68 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectUsing.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js +335 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js +131 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js +99 -0
- package/build/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayModal/index.js +462 -0
- package/build/connectkit/src/components/DaimoPayModal/index.js.map +1 -0
- package/build/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +25 -0
- package/build/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -0
- package/build/connectkit/src/components/Pages/About/graphics.js +853 -0
- package/build/connectkit/src/components/Pages/About/graphics.js.map +1 -0
- package/build/connectkit/src/components/Pages/About/index.js +222 -0
- package/build/connectkit/src/components/Pages/About/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/About/styles.js +140 -0
- package/build/connectkit/src/components/Pages/About/styles.js.map +1 -0
- package/build/connectkit/src/components/Pages/Confirmation/index.js +128 -0
- package/build/connectkit/src/components/Pages/Confirmation/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Connectors/index.js +28 -0
- package/build/connectkit/src/components/Pages/Connectors/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/DownloadApp/index.js +35 -0
- package/build/connectkit/src/components/Pages/DownloadApp/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Error/index.js +57 -0
- package/build/connectkit/src/components/Pages/Error/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/MobileConnectors/index.js +65 -0
- package/build/connectkit/src/components/Pages/MobileConnectors/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/MobileConnectors/styles.js +64 -0
- package/build/connectkit/src/components/Pages/MobileConnectors/styles.js.map +1 -0
- package/build/connectkit/src/components/Pages/Onboarding/index.js +34 -0
- package/build/connectkit/src/components/Pages/Onboarding/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Onboarding/styles.js +229 -0
- package/build/connectkit/src/components/Pages/Onboarding/styles.js.map +1 -0
- package/build/connectkit/src/components/Pages/PayWithToken/index.js +157 -0
- package/build/connectkit/src/components/Pages/PayWithToken/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectAmount/index.js +24 -0
- package/build/connectkit/src/components/Pages/SelectAmount/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js +79 -0
- package/build/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectDepositAddressChain/index.js +72 -0
- package/build/connectkit/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectExchange/index.js +41 -0
- package/build/connectkit/src/components/Pages/SelectExchange/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectExternalAmount/index.js +80 -0
- package/build/connectkit/src/components/Pages/SelectExternalAmount/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectMethod/index.js +230 -0
- package/build/connectkit/src/components/Pages/SelectMethod/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectToken/index.js +97 -0
- package/build/connectkit/src/components/Pages/SelectToken/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectWalletAmount/index.js +66 -0
- package/build/connectkit/src/components/Pages/SelectWalletAmount/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectWalletChain/index.js +55 -0
- package/build/connectkit/src/components/Pages/SelectWalletChain/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SelectZKP/index.js +41 -0
- package/build/connectkit/src/components/Pages/SelectZKP/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js +94 -0
- package/build/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js +92 -0
- package/build/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js +24 -0
- package/build/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/SwitchNetworks/index.js +45 -0
- package/build/connectkit/src/components/Pages/SwitchNetworks/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/WaitingDepositAddress/index.js +503 -0
- package/build/connectkit/src/components/Pages/WaitingDepositAddress/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/WaitingExternal/index.js +89 -0
- package/build/connectkit/src/components/Pages/WaitingExternal/index.js.map +1 -0
- package/build/connectkit/src/components/Pages/WaitingWallet/index.js +49 -0
- package/build/connectkit/src/components/Pages/WaitingWallet/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/CircleSpinner/index.js +104 -0
- package/build/connectkit/src/components/Spinners/CircleSpinner/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/CircleSpinner/styles.js +117 -0
- package/build/connectkit/src/components/Spinners/CircleSpinner/styles.js.map +1 -0
- package/build/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js +29 -0
- package/build/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/SquircleSpinner/index.js +68 -0
- package/build/connectkit/src/components/Spinners/SquircleSpinner/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/SquircleSpinner/styles.js +66 -0
- package/build/connectkit/src/components/Spinners/SquircleSpinner/styles.js.map +1 -0
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/index.js +24 -0
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js +40 -0
- package/build/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js.map +1 -0
- package/build/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js +37 -0
- package/build/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js.map +1 -0
- package/build/connectkit/src/components/Spinners/styles.js +32 -0
- package/build/connectkit/src/components/Spinners/styles.js.map +1 -0
- package/build/connectkit/src/constants/defaultTheme.js +6 -0
- package/build/connectkit/src/constants/defaultTheme.js.map +1 -0
- package/build/connectkit/src/constants/routes.js +32 -0
- package/build/connectkit/src/constants/routes.js.map +1 -0
- package/build/connectkit/src/defaultConfig.js +63 -0
- package/build/connectkit/src/defaultConfig.js.map +1 -0
- package/build/connectkit/src/defaultConnectors.js +37 -0
- package/build/connectkit/src/defaultConnectors.js.map +1 -0
- package/build/connectkit/src/hooks/useChainIsSupported.js +10 -0
- package/build/connectkit/src/hooks/useChainIsSupported.js.map +1 -0
- package/build/connectkit/src/hooks/useChains.js +10 -0
- package/build/connectkit/src/hooks/useChains.js.map +1 -0
- package/build/connectkit/src/hooks/useConnect.js +61 -0
- package/build/connectkit/src/hooks/useConnect.js.map +1 -0
- package/build/connectkit/src/hooks/useConnectCallback.js +21 -0
- package/build/connectkit/src/hooks/useConnectCallback.js.map +1 -0
- package/build/connectkit/src/hooks/useConnectors.js +9 -0
- package/build/connectkit/src/hooks/useConnectors.js.map +1 -0
- package/build/connectkit/src/hooks/useDaimoPay.js +107 -0
- package/build/connectkit/src/hooks/useDaimoPay.js.map +1 -0
- package/build/connectkit/src/hooks/useDaimoPayStatus.js +12 -0
- package/build/connectkit/src/hooks/useDaimoPayStatus.js.map +1 -0
- package/build/connectkit/src/hooks/useDaimoPayUI.js +15 -0
- package/build/connectkit/src/hooks/useDaimoPayUI.js.map +1 -0
- package/build/connectkit/src/hooks/useDepositAddressOptions.js +35 -0
- package/build/connectkit/src/hooks/useDepositAddressOptions.js.map +1 -0
- package/build/connectkit/src/hooks/useEnsFallbackConfig.js +16 -0
- package/build/connectkit/src/hooks/useEnsFallbackConfig.js.map +1 -0
- package/build/connectkit/src/hooks/useExternalPaymentOptions.js +64 -0
- package/build/connectkit/src/hooks/useExternalPaymentOptions.js.map +1 -0
- package/build/connectkit/src/hooks/useFitText.js +133 -0
- package/build/connectkit/src/hooks/useFitText.js.map +1 -0
- package/build/connectkit/src/hooks/useFocusTrap.js +53 -0
- package/build/connectkit/src/hooks/useFocusTrap.js.map +1 -0
- package/build/connectkit/src/hooks/useIsMobile.js +11 -0
- package/build/connectkit/src/hooks/useIsMobile.js.map +1 -0
- package/build/connectkit/src/hooks/useIsMounted.js +10 -0
- package/build/connectkit/src/hooks/useIsMounted.js.map +1 -0
- package/build/connectkit/src/hooks/useLastConnector.js +24 -0
- package/build/connectkit/src/hooks/useLastConnector.js.map +1 -0
- package/build/connectkit/src/hooks/useLocales.js +60 -0
- package/build/connectkit/src/hooks/useLocales.js.map +1 -0
- package/build/connectkit/src/hooks/useLockBodyScroll.js +47 -0
- package/build/connectkit/src/hooks/useLockBodyScroll.js.map +1 -0
- package/build/connectkit/src/hooks/useOrderUsdLimits.js +24 -0
- package/build/connectkit/src/hooks/useOrderUsdLimits.js.map +1 -0
- package/build/connectkit/src/hooks/usePayContext.js +11 -0
- package/build/connectkit/src/hooks/usePayContext.js.map +1 -0
- package/build/connectkit/src/hooks/usePaymentState.js +376 -0
- package/build/connectkit/src/hooks/usePaymentState.js.map +1 -0
- package/build/connectkit/src/hooks/usePrevious.js +13 -0
- package/build/connectkit/src/hooks/usePrevious.js.map +1 -0
- package/build/connectkit/src/hooks/useSolanaPaymentOptions.js +40 -0
- package/build/connectkit/src/hooks/useSolanaPaymentOptions.js.map +1 -0
- package/build/connectkit/src/hooks/useTokenOptions.js +152 -0
- package/build/connectkit/src/hooks/useTokenOptions.js.map +1 -0
- package/build/connectkit/src/hooks/useUntronAvailability.js +32 -0
- package/build/connectkit/src/hooks/useUntronAvailability.js.map +1 -0
- package/build/connectkit/src/hooks/useWalletPaymentOptions.js +97 -0
- package/build/connectkit/src/hooks/useWalletPaymentOptions.js.map +1 -0
- package/build/connectkit/src/hooks/useWindowSize.js +23 -0
- package/build/connectkit/src/hooks/useWindowSize.js.map +1 -0
- package/build/connectkit/src/index.js +14 -0
- package/build/connectkit/src/index.js.map +1 -0
- package/build/connectkit/src/localizations/index.js +48 -0
- package/build/connectkit/src/localizations/index.js.map +1 -0
- package/build/connectkit/src/localizations/locales/ar-AE.js +95 -0
- package/build/connectkit/src/localizations/locales/ar-AE.js.map +1 -0
- package/build/connectkit/src/localizations/locales/ca-AD.js +93 -0
- package/build/connectkit/src/localizations/locales/ca-AD.js.map +1 -0
- package/build/connectkit/src/localizations/locales/ee-EE.js +101 -0
- package/build/connectkit/src/localizations/locales/ee-EE.js.map +1 -0
- package/build/connectkit/src/localizations/locales/en-US.js +139 -0
- package/build/connectkit/src/localizations/locales/en-US.js.map +1 -0
- package/build/connectkit/src/localizations/locales/es-ES.js +131 -0
- package/build/connectkit/src/localizations/locales/es-ES.js.map +1 -0
- package/build/connectkit/src/localizations/locales/fa-IR.js +93 -0
- package/build/connectkit/src/localizations/locales/fa-IR.js.map +1 -0
- package/build/connectkit/src/localizations/locales/fr-FR.js +93 -0
- package/build/connectkit/src/localizations/locales/fr-FR.js.map +1 -0
- package/build/connectkit/src/localizations/locales/ja-JP.js +93 -0
- package/build/connectkit/src/localizations/locales/ja-JP.js.map +1 -0
- package/build/connectkit/src/localizations/locales/pt-BR.js +101 -0
- package/build/connectkit/src/localizations/locales/pt-BR.js.map +1 -0
- package/build/connectkit/src/localizations/locales/ru-RU.js +97 -0
- package/build/connectkit/src/localizations/locales/ru-RU.js.map +1 -0
- package/build/connectkit/src/localizations/locales/tr-TR.js +101 -0
- package/build/connectkit/src/localizations/locales/tr-TR.js.map +1 -0
- package/build/connectkit/src/localizations/locales/vi-VN.js +101 -0
- package/build/connectkit/src/localizations/locales/vi-VN.js.map +1 -0
- package/build/connectkit/src/localizations/locales/zh-CN.js +93 -0
- package/build/connectkit/src/localizations/locales/zh-CN.js.map +1 -0
- package/build/connectkit/src/payment/paymentEffects.js +269 -0
- package/build/connectkit/src/payment/paymentEffects.js.map +1 -0
- package/build/connectkit/src/payment/paymentFsm.js +194 -0
- package/build/connectkit/src/payment/paymentFsm.js.map +1 -0
- package/build/connectkit/src/payment/paymentStore.js +18 -0
- package/build/connectkit/src/payment/paymentStore.js.map +1 -0
- package/build/connectkit/src/payment/paymentUtils.js +10 -0
- package/build/connectkit/src/payment/paymentUtils.js.map +1 -0
- package/build/connectkit/src/provider/DaimoPayProvider.js +293 -0
- package/build/connectkit/src/provider/DaimoPayProvider.js.map +1 -0
- package/build/connectkit/src/provider/PayContext.js +6 -0
- package/build/connectkit/src/provider/PayContext.js.map +1 -0
- package/build/connectkit/src/provider/PaymentProvider.js +29 -0
- package/build/connectkit/src/provider/PaymentProvider.js.map +1 -0
- package/build/connectkit/src/provider/SolanaContextProvider.js +14 -0
- package/build/connectkit/src/provider/SolanaContextProvider.js.map +1 -0
- package/build/connectkit/src/provider/Web3ContextProvider.js +36 -0
- package/build/connectkit/src/provider/Web3ContextProvider.js.map +1 -0
- package/build/connectkit/src/stateStore.js +36 -0
- package/build/connectkit/src/stateStore.js.map +1 -0
- package/build/connectkit/src/styles/defaultTheme.js +80 -0
- package/build/connectkit/src/styles/defaultTheme.js.map +1 -0
- package/build/connectkit/src/styles/index.js +313 -0
- package/build/connectkit/src/styles/index.js.map +1 -0
- package/build/connectkit/src/styles/styled/index.js +6 -0
- package/build/connectkit/src/styles/styled/index.js.map +1 -0
- package/build/connectkit/src/styles/themes/base.js +141 -0
- package/build/connectkit/src/styles/themes/base.js.map +1 -0
- package/build/connectkit/src/styles/themes/index.js +13 -0
- package/build/connectkit/src/styles/themes/index.js.map +1 -0
- package/build/connectkit/src/styles/themes/midnight.js +76 -0
- package/build/connectkit/src/styles/themes/midnight.js.map +1 -0
- package/build/connectkit/src/styles/themes/minimal.js +96 -0
- package/build/connectkit/src/styles/themes/minimal.js.map +1 -0
- package/build/connectkit/src/styles/themes/nouns.js +81 -0
- package/build/connectkit/src/styles/themes/nouns.js.map +1 -0
- package/build/connectkit/src/styles/themes/retro.js +106 -0
- package/build/connectkit/src/styles/themes/retro.js.map +1 -0
- package/build/connectkit/src/styles/themes/rounded.js +106 -0
- package/build/connectkit/src/styles/themes/rounded.js.map +1 -0
- package/build/connectkit/src/styles/themes/soft.js +71 -0
- package/build/connectkit/src/styles/themes/soft.js.map +1 -0
- package/build/connectkit/src/styles/themes/web95.js +132 -0
- package/build/connectkit/src/styles/themes/web95.js.map +1 -0
- package/build/connectkit/src/utils/exports.js +6 -0
- package/build/connectkit/src/utils/exports.js.map +1 -0
- package/build/connectkit/src/utils/format.js +45 -0
- package/build/connectkit/src/utils/format.js.map +1 -0
- package/build/connectkit/src/utils/index.js +42 -0
- package/build/connectkit/src/utils/index.js.map +1 -0
- package/build/connectkit/src/utils/p3.js +15 -0
- package/build/connectkit/src/utils/p3.js.map +1 -0
- package/build/connectkit/src/utils/platform.js +11 -0
- package/build/connectkit/src/utils/platform.js.map +1 -0
- package/build/connectkit/src/utils/polling.js +35 -0
- package/build/connectkit/src/utils/polling.js.map +1 -0
- package/build/connectkit/src/utils/supportUrl.js +16 -0
- package/build/connectkit/src/utils/supportUrl.js.map +1 -0
- package/build/connectkit/src/utils/trpc.js +19 -0
- package/build/connectkit/src/utils/trpc.js.map +1 -0
- package/build/connectkit/src/utils/validateInput.js +16 -0
- package/build/connectkit/src/utils/validateInput.js.map +1 -0
- package/build/connectkit/src/wallets/index.js +21 -0
- package/build/connectkit/src/wallets/index.js.map +1 -0
- package/build/connectkit/src/wallets/useWallets.js +207 -0
- package/build/connectkit/src/wallets/useWallets.js.map +1 -0
- package/build/connectkit/src/wallets/walletConfigs.js +277 -0
- package/build/connectkit/src/wallets/walletConfigs.js.map +1 -0
- package/build/connectkit/src/world-mini-app/WorldPayButton.js +148 -0
- package/build/connectkit/src/world-mini-app/WorldPayButton.js.map +1 -0
- package/build/connectkit/src/world-mini-app/promptWorldPayment.js +59 -0
- package/build/connectkit/src/world-mini-app/promptWorldPayment.js.map +1 -0
- package/build/connectkit/src/world.js +2 -0
- package/build/connectkit/src/world.js.map +1 -0
- package/build/package.json.js +2 -2
- package/build/pay-common/src/chain.js +9 -0
- package/build/pay-common/src/chain.js.map +1 -0
- package/build/src/assets/coins.js +43 -0
- package/build/src/assets/coins.js.map +1 -0
- package/build/src/components/Common/CopyToClipboard/index.js +33 -0
- package/build/src/components/Common/CopyToClipboard/index.js.map +1 -0
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +1 -1
- package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
- package/build/src/components/DaimoPayModal/index.js +23 -3
- package/build/src/components/DaimoPayModal/index.js.map +1 -1
- package/build/src/components/Pages/DownloadApp/index.js +35 -0
- package/build/src/components/Pages/DownloadApp/index.js.map +1 -0
- package/build/src/components/Pages/SelectMethod/index.js +5 -3
- package/build/src/components/Pages/SelectMethod/index.js.map +1 -1
- package/build/src/components/Pages/SelectToken/index.js +3 -1
- package/build/src/components/Pages/SelectToken/index.js.map +1 -1
- package/build/src/localizations/locales/en-US.js +1 -1
- package/build/src/localizations/locales/en-US.js.map +1 -1
- package/build/src/localizations/locales/es-ES.js +1 -1
- package/build/src/localizations/locales/es-ES.js.map +1 -1
- package/build/src/wallets/useWallets.js.map +1 -1
- package/build/types-20835014.d.ts +68 -0
- package/package.json +2 -2
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { AlertContainer, IconContainer } from './styles.js';
|
|
3
|
+
|
|
4
|
+
const Alert = ({ children, error, icon }) => {
|
|
5
|
+
return /* @__PURE__ */ jsxs(AlertContainer, { $error: error, children: [
|
|
6
|
+
icon && /* @__PURE__ */ jsx(IconContainer, { children: icon }),
|
|
7
|
+
/* @__PURE__ */ jsx("div", { children })
|
|
8
|
+
] });
|
|
9
|
+
};
|
|
10
|
+
Alert.displayName = "Alert";
|
|
11
|
+
|
|
12
|
+
export { Alert as default };
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Common/Alert/index.tsx"],"sourcesContent":["import { AlertContainer, IconContainer } from \"./styles\";\nimport { AlertProps } from \"./types\";\n\nconst Alert = ({ children, error, icon }: AlertProps) => {\n return (\n <AlertContainer $error={error}>\n {icon && <IconContainer>{icon}</IconContainer>}\n <div>{children}</div>\n </AlertContainer>\n );\n};\nAlert.displayName = \"Alert\";\n\nexport default Alert;\n"],"names":[],"mappings":";;;AAGA,MAAM,QAAQ,CAAC,EAAE,QAAU,EAAA,KAAA,EAAO,MAAuB,KAAA;AACvD,EACE,uBAAA,IAAA,CAAC,cAAe,EAAA,EAAA,MAAA,EAAQ,KACrB,EAAA,QAAA,EAAA;AAAA,IAAQ,IAAA,oBAAA,GAAA,CAAC,iBAAe,QAAK,EAAA,IAAA,EAAA,CAAA;AAAA,oBAC9B,GAAA,CAAC,SAAK,QAAS,EAAA,CAAA;AAAA,GACjB,EAAA,CAAA,CAAA;AAEJ,EAAA;AACA,KAAA,CAAM,WAAc,GAAA,OAAA;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { motion } from 'framer-motion';
|
|
2
|
+
import { css } from 'styled-components';
|
|
3
|
+
import defaultTheme from '../../../constants/defaultTheme.js';
|
|
4
|
+
import styled from '../../../styles/styled/index.js';
|
|
5
|
+
|
|
6
|
+
const AlertContainer = styled(motion.div)`
|
|
7
|
+
display: flex;
|
|
8
|
+
gap: 8px;
|
|
9
|
+
position: relative;
|
|
10
|
+
border-radius: 9px;
|
|
11
|
+
margin: 0 auto;
|
|
12
|
+
padding: 10px;
|
|
13
|
+
text-align: left;
|
|
14
|
+
font-size: 14px;
|
|
15
|
+
line-height: 17px;
|
|
16
|
+
font-weight: 400;
|
|
17
|
+
max-width: 260px;
|
|
18
|
+
min-width: 100%;
|
|
19
|
+
|
|
20
|
+
border-radius: var(--ck-alert-border-radius, 12px);
|
|
21
|
+
color: var(--ck-alert-color, var(--ck-body-color-muted));
|
|
22
|
+
background: var(--ck-alert-background, var(--ck-body-background-secondary));
|
|
23
|
+
box-shadow: var(--ck-alert-box-shadow, var(--ck-body-box-shadow));
|
|
24
|
+
|
|
25
|
+
@media only screen and (max-width: ${defaultTheme.mobileWidth}px) {
|
|
26
|
+
padding: 16px;
|
|
27
|
+
font-size: 16px;
|
|
28
|
+
line-height: 21px;
|
|
29
|
+
border-radius: 24px;
|
|
30
|
+
text-align: center;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
${($error) => {
|
|
34
|
+
if ($error)
|
|
35
|
+
return css`
|
|
36
|
+
color: #fff;
|
|
37
|
+
background: var(--ck-body-color-danger, red);
|
|
38
|
+
`;
|
|
39
|
+
}}
|
|
40
|
+
`;
|
|
41
|
+
const IconContainer = styled(motion.div)`
|
|
42
|
+
width: 24px;
|
|
43
|
+
height: 24px;
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
justify-content: center;
|
|
47
|
+
svg {
|
|
48
|
+
display: block;
|
|
49
|
+
width: 100%;
|
|
50
|
+
height: auto;
|
|
51
|
+
}
|
|
52
|
+
`;
|
|
53
|
+
|
|
54
|
+
export { AlertContainer, IconContainer };
|
|
55
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../../src/components/Common/Alert/styles.ts"],"sourcesContent":["import { motion } from \"framer-motion\";\nimport { css } from \"styled-components\";\nimport defaultTheme from \"../../../constants/defaultTheme\";\nimport styled from \"./../../../styles/styled\";\n\nexport const AlertContainer = styled(motion.div)<{ $error?: boolean }>`\n display: flex;\n gap: 8px;\n position: relative;\n border-radius: 9px;\n margin: 0 auto;\n padding: 10px;\n text-align: left;\n font-size: 14px;\n line-height: 17px;\n font-weight: 400;\n max-width: 260px;\n min-width: 100%;\n\n border-radius: var(--ck-alert-border-radius, 12px);\n color: var(--ck-alert-color, var(--ck-body-color-muted));\n background: var(--ck-alert-background, var(--ck-body-background-secondary));\n box-shadow: var(--ck-alert-box-shadow, var(--ck-body-box-shadow));\n\n @media only screen and (max-width: ${defaultTheme.mobileWidth}px) {\n padding: 16px;\n font-size: 16px;\n line-height: 21px;\n border-radius: 24px;\n text-align: center;\n }\n\n ${($error) => {\n if ($error)\n return css`\n color: #fff;\n background: var(--ck-body-color-danger, red);\n `;\n }}\n`;\n\nexport const IconContainer = styled(motion.div)`\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n display: block;\n width: 100%;\n height: auto;\n }\n`;\n"],"names":[],"mappings":";;;;;AAKa,MAAA,cAAA,GAAiB,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qCAAA,EAmBR,aAAa,WAAW,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,EAQ3D,CAAC,MAAW,KAAA;AACZ,EAAI,IAAA,MAAA;AACF,IAAO,OAAA,GAAA,CAAA;AAAA;AAAA;AAAA,MAAA,CAAA,CAAA;AAIX,CAAC,CAAA;AAAA,EAAA;AAGU,MAAA,aAAA,GAAgB,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useRef, useEffect } from 'react';
|
|
3
|
+
import styled from '../../../styles/styled/index.js';
|
|
4
|
+
import { ModalBody } from '../Modal/styles.js';
|
|
5
|
+
|
|
6
|
+
const Container = styled.button`
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
gap: 4px;
|
|
11
|
+
background: transparent;
|
|
12
|
+
`;
|
|
13
|
+
const InputField = styled.input`
|
|
14
|
+
margin: 0;
|
|
15
|
+
padding: 0;
|
|
16
|
+
background: none;
|
|
17
|
+
border: none;
|
|
18
|
+
outline: none;
|
|
19
|
+
font-size: 30px;
|
|
20
|
+
font-weight: var(--ck-modal-h1-font-weight, 600);
|
|
21
|
+
color: var(--ck-body-color);
|
|
22
|
+
width: ${(props) => {
|
|
23
|
+
const length = props.value?.length ?? 0;
|
|
24
|
+
if (length === 0) return "3.55ch";
|
|
25
|
+
const numPunctuations = (props.value?.match(/[.,]/g) || []).length;
|
|
26
|
+
const adjustedLength = length - numPunctuations * 0.55;
|
|
27
|
+
return `${Math.min(adjustedLength, 10)}ch`;
|
|
28
|
+
}};
|
|
29
|
+
min-width: 1ch;
|
|
30
|
+
max-width: 10ch;
|
|
31
|
+
`;
|
|
32
|
+
const AnimatedCurrency = styled(ModalBody)`
|
|
33
|
+
@keyframes fadeInDown {
|
|
34
|
+
from {
|
|
35
|
+
opacity: 0;
|
|
36
|
+
transform: translateY(-8px);
|
|
37
|
+
}
|
|
38
|
+
to {
|
|
39
|
+
opacity: 1;
|
|
40
|
+
transform: translateY(0);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
animation: fadeInDown 0.3s ease-out forwards;
|
|
45
|
+
font-size: ${(props) => props.$small ? "16px" : "24px"};
|
|
46
|
+
`;
|
|
47
|
+
const AmountInputField = ({ value, onChange, currency = "$", onKeyDown }) => {
|
|
48
|
+
const inputRef = useRef(null);
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
inputRef.current?.focus();
|
|
51
|
+
}, [value]);
|
|
52
|
+
return /* @__PURE__ */ jsxs(Container, { children: [
|
|
53
|
+
currency === "$" && /* @__PURE__ */ jsx(AnimatedCurrency, { children: currency }),
|
|
54
|
+
/* @__PURE__ */ jsx(
|
|
55
|
+
InputField,
|
|
56
|
+
{
|
|
57
|
+
ref: inputRef,
|
|
58
|
+
type: "text",
|
|
59
|
+
inputMode: "decimal",
|
|
60
|
+
value,
|
|
61
|
+
onChange,
|
|
62
|
+
placeholder: "0.00",
|
|
63
|
+
onKeyDown
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
currency !== "$" && /* @__PURE__ */ jsx(AnimatedCurrency, { $small: true, children: currency })
|
|
67
|
+
] });
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export { AmountInputField as default };
|
|
71
|
+
//# sourceMappingURL=AmountInputField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmountInputField.js","sources":["../../../../../../src/components/Common/AmountInput/AmountInputField.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport styled from \"../../../styles/styled\";\nimport { ModalBody } from \"../Modal/styles\";\n\nconst Container = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 4px;\n background: transparent;\n`;\n\nconst InputField = styled.input`\n margin: 0;\n padding: 0;\n background: none;\n border: none;\n outline: none;\n font-size: 30px;\n font-weight: var(--ck-modal-h1-font-weight, 600);\n color: var(--ck-body-color);\n width: ${(props) => {\n const length = props.value?.length ?? 0;\n // Placeholder is \"0.00\", 3ch for digits + 0.55ch for decimal point\n if (length === 0) return \"3.55ch\";\n // Reduce width when decimal or commas are present since they're smaller than normal chars\n const numPunctuations = (props.value?.match(/[.,]/g) || []).length;\n const adjustedLength = length - numPunctuations * 0.55;\n return `${Math.min(adjustedLength, 10)}ch`;\n }};\n min-width: 1ch;\n max-width: 10ch;\n`;\n\nconst AnimatedCurrency = styled(ModalBody)<{ $small?: boolean }>`\n @keyframes fadeInDown {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n animation: fadeInDown 0.3s ease-out forwards;\n font-size: ${(props) => (props.$small ? \"16px\" : \"24px\")};\n`;\n\nconst AmountInputField: React.FC<{\n value: string;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n currency?: string;\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n}> = ({ value, onChange, currency = \"$\", onKeyDown }) => {\n // Focus the input when the component mounts so the user can start typing immediately\n const inputRef = useRef<HTMLInputElement>(null);\n useEffect(() => {\n inputRef.current?.focus();\n }, [value]);\n\n return (\n <Container>\n {currency === \"$\" && <AnimatedCurrency>{currency}</AnimatedCurrency>}\n <InputField\n ref={inputRef}\n type=\"text\"\n inputMode=\"decimal\"\n value={value}\n onChange={onChange}\n placeholder=\"0.00\"\n onKeyDown={onKeyDown}\n />\n {currency !== \"$\" && (\n <AnimatedCurrency $small>{currency}</AnimatedCurrency>\n )}\n </Container>\n );\n};\n\nexport default AmountInputField;\n"],"names":[],"mappings":";;;;;AAIA,MAAM,YAAY,MAAO,CAAA,MAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAQzB,MAAM,aAAa,MAAO,CAAA,KAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAA,EASf,CAAC,KAAU,KAAA;AAClB,EAAM,MAAA,MAAA,GAAS,KAAM,CAAA,KAAA,EAAO,MAAU,IAAA,CAAA,CAAA;AAEtC,EAAI,IAAA,MAAA,KAAW,GAAU,OAAA,QAAA,CAAA;AAEzB,EAAA,MAAM,mBAAmB,KAAM,CAAA,KAAA,EAAO,MAAM,OAAO,CAAA,IAAK,EAAI,EAAA,MAAA,CAAA;AAC5D,EAAM,MAAA,cAAA,GAAiB,SAAS,eAAkB,GAAA,IAAA,CAAA;AAClD,EAAA,OAAO,CAAG,EAAA,IAAA,CAAK,GAAI,CAAA,cAAA,EAAgB,EAAE,CAAC,CAAA,EAAA,CAAA,CAAA;AACxC,CAAC,CAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAKH,MAAM,gBAAA,GAAmB,OAAO,SAAS,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAa1B,CAAC,KAAA,KAAW,KAAM,CAAA,MAAA,GAAS,SAAS,MAAO,CAAA;AAAA,CAAA,CAAA;AAGpD,MAAA,gBAAA,GAKD,CAAC,EAAE,KAAA,EAAO,UAAU,QAAW,GAAA,GAAA,EAAK,WAAgB,KAAA;AAEvD,EAAM,MAAA,QAAA,GAAW,OAAyB,IAAI,CAAA,CAAA;AAC9C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS,SAAS,KAAM,EAAA,CAAA;AAAA,GAC1B,EAAG,CAAC,KAAK,CAAC,CAAA,CAAA;AAEV,EAAA,4BACG,SACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAa,QAAA,KAAA,GAAA,oBAAQ,GAAA,CAAA,gBAAA,EAAA,EAAkB,QAAS,EAAA,QAAA,EAAA,CAAA;AAAA,oBACjD,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAK,EAAA,QAAA;AAAA,QACL,IAAK,EAAA,MAAA;AAAA,QACL,SAAU,EAAA,SAAA;AAAA,QACV,KAAA;AAAA,QACA,QAAA;AAAA,QACA,WAAY,EAAA,MAAA;AAAA,QACZ,SAAA;AAAA,OAAA;AAAA,KACF;AAAA,IACC,aAAa,GACZ,oBAAA,GAAA,CAAC,gBAAiB,EAAA,EAAA,MAAA,EAAM,MAAE,QAAS,EAAA,QAAA,EAAA,CAAA;AAAA,GAEvC,EAAA,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { usePayContext } from '../../../hooks/usePayContext.js';
|
|
4
|
+
import { PageContent, ModalContent, ModalBody } from '../Modal/styles.js';
|
|
5
|
+
import { parseUnits } from 'viem';
|
|
6
|
+
import styled from '../../../styles/styled/index.js';
|
|
7
|
+
import { formatUsd, usdToRoundedTokenAmount, USD_DECIMALS, tokenAmountToRoundedUsd, roundUsd, roundTokenAmount, roundTokenAmountUnits } from '../../../utils/format.js';
|
|
8
|
+
import { isValidNumber, sanitizeNumber } from '../../../utils/validateInput.js';
|
|
9
|
+
import Button from '../Button/index.js';
|
|
10
|
+
import SwitchButton from '../SwitchButton/index.js';
|
|
11
|
+
import TokenLogoSpinner from '../../Spinners/TokenLogoSpinner/index.js';
|
|
12
|
+
import AmountInputField from './AmountInputField.js';
|
|
13
|
+
|
|
14
|
+
const MultiCurrencySelectAmount = ({ selectedTokenOption, setSelectedTokenOption, nextPage }) => {
|
|
15
|
+
const { paymentState, setRoute, triggerResize } = usePayContext();
|
|
16
|
+
const maxUsdLimit = paymentState.getOrderUsdLimit();
|
|
17
|
+
const balanceToken = selectedTokenOption.balance.token;
|
|
18
|
+
const minimumMessage = selectedTokenOption.minimumRequired.usd > 0 ? `Minimum
|
|
19
|
+
${formatUsd(selectedTokenOption.minimumRequired.usd, "up")}` : null;
|
|
20
|
+
const [usdValue, setUsdValue] = useState("");
|
|
21
|
+
const [tokenValue, setTokenValue] = useState(
|
|
22
|
+
usdToRoundedTokenAmount(0, balanceToken)
|
|
23
|
+
);
|
|
24
|
+
const [isEditingUsd, setIsEditingUsd] = useState(true);
|
|
25
|
+
const [message, setMessage] = useState(minimumMessage);
|
|
26
|
+
const [continueDisabled, setContinueDisabled] = useState(true);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
triggerResize();
|
|
29
|
+
}, [message]);
|
|
30
|
+
const updateValues = (newUsdValue, newTokenValue, newIsEditingUsd) => {
|
|
31
|
+
const sanitizedUsdValue = sanitizeNumber(newUsdValue);
|
|
32
|
+
const sanitizedTokenValue = sanitizeNumber(newTokenValue);
|
|
33
|
+
setUsdValue(
|
|
34
|
+
newIsEditingUsd ? newUsdValue : roundUsd(Number(sanitizedUsdValue))
|
|
35
|
+
);
|
|
36
|
+
setTokenValue(
|
|
37
|
+
newIsEditingUsd ? roundTokenAmountUnits(Number(sanitizedTokenValue), balanceToken) : newTokenValue
|
|
38
|
+
);
|
|
39
|
+
setIsEditingUsd(newIsEditingUsd);
|
|
40
|
+
setContinueDisabled(
|
|
41
|
+
Number(sanitizedUsdValue) <= 0 || Number(sanitizedUsdValue) < selectedTokenOption.minimumRequired.usd || Number(sanitizedUsdValue) > selectedTokenOption.balance.usd || Number(sanitizedUsdValue) > maxUsdLimit
|
|
42
|
+
);
|
|
43
|
+
if (Number(sanitizedUsdValue) > selectedTokenOption.balance.usd) {
|
|
44
|
+
setMessage(
|
|
45
|
+
`Amount exceeds your balance:
|
|
46
|
+
${formatUsd(selectedTokenOption.balance.usd)}`
|
|
47
|
+
);
|
|
48
|
+
} else if (Number(usdValue) > maxUsdLimit) {
|
|
49
|
+
setMessage(`Maximum ${formatUsd(maxUsdLimit)}`);
|
|
50
|
+
} else {
|
|
51
|
+
setMessage(minimumMessage);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const handleAmountChange = (e) => {
|
|
55
|
+
const value = e.target.value;
|
|
56
|
+
const maxDecimals = isEditingUsd ? USD_DECIMALS : balanceToken.displayDecimals;
|
|
57
|
+
if (value !== "" && !isValidNumber(value, maxDecimals)) return;
|
|
58
|
+
const sanitizedValue = sanitizeNumber(value);
|
|
59
|
+
const newUsdValue = isEditingUsd ? value : tokenAmountToRoundedUsd(
|
|
60
|
+
parseUnits(sanitizedValue, balanceToken.decimals),
|
|
61
|
+
balanceToken
|
|
62
|
+
);
|
|
63
|
+
const newTokenValue = isEditingUsd ? usdToRoundedTokenAmount(Number(sanitizedValue), balanceToken) : value;
|
|
64
|
+
updateValues(newUsdValue, newTokenValue, isEditingUsd);
|
|
65
|
+
};
|
|
66
|
+
const handleMax = () => {
|
|
67
|
+
const usdValue2 = roundUsd(Number(selectedTokenOption.balance.usd));
|
|
68
|
+
const tokenValue2 = roundTokenAmount(
|
|
69
|
+
selectedTokenOption.balance.amount,
|
|
70
|
+
balanceToken
|
|
71
|
+
);
|
|
72
|
+
updateValues(usdValue2, tokenValue2, isEditingUsd);
|
|
73
|
+
};
|
|
74
|
+
const handleKeyDown = (e) => {
|
|
75
|
+
if (e.key === "Enter" && !continueDisabled) {
|
|
76
|
+
handleContinue();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const handleSwitchCurrency = () => {
|
|
80
|
+
updateValues(usdValue, tokenValue, !isEditingUsd);
|
|
81
|
+
};
|
|
82
|
+
const handleContinue = () => {
|
|
83
|
+
const usd = Number(sanitizeNumber(usdValue));
|
|
84
|
+
const amountUnits = usd / balanceToken.usd;
|
|
85
|
+
const amount = parseUnits(amountUnits.toString(), balanceToken.decimals);
|
|
86
|
+
setSelectedTokenOption({
|
|
87
|
+
...selectedTokenOption,
|
|
88
|
+
required: {
|
|
89
|
+
token: balanceToken,
|
|
90
|
+
amount: amount.toString(),
|
|
91
|
+
usd
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
paymentState.setChosenUsd(usd);
|
|
95
|
+
setRoute(nextPage, {
|
|
96
|
+
amountUsd: usd,
|
|
97
|
+
amountUnits,
|
|
98
|
+
tokenSymbol: balanceToken.symbol
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
return /* @__PURE__ */ jsxs(PageContent, { children: [
|
|
102
|
+
/* @__PURE__ */ jsx(TokenLogoSpinner, { token: balanceToken }),
|
|
103
|
+
/* @__PURE__ */ jsxs(ModalContent, { $preserveDisplay: true, children: [
|
|
104
|
+
/* @__PURE__ */ jsxs(AmountInputContainer, { children: [
|
|
105
|
+
/* @__PURE__ */ jsx(MaxButton, { style: { visibility: "hidden" }, children: "Max" }),
|
|
106
|
+
/* @__PURE__ */ jsx(
|
|
107
|
+
AmountInputField,
|
|
108
|
+
{
|
|
109
|
+
value: isEditingUsd ? usdValue : tokenValue,
|
|
110
|
+
onChange: handleAmountChange,
|
|
111
|
+
currency: isEditingUsd ? "$" : balanceToken.symbol,
|
|
112
|
+
onKeyDown: handleKeyDown
|
|
113
|
+
}
|
|
114
|
+
),
|
|
115
|
+
/* @__PURE__ */ jsx(MaxButton, { onClick: handleMax, children: "Max" })
|
|
116
|
+
] }),
|
|
117
|
+
balanceToken.fiatISO !== "USD" && /* @__PURE__ */ jsx(SwitchContainer, { children: /* @__PURE__ */ jsx(SwitchButton, { onClick: handleSwitchCurrency, children: /* @__PURE__ */ jsx(SecondaryAmount, { children: isEditingUsd ? `${tokenValue} ${balanceToken.symbol}` : `$${usdValue}` }) }) }),
|
|
118
|
+
message && /* @__PURE__ */ jsx(ModalBody, { children: message }),
|
|
119
|
+
/* @__PURE__ */ jsx(Button, { onClick: handleContinue, disabled: continueDisabled, children: "Continue" })
|
|
120
|
+
] })
|
|
121
|
+
] });
|
|
122
|
+
};
|
|
123
|
+
const AmountInputContainer = styled.div`
|
|
124
|
+
display: flex;
|
|
125
|
+
align-items: center;
|
|
126
|
+
justify-content: center;
|
|
127
|
+
gap: 6px;
|
|
128
|
+
`;
|
|
129
|
+
const SecondaryAmount = styled.div`
|
|
130
|
+
font-size: 16px;
|
|
131
|
+
font-weight: 400;
|
|
132
|
+
line-height: 21px;
|
|
133
|
+
color: var(--ck-body-color-muted);
|
|
134
|
+
strong {
|
|
135
|
+
font-weight: 500;
|
|
136
|
+
color: var(--ck-body-color);
|
|
137
|
+
}
|
|
138
|
+
`;
|
|
139
|
+
const MaxButton = styled.button`
|
|
140
|
+
display: inline-block;
|
|
141
|
+
padding: 3px 8px;
|
|
142
|
+
border-radius: var(--ck-primary-button-border-radius);
|
|
143
|
+
font-size: 14px;
|
|
144
|
+
font-weight: 400;
|
|
145
|
+
background: var(
|
|
146
|
+
--ck-secondary-button-background,
|
|
147
|
+
var(--ck-body-background-secondary)
|
|
148
|
+
);
|
|
149
|
+
color: var(--ck-body-color-secondary);
|
|
150
|
+
cursor: pointer;
|
|
151
|
+
`;
|
|
152
|
+
const SwitchContainer = styled.div`
|
|
153
|
+
display: flex;
|
|
154
|
+
align-items: center;
|
|
155
|
+
justify-content: center;
|
|
156
|
+
`;
|
|
157
|
+
|
|
158
|
+
export { MultiCurrencySelectAmount as default };
|
|
159
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Common/AmountInput/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport {\n ModalBody,\n ModalContent,\n PageContent,\n} from \"../../Common/Modal/styles\";\n\nimport { WalletPaymentOption } from \"@daimo/pay-common\";\nimport { parseUnits } from \"viem\";\nimport styled from \"../../../styles/styled\";\nimport {\n formatUsd,\n roundTokenAmount,\n roundTokenAmountUnits,\n roundUsd,\n tokenAmountToRoundedUsd,\n USD_DECIMALS,\n usdToRoundedTokenAmount,\n} from \"../../../utils/format\";\nimport { isValidNumber, sanitizeNumber } from \"../../../utils/validateInput\";\nimport Button from \"../../Common/Button\";\nimport SwitchButton from \"../../Common/SwitchButton\";\nimport TokenLogoSpinner from \"../../Spinners/TokenLogoSpinner\";\nimport AmountInputField from \"./AmountInputField\";\n\nconst MultiCurrencySelectAmount: React.FC<{\n selectedTokenOption: WalletPaymentOption;\n setSelectedTokenOption: (option: WalletPaymentOption) => void;\n nextPage: ROUTES;\n}> = ({ selectedTokenOption, setSelectedTokenOption, nextPage }) => {\n const { paymentState, setRoute, triggerResize } = usePayContext();\n const maxUsdLimit = paymentState.getOrderUsdLimit();\n\n const balanceToken = selectedTokenOption.balance.token;\n\n const minimumMessage =\n selectedTokenOption.minimumRequired.usd > 0\n ? `Minimum \n ${formatUsd(selectedTokenOption.minimumRequired.usd, \"up\")}`\n : null;\n\n const [usdValue, setUsdValue] = useState(\"\");\n const [tokenValue, setTokenValue] = useState(\n usdToRoundedTokenAmount(0, balanceToken),\n );\n const [isEditingUsd, setIsEditingUsd] = useState(true);\n const [message, setMessage] = useState<string | null>(minimumMessage);\n const [continueDisabled, setContinueDisabled] = useState(true);\n\n useEffect(() => {\n triggerResize();\n }, [message]); // eslint-disable-line react-hooks/exhaustive-deps\n\n /**\n * Update the editable value and secondary value, taking into account whether\n * the user is currently editing the USD value or the token value.\n */\n const updateValues = (\n newUsdValue: string,\n newTokenValue: string,\n newIsEditingUsd: boolean,\n ) => {\n const sanitizedUsdValue = sanitizeNumber(newUsdValue);\n const sanitizedTokenValue = sanitizeNumber(newTokenValue);\n\n // Update the state. Don't sanitize the value if the user is editing it.\n setUsdValue(\n newIsEditingUsd ? newUsdValue : roundUsd(Number(sanitizedUsdValue)),\n );\n setTokenValue(\n newIsEditingUsd\n ? roundTokenAmountUnits(Number(sanitizedTokenValue), balanceToken)\n : newTokenValue,\n );\n setIsEditingUsd(newIsEditingUsd);\n\n setContinueDisabled(\n Number(sanitizedUsdValue) <= 0 ||\n Number(sanitizedUsdValue) < selectedTokenOption.minimumRequired.usd ||\n Number(sanitizedUsdValue) > selectedTokenOption.balance.usd ||\n Number(sanitizedUsdValue) > maxUsdLimit,\n );\n\n if (Number(sanitizedUsdValue) > selectedTokenOption.balance.usd) {\n setMessage(\n `Amount exceeds your balance: \n ${formatUsd(selectedTokenOption.balance.usd)}`,\n );\n } else if (Number(usdValue) > maxUsdLimit) {\n setMessage(`Maximum ${formatUsd(maxUsdLimit)}`);\n } else {\n setMessage(minimumMessage);\n }\n };\n\n const handleAmountChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n const maxDecimals = isEditingUsd\n ? USD_DECIMALS\n : balanceToken.displayDecimals;\n if (value !== \"\" && !isValidNumber(value, maxDecimals)) return;\n\n const sanitizedValue = sanitizeNumber(value);\n\n const newUsdValue = isEditingUsd\n ? value\n : tokenAmountToRoundedUsd(\n parseUnits(sanitizedValue, balanceToken.decimals),\n balanceToken,\n );\n const newTokenValue = isEditingUsd\n ? usdToRoundedTokenAmount(Number(sanitizedValue), balanceToken)\n : value;\n updateValues(newUsdValue, newTokenValue, isEditingUsd);\n };\n\n const handleMax = () => {\n const usdValue = roundUsd(Number(selectedTokenOption.balance.usd));\n const tokenValue = roundTokenAmount(\n selectedTokenOption.balance.amount,\n balanceToken,\n );\n updateValues(usdValue, tokenValue, isEditingUsd);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && !continueDisabled) {\n handleContinue();\n }\n };\n\n const handleSwitchCurrency = () => {\n updateValues(usdValue, tokenValue, !isEditingUsd);\n };\n\n const handleContinue = () => {\n const usd = Number(sanitizeNumber(usdValue));\n const amountUnits = usd / balanceToken.usd;\n const amount = parseUnits(amountUnits.toString(), balanceToken.decimals);\n setSelectedTokenOption({\n ...selectedTokenOption,\n required: {\n token: balanceToken,\n amount: amount.toString() as `${bigint}`,\n usd,\n },\n });\n paymentState.setChosenUsd(usd);\n setRoute(nextPage, {\n amountUsd: usd,\n amountUnits,\n tokenSymbol: balanceToken.symbol,\n });\n };\n\n return (\n <PageContent>\n <TokenLogoSpinner token={balanceToken} />\n <ModalContent $preserveDisplay={true}>\n <AmountInputContainer>\n {/* Invisible div to balance spacing */}\n <MaxButton style={{ visibility: \"hidden\" }}>Max</MaxButton>\n <AmountInputField\n value={isEditingUsd ? usdValue : tokenValue}\n onChange={handleAmountChange}\n currency={isEditingUsd ? \"$\" : balanceToken.symbol}\n onKeyDown={handleKeyDown}\n />\n <MaxButton onClick={handleMax}>Max</MaxButton>\n </AmountInputContainer>\n\n {balanceToken.fiatISO !== \"USD\" && (\n <SwitchContainer>\n <SwitchButton onClick={handleSwitchCurrency}>\n <SecondaryAmount>\n {isEditingUsd\n ? `${tokenValue} ${balanceToken.symbol}`\n : `$${usdValue}`}\n </SecondaryAmount>\n </SwitchButton>\n </SwitchContainer>\n )}\n\n {message && <ModalBody>{message}</ModalBody>}\n\n <Button onClick={handleContinue} disabled={continueDisabled}>\n Continue\n </Button>\n </ModalContent>\n </PageContent>\n );\n};\n\nconst AmountInputContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n`;\nconst SecondaryAmount = styled.div`\n font-size: 16px;\n font-weight: 400;\n line-height: 21px;\n color: var(--ck-body-color-muted);\n strong {\n font-weight: 500;\n color: var(--ck-body-color);\n }\n`;\nconst MaxButton = styled.button`\n display: inline-block;\n padding: 3px 8px;\n border-radius: var(--ck-primary-button-border-radius);\n font-size: 14px;\n font-weight: 400;\n background: var(\n --ck-secondary-button-background,\n var(--ck-body-background-secondary)\n );\n color: var(--ck-body-color-secondary);\n cursor: pointer;\n`;\nconst SwitchContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport default MultiCurrencySelectAmount;\n"],"names":["usdValue","tokenValue"],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useRef, useState, useEffect } from 'react';
|
|
3
|
+
import { EnsAvatar, ImageContainer } from './styles.js';
|
|
4
|
+
import { normalize } from 'viem/ens';
|
|
5
|
+
import { useEnsAddress, useEnsName, useEnsAvatar } from 'wagmi';
|
|
6
|
+
import { useEnsFallbackConfig } from '../../../hooks/useEnsFallbackConfig.js';
|
|
7
|
+
import useIsMounted from '../../../hooks/useIsMounted.js';
|
|
8
|
+
import { ResetContainer } from '../../../styles/index.js';
|
|
9
|
+
import { usePayContext } from '../../../hooks/usePayContext.js';
|
|
10
|
+
|
|
11
|
+
const Avatar = ({ address, name, size = 96, radius = 96 }) => {
|
|
12
|
+
const isMounted = useIsMounted();
|
|
13
|
+
const context = usePayContext();
|
|
14
|
+
const imageRef = useRef(null);
|
|
15
|
+
const [loaded, setLoaded] = useState(true);
|
|
16
|
+
const ensFallbackConfig = useEnsFallbackConfig();
|
|
17
|
+
const { data: ensAddress } = useEnsAddress({
|
|
18
|
+
chainId: 1,
|
|
19
|
+
name,
|
|
20
|
+
config: ensFallbackConfig
|
|
21
|
+
});
|
|
22
|
+
const { data: ensName } = useEnsName({
|
|
23
|
+
chainId: 1,
|
|
24
|
+
address: address ?? ensAddress ?? void 0,
|
|
25
|
+
config: ensFallbackConfig
|
|
26
|
+
});
|
|
27
|
+
const { data: ensAvatar } = useEnsAvatar({
|
|
28
|
+
chainId: 1,
|
|
29
|
+
name: normalize(ensName ?? ""),
|
|
30
|
+
config: ensFallbackConfig
|
|
31
|
+
});
|
|
32
|
+
const ens = {
|
|
33
|
+
address: ensAddress ?? address,
|
|
34
|
+
name: ensName ?? name,
|
|
35
|
+
avatar: ensAvatar ?? void 0
|
|
36
|
+
};
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (!(imageRef.current && imageRef.current.complete && imageRef.current.naturalHeight !== 0)) {
|
|
39
|
+
setLoaded(false);
|
|
40
|
+
}
|
|
41
|
+
}, [ensAvatar]);
|
|
42
|
+
if (!isMounted)
|
|
43
|
+
return /* @__PURE__ */ jsx("div", { style: { width: size, height: size, borderRadius: radius } });
|
|
44
|
+
if (context.options?.customAvatar)
|
|
45
|
+
return /* @__PURE__ */ jsx(
|
|
46
|
+
"div",
|
|
47
|
+
{
|
|
48
|
+
style: {
|
|
49
|
+
width: size,
|
|
50
|
+
height: size,
|
|
51
|
+
borderRadius: radius,
|
|
52
|
+
overflow: "hidden"
|
|
53
|
+
},
|
|
54
|
+
children: context.options?.customAvatar({
|
|
55
|
+
address: address ?? ens?.address,
|
|
56
|
+
ensName: name ?? ens?.name,
|
|
57
|
+
ensImage: ens?.avatar,
|
|
58
|
+
size,
|
|
59
|
+
radius
|
|
60
|
+
})
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
if (!ens.name || !ens.avatar)
|
|
64
|
+
return /* @__PURE__ */ jsx(ResetContainer, { style: { pointerEvents: "none" }, children: /* @__PURE__ */ jsx(EnsAvatar, { $size: size, $seed: ens.address, $radius: radius }) });
|
|
65
|
+
return /* @__PURE__ */ jsx(ResetContainer, { style: { pointerEvents: "none" }, children: /* @__PURE__ */ jsx(EnsAvatar, { $size: size, $seed: ens.address, $radius: radius, children: /* @__PURE__ */ jsx(
|
|
66
|
+
ImageContainer,
|
|
67
|
+
{
|
|
68
|
+
ref: imageRef,
|
|
69
|
+
src: ens.avatar,
|
|
70
|
+
alt: ens.name,
|
|
71
|
+
onLoad: () => setLoaded(true),
|
|
72
|
+
$loaded: loaded
|
|
73
|
+
}
|
|
74
|
+
) }) });
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export { Avatar as default };
|
|
78
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Common/Avatar/index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\n\nimport { EnsAvatar, ImageContainer } from \"./styles\";\n\nimport { normalize } from \"viem/ens\";\nimport { useEnsAddress, useEnsAvatar, useEnsName } from \"wagmi\";\nimport { useEnsFallbackConfig } from \"../../../hooks/useEnsFallbackConfig\";\nimport useIsMounted from \"../../../hooks/useIsMounted\";\nimport { ResetContainer } from \"../../../styles\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\ntype Hash = `0x${string}`;\n\nexport type CustomAvatarProps = {\n address?: Hash | undefined;\n ensName?: string | undefined;\n ensImage?: string;\n size: number;\n radius: number;\n};\n\n/** Icon for an Ethereum address. Supports ENS names and avatars. */\nconst Avatar: React.FC<{\n address?: Hash | undefined;\n name?: string | undefined;\n size?: number;\n radius?: number;\n}> = ({ address, name, size = 96, radius = 96 }) => {\n const isMounted = useIsMounted();\n const context = usePayContext();\n\n const imageRef = useRef<any>(null);\n const [loaded, setLoaded] = useState(true);\n\n const ensFallbackConfig = useEnsFallbackConfig();\n const { data: ensAddress } = useEnsAddress({\n chainId: 1,\n name: name,\n config: ensFallbackConfig,\n });\n const { data: ensName } = useEnsName({\n chainId: 1,\n address: address ?? ensAddress ?? undefined,\n config: ensFallbackConfig,\n });\n const { data: ensAvatar } = useEnsAvatar({\n chainId: 1,\n name: normalize(ensName ?? \"\"),\n config: ensFallbackConfig,\n });\n\n const ens = {\n address: ensAddress ?? address,\n name: ensName ?? name,\n avatar: ensAvatar ?? undefined,\n };\n\n useEffect(() => {\n if (\n !(\n imageRef.current &&\n imageRef.current.complete &&\n imageRef.current.naturalHeight !== 0\n )\n ) {\n setLoaded(false);\n }\n }, [ensAvatar]);\n\n if (!isMounted)\n return <div style={{ width: size, height: size, borderRadius: radius }} />;\n\n if (context.options?.customAvatar)\n return (\n <div\n style={{\n width: size,\n height: size,\n borderRadius: radius,\n overflow: \"hidden\",\n }}\n >\n {context.options?.customAvatar({\n address: address ?? ens?.address,\n ensName: name ?? ens?.name,\n ensImage: ens?.avatar,\n size,\n radius,\n })}\n </div>\n );\n\n if (!ens.name || !ens.avatar)\n return (\n <ResetContainer style={{ pointerEvents: \"none\" }}>\n <EnsAvatar $size={size} $seed={ens.address} $radius={radius} />\n </ResetContainer>\n );\n return (\n <ResetContainer style={{ pointerEvents: \"none\" }}>\n <EnsAvatar $size={size} $seed={ens.address} $radius={radius}>\n <ImageContainer\n ref={imageRef}\n src={ens.avatar}\n alt={ens.name}\n onLoad={() => setLoaded(true)}\n $loaded={loaded}\n />\n </EnsAvatar>\n </ResetContainer>\n );\n};\n\nexport default Avatar;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { motion } from 'framer-motion';
|
|
2
|
+
import { css } from 'styled-components';
|
|
3
|
+
import styled from '../../../styles/styled/index.js';
|
|
4
|
+
|
|
5
|
+
function addressToNumber(address) {
|
|
6
|
+
return address.split("").map((l) => l.charCodeAt(0)).reduce((a, b) => a + b) % 100 / 100;
|
|
7
|
+
}
|
|
8
|
+
const EnsAvatar = styled(motion.div)`
|
|
9
|
+
will-change: transform; // Needed for Safari
|
|
10
|
+
pointer-events: none;
|
|
11
|
+
user-select: none;
|
|
12
|
+
position: relative;
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
margin: 0;
|
|
15
|
+
border-radius: ${(props) => `${props.$radius}px`};
|
|
16
|
+
width: ${(props) => `${props.$size}px`};
|
|
17
|
+
height: ${(props) => `${props.$size}px`};
|
|
18
|
+
box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
|
|
19
|
+
&:before {
|
|
20
|
+
content: "";
|
|
21
|
+
z-index: 1;
|
|
22
|
+
position: absolute;
|
|
23
|
+
inset: 0;
|
|
24
|
+
border-radius: inherit;
|
|
25
|
+
box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.02);
|
|
26
|
+
}
|
|
27
|
+
${(props) => {
|
|
28
|
+
if (props.$seed) {
|
|
29
|
+
const id = Math.ceil(addressToNumber(props.$seed) * 8);
|
|
30
|
+
const ensColor = `0${id === 0 ? 1 : id}`;
|
|
31
|
+
return css`
|
|
32
|
+
background: var(--ck-ens-${ensColor}-start);
|
|
33
|
+
background: linear-gradient(
|
|
34
|
+
180deg,
|
|
35
|
+
var(--ck-ens-${ensColor}-start) 0%,
|
|
36
|
+
var(--ck-ens-${ensColor}-stop) 100%
|
|
37
|
+
);
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
40
|
+
}}
|
|
41
|
+
`;
|
|
42
|
+
const ImageContainer = styled(motion.img)`
|
|
43
|
+
display: block;
|
|
44
|
+
position: relative;
|
|
45
|
+
width: 100%;
|
|
46
|
+
height: 100%;
|
|
47
|
+
opacity: ${(props) => props.$loaded ? 1 : 0};
|
|
48
|
+
will-change: opacity; // Needed for Safari
|
|
49
|
+
transition: opacity 500ms ease;
|
|
50
|
+
transform: scale(1.01); // fixes background color bleeding
|
|
51
|
+
`;
|
|
52
|
+
|
|
53
|
+
export { EnsAvatar, ImageContainer };
|
|
54
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../../src/components/Common/Avatar/styles.ts"],"sourcesContent":["import { motion } from \"framer-motion\";\nimport { css } from \"styled-components\";\nimport styled from \"./../../../styles/styled\";\n\nfunction addressToNumber(address: string) {\n return (\n (address\n .split(\"\")\n .map((l) => l.charCodeAt(0))\n .reduce((a, b) => a + b) %\n 100) /\n 100\n );\n}\n\nexport const EnsAvatar = styled(motion.div)<{\n $seed?: string;\n $size?: number;\n $radius?: number;\n}>`\n will-change: transform; // Needed for Safari\n pointer-events: none;\n user-select: none;\n position: relative;\n overflow: hidden;\n margin: 0;\n border-radius: ${(props) => `${props.$radius}px`};\n width: ${(props) => `${props.$size}px`};\n height: ${(props) => `${props.$size}px`};\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);\n &:before {\n content: \"\";\n z-index: 1;\n position: absolute;\n inset: 0;\n border-radius: inherit;\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.02);\n }\n ${(props) => {\n if (props.$seed) {\n const id = Math.ceil(addressToNumber(props.$seed) * 8);\n const ensColor = `0${id === 0 ? 1 : id}`; // No zero ID in ENS color list.. 🤷♀️\n return css`\n background: var(--ck-ens-${ensColor}-start);\n background: linear-gradient(\n 180deg,\n var(--ck-ens-${ensColor}-start) 0%,\n var(--ck-ens-${ensColor}-stop) 100%\n );\n `;\n }\n }}\n`;\n\nexport const ImageContainer = styled(motion.img)<{ $loaded: boolean }>`\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n opacity: ${(props) => (props.$loaded ? 1 : 0)};\n will-change: opacity; // Needed for Safari\n transition: opacity 500ms ease;\n transform: scale(1.01); // fixes background color bleeding\n`;\n"],"names":[],"mappings":";;;;AAIA,SAAS,gBAAgB,OAAiB,EAAA;AACxC,EAAA,OACG,QACE,KAAM,CAAA,EAAE,EACR,GAAI,CAAA,CAAC,MAAM,CAAE,CAAA,UAAA,CAAW,CAAC,CAAC,CAAA,CAC1B,OAAO,CAAC,CAAA,EAAG,MAAM,CAAI,GAAA,CAAC,IACvB,GACF,GAAA,GAAA,CAAA;AAEJ,CAAA;AAEa,MAAA,SAAA,GAAY,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAA,EAWvB,CAAC,KAAA,KAAU,CAAG,EAAA,KAAA,CAAM,OAAO,CAAI,EAAA,CAAA,CAAA;AAAA,SAAA,EACvC,CAAC,KAAA,KAAU,CAAG,EAAA,KAAA,CAAM,KAAK,CAAI,EAAA,CAAA,CAAA;AAAA,UAAA,EAC5B,CAAC,KAAA,KAAU,CAAG,EAAA,KAAA,CAAM,KAAK,CAAI,EAAA,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,EAUrC,CAAC,KAAU,KAAA;AACX,EAAA,IAAI,MAAM,KAAO,EAAA;AACf,IAAA,MAAM,KAAK,IAAK,CAAA,IAAA,CAAK,gBAAgB,KAAM,CAAA,KAAK,IAAI,CAAC,CAAA,CAAA;AACrD,IAAA,MAAM,QAAW,GAAA,CAAA,CAAA,EAAI,EAAO,KAAA,CAAA,GAAI,IAAI,EAAE,CAAA,CAAA,CAAA;AACtC,IAAO,OAAA,GAAA,CAAA;AAAA,iCAAA,EACsB,QAAQ,CAAA;AAAA;AAAA;AAAA,uBAAA,EAGlB,QAAQ,CAAA;AAAA,uBAAA,EACR,QAAQ,CAAA;AAAA;AAAA,MAAA,CAAA,CAAA;AAAA,GAG7B;AACF,CAAC,CAAA;AAAA,EAAA;AAGU,MAAA,cAAA,GAAiB,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAA,EAKlC,CAAC,KAAA,KAAW,KAAM,CAAA,OAAA,GAAU,IAAI,CAAE,CAAA;AAAA;AAAA;AAAA;AAAA;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { BrowserIconContainer } from './styles.js';
|
|
4
|
+
import browsers from '../../../assets/browsers.js';
|
|
5
|
+
import { detectBrowser } from '../../../utils/index.js';
|
|
6
|
+
|
|
7
|
+
const BrowserIcon = React.forwardRef(
|
|
8
|
+
({ browser }, ref) => {
|
|
9
|
+
const currentBrowser = browser ?? detectBrowser();
|
|
10
|
+
let icon;
|
|
11
|
+
switch (currentBrowser) {
|
|
12
|
+
case "chrome":
|
|
13
|
+
icon = browsers.Chrome;
|
|
14
|
+
break;
|
|
15
|
+
case "firefox":
|
|
16
|
+
icon = browsers.FireFox;
|
|
17
|
+
break;
|
|
18
|
+
case "edge":
|
|
19
|
+
icon = browsers.Edge;
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
if (!icon) return /* @__PURE__ */ jsx(Fragment, {});
|
|
23
|
+
return /* @__PURE__ */ jsx(BrowserIconContainer, { children: icon });
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
BrowserIcon.displayName = "BrowserIcon";
|
|
27
|
+
|
|
28
|
+
export { BrowserIcon as default };
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/components/Common/BrowserIcon/index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { BrowserIconContainer } from \"./styles\";\nimport { BrowserIconProps } from \"./types\";\n\nimport browsers from \"../../../assets/browsers\";\nimport { detectBrowser } from \"../../../utils\";\n\nconst BrowserIcon = React.forwardRef(\n ({ browser }: BrowserIconProps, ref: React.Ref<HTMLElement>) => {\n const currentBrowser = browser ?? detectBrowser();\n\n let icon;\n switch (currentBrowser) {\n case \"chrome\":\n icon = browsers.Chrome;\n break;\n case \"firefox\":\n icon = browsers.FireFox;\n break;\n case \"edge\":\n icon = browsers.Edge;\n break;\n case \"brave\":\n // icon = browsers.Brave;\n break;\n }\n if (!icon) return <></>;\n return <BrowserIconContainer>{icon}</BrowserIconContainer>;\n },\n);\nBrowserIcon.displayName = \"BrowserIcon\";\n\nexport default BrowserIcon;\n"],"names":[],"mappings":";;;;;;AAQA,MAAM,cAAc,KAAM,CAAA,UAAA;AAAA,EACxB,CAAC,EAAE,OAAQ,EAAA,EAAqB,GAAgC,KAAA;AAC9D,IAAM,MAAA,cAAA,GAAiB,WAAW,aAAc,EAAA,CAAA;AAEhD,IAAI,IAAA,IAAA,CAAA;AACJ,IAAA,QAAQ,cAAgB;AAAA,MACtB,KAAK,QAAA;AACH,QAAA,IAAA,GAAO,QAAS,CAAA,MAAA,CAAA;AAChB,QAAA,MAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAA,IAAA,GAAO,QAAS,CAAA,OAAA,CAAA;AAChB,QAAA,MAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,IAAA,GAAO,QAAS,CAAA,IAAA,CAAA;AAChB,QAAA,MAAA;AAGA,KACJ;AACA,IAAI,IAAA,CAAC,IAAM,EAAA,uBAAS,GAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA;AACpB,IAAO,uBAAA,GAAA,CAAC,wBAAsB,QAAK,EAAA,IAAA,EAAA,CAAA,CAAA;AAAA,GACrC;AACF,EAAA;AACA,WAAA,CAAY,WAAc,GAAA,aAAA;;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { motion } from 'framer-motion';
|
|
2
|
+
import styled from '../../../styles/styled/index.js';
|
|
3
|
+
|
|
4
|
+
const BrowserIconContainer = styled(motion.div)`
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
max-width: 32px;
|
|
9
|
+
max-height: 32px;
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: 100%;
|
|
12
|
+
svg {
|
|
13
|
+
display: block;
|
|
14
|
+
width: 100%;
|
|
15
|
+
height: 100%;
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
|
|
19
|
+
export { BrowserIconContainer };
|
|
20
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../../../src/components/Common/BrowserIcon/styles.ts"],"sourcesContent":["import { motion } from \"framer-motion\";\nimport styled from \"./../../../styles/styled\";\n\nexport const BrowserIconContainer = styled(motion.div)`\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 32px;\n max-height: 32px;\n width: 100%;\n height: 100%;\n svg {\n display: block;\n width: 100%;\n height: 100%;\n }\n`;\n"],"names":[],"mappings":";;;AAGa,MAAA,oBAAA,GAAuB,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;"}
|