@bluxcc/react 0.1.0 → 0.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/utils/getBorderRadius.ts","../src/assets/Icons.tsx","../src/components/Modal/Header/index.tsx","../src/components/Modal/Backdrop/index.tsx","../src/components/Modal/index.tsx","../src/hooks/useModalAnimation.ts","../src/containers/ModalState/Profile/index.tsx","../src/utils/copyText.ts","../src/utils/shortenAddress.ts","../src/components/Button/index.tsx","../src/assets/logos.tsx","../src/utils/handleIcons.tsx","../src/types/index.ts","../src/wallets/configs/albedoConfig.ts","../src/wallets/configs/freighterConfig.ts","../src/wallets/configs/lobstrConfig.ts","../src/wallets/configs/rabetConfig.ts","../src/wallets/configs/xbullConfig.ts","../src/wallets/walletsConfig.ts","../src/utils/mappedWallets.ts","../src/containers/ModalState/Connecting/index.tsx","../src/utils/initializeRabetMobile.ts","../src/assets/bluxLogo.tsx","../src/components/Button/buttonVariants.tsx","../src/containers/ModalState/OnBoarding/index.tsx","../src/constants/index.ts","../src/containers/ConnectModal/index.tsx","../src/hooks/useConnectModal.ts","../src/context/provider.tsx","../src/hooks/useBlux.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { CornerRadius } from '../types';\n\nconst radiusMap: Record<CornerRadius, string> = {\n none: '0px',\n full: '44px',\n sm: '3.42px',\n md: '8px',\n lg: '12px',\n};\n\nexport const getBorderRadius = (cornerRadius: CornerRadius): string => {\n return radiusMap[cornerRadius] || '0px';\n};\n","import React from 'react';\n\nexport const InfoIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <mask id=\"mask0_0_3021\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"20\" height=\"20\">\n <rect width=\"20\" height=\"20\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_0_3021)\">\n <path\n d=\"M9.16601 14.1662H10.8327V9.1662H9.16601V14.1662ZM9.99935 7.49953C10.2355 7.49953 10.4334 7.41967 10.5931 7.25995C10.7528 7.10023 10.8327 6.90231 10.8327 6.6662C10.8327 6.43009 10.7528 6.23217 10.5931 6.07245C10.4334 5.91273 10.2355 5.83286 9.99935 5.83286C9.76324 5.83286 9.56532 5.91273 9.4056 6.07245C9.24588 6.23217 9.16601 6.43009 9.16601 6.6662C9.16601 6.90231 9.24588 7.10023 9.4056 7.25995C9.56532 7.41967 9.76324 7.49953 9.99935 7.49953ZM9.99935 18.3329C8.84657 18.3329 7.76324 18.1141 6.74935 17.6766C5.73546 17.2391 4.85352 16.6454 4.10352 15.8954C3.35352 15.1454 2.75977 14.2634 2.32227 13.2495C1.88477 12.2356 1.66602 11.1523 1.66602 9.99953C1.66602 8.84675 1.88477 7.76342 2.32227 6.74953C2.75977 5.73564 3.35352 4.8537 4.10352 4.1037C4.85352 3.3537 5.73546 2.75995 6.74935 2.32245C7.76324 1.88495 8.84657 1.6662 9.99935 1.6662C11.1521 1.6662 12.2355 1.88495 13.2493 2.32245C14.2632 2.75995 15.1452 3.3537 15.8952 4.1037C16.6452 4.8537 17.2389 5.73564 17.6764 6.74953C18.1139 7.76342 18.3327 8.84675 18.3327 9.99953C18.3327 11.1523 18.1139 12.2356 17.6764 13.2495C17.2389 14.2634 16.6452 15.1454 15.8952 15.8954C15.1452 16.6454 14.2632 17.2391 13.2493 17.6766C12.2355 18.1141 11.1521 18.3329 9.99935 18.3329ZM9.99935 16.6662C11.8605 16.6662 13.4368 16.0204 14.7285 14.7287C16.0202 13.437 16.666 11.8606 16.666 9.99953C16.666 8.13842 16.0202 6.56203 14.7285 5.27036C13.4368 3.9787 11.8605 3.33287 9.99935 3.33287C8.13824 3.33287 6.56185 3.9787 5.27018 5.27036C3.97852 6.56203 3.33268 8.13842 3.33268 9.99953C3.33268 11.8606 3.97852 13.437 5.27018 14.7287C6.56185 16.0204 8.13824 16.6662 9.99935 16.6662Z\"\n fill=\"#1C1B1F\"\n />\n </g>\n </svg>\n);\nexport const ArrowRight = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <mask id=\"mask0_117_204\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"20\" height=\"20\">\n <rect width=\"20\" height=\"20\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_117_204)\">\n <path\n d=\"M6.67929 18.0448L5.49658 16.862L12.3587 9.99996L5.49658 3.13788L6.67929 1.95517L14.7241 9.99996L6.67929 18.0448Z\"\n fill=\"#5F6367\"\n />\n </g>\n </svg>\n);\nexport const ArrowLeft = () => (\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <mask id=\"mask0_170_30135\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"24\" height=\"25\">\n <rect y=\"0.5\" width=\"24\" height=\"24\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_170_30135)\">\n <path\n d=\"M16 22.5L6 12.5L16 2.5L17.775 4.275L9.55 12.5L17.775 20.725L16 22.5Z\"\n fill=\"#5F6367\"\n />\n </g>\n </svg>\n);\nexport const Close = () => (\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <mask id=\"mask0_170_30138\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"24\" height=\"25\">\n <rect y=\"0.5\" width=\"24\" height=\"24\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_170_30138)\">\n <path\n d=\"M4.8 21.5L3 19.7L10.2 12.5L3 5.3L4.8 3.5L12 10.7L19.2 3.5L21 5.3L13.8 12.5L21 19.7L19.2 21.5L12 14.3L4.8 21.5Z\"\n fill=\"#5F6367\"\n />\n </g>\n </svg>\n);\nexport const Loading = () => (\n <svg\n width=\"20\"\n height=\"21\"\n viewBox=\"0 0 20 21\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"animate-spin\"\n >\n <path\n d=\"M10 20.5C8.63333 20.5 7.34167 20.2375 6.125 19.7125C4.90833 19.1875 3.84583 18.4708 2.9375 17.5625C2.02917 16.6542 1.3125 15.5917 0.7875 14.375C0.2625 13.1583 0 11.8667 0 10.5C0 9.11667 0.2625 7.82083 0.7875 6.6125C1.3125 5.40417 2.02917 4.34583 2.9375 3.4375C3.84583 2.52917 4.90833 1.8125 6.125 1.2875C7.34167 0.7625 8.63333 0.5 10 0.5C10.2833 0.5 10.5208 0.595833 10.7125 0.7875C10.9042 0.979167 11 1.21667 11 1.5C11 1.78333 10.9042 2.02083 10.7125 2.2125C10.5208 2.40417 10.2833 2.5 10 2.5C7.78333 2.5 5.89583 3.27917 4.3375 4.8375C2.77917 6.39583 2 8.28333 2 10.5C2 12.7167 2.77917 14.6042 4.3375 16.1625C5.89583 17.7208 7.78333 18.5 10 18.5C12.2167 18.5 14.1042 17.7208 15.6625 16.1625C17.2208 14.6042 18 12.7167 18 10.5C18 10.2167 18.0958 9.97917 18.2875 9.7875C18.4792 9.59583 18.7167 9.5 19 9.5C19.2833 9.5 19.5208 9.59583 19.7125 9.7875C19.9042 9.97917 20 10.2167 20 10.5C20 11.8667 19.7375 13.1583 19.2125 14.375C18.6875 15.5917 17.9708 16.6542 17.0625 17.5625C16.1542 18.4708 15.0958 19.1875 13.8875 19.7125C12.6792 20.2375 11.3833 20.5 10 20.5Z\"\n fill=\"#5F6367\"\n />\n </svg>\n);\n","import React from 'react';\nimport { ArrowLeft, Close, InfoIcon } from '../../../assets/Icons';\n\ninterface HeaderProps {\n icon: 'info' | 'back';\n onInfo?: () => void;\n onBack?: () => void;\n modalHeader: string;\n closeButton?: boolean;\n onClose: () => void;\n}\n\nconst ModalHeader: React.FC<HeaderProps> = ({\n icon,\n onInfo,\n onBack,\n modalHeader,\n closeButton = false,\n onClose,\n}) => {\n const renderIcon = () => {\n if (icon === 'info') {\n return (\n <button\n onClick={onInfo}\n className=\"size-6 flex justify-center items-center hover:bg-[#cdceee48] rounded-full transition duration-300\"\n >\n <InfoIcon />\n </button>\n );\n }\n return (\n <button onClick={onBack} className=\"cursor-pointer\">\n <ArrowLeft />\n </button>\n );\n };\n\n return (\n <div className=\"w-full flex items-center justify-between h-16\">\n <div>{renderIcon()}</div>\n\n <p className=\"text-lg font-semibold text-center flex-1 select-none\">{modalHeader}</p>\n\n {closeButton ? (\n <button onClick={onClose} className=\"cursor-pointer\">\n <Close />\n </button>\n ) : (\n <div className=\"w-4\" />\n )}\n </div>\n );\n};\n\nexport default ModalHeader;\n","import React from 'react';\nimport clsx from 'clsx';\n\ninterface BackdropProps {\n isClosing: boolean;\n onClose: () => void;\n}\n\nconst ModalBackdrop = ({ isClosing, onClose }: BackdropProps) => (\n <div\n className={clsx(\n 'fixed inset-0 z-40 bg-black bg-opacity-[0.05]',\n isClosing ? 'animate-fadeOut' : 'animate-fadeIn',\n )}\n onClick={onClose}\n />\n);\n\nexport default ModalBackdrop;\n","import React, { useContext, useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { getBorderRadius } from '../../utils/getBorderRadius';\nimport { useModalAnimation } from '../../hooks/useModalAnimation';\nimport { ProviderContext, defaultAppearance } from '../../context/provider';\n\nimport ModalHeader from './Header';\nimport ModalBackdrop from './Backdrop';\n\ninterface ModalProps {\n isOpen: boolean;\n className?: string;\n onClose?: () => void;\n onBack?: () => void;\n children: React.ReactNode;\n icon: 'info' | 'back';\n onInfo?: () => void;\n closeButton?: boolean;\n modalHeader: string;\n initialHeight: number;\n}\n\nconst Modal = ({\n isOpen,\n onClose = () => {},\n onBack,\n onInfo,\n children,\n className,\n modalHeader,\n icon,\n initialHeight,\n closeButton = false,\n}: ModalProps) => {\n const context = useContext(ProviderContext);\n const { isOpening, isClosing, hasTransition, handleClose, setHasTransition } =\n useModalAnimation(isOpen);\n const [contentHeight, setContentHeight] = useState<number | null>(null);\n const [heightChanged, setHeightChanged] = useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n const isFirstRender = useRef(true);\n const previousChildrenRef = useRef(children);\n const previousHeightRef = useRef<number>(initialHeight);\n\n const modalStyle = context?.value.appearance || defaultAppearance;\n\n useEffect(() => {\n if (!isOpen) {\n setContentHeight(null);\n setHeightChanged(false);\n isFirstRender.current = true;\n previousChildrenRef.current = children;\n previousHeightRef.current = initialHeight;\n return;\n }\n }, [isOpen, initialHeight]);\n\n useEffect(() => {\n if (!isOpen || !contentRef.current) return;\n\n const updateHeight = () => {\n const newHeight = contentRef.current?.offsetHeight;\n if (!newHeight) return;\n\n if (isFirstRender.current) {\n previousHeightRef.current = newHeight;\n isFirstRender.current = false;\n return;\n }\n\n if (newHeight !== previousHeightRef.current) {\n setContentHeight(newHeight);\n setHeightChanged(true);\n previousHeightRef.current = newHeight;\n }\n };\n if (heightChanged) {\n setHasTransition(true);\n }\n const resizeObserver = new ResizeObserver(updateHeight);\n resizeObserver.observe(contentRef.current);\n updateHeight();\n\n return () => resizeObserver.disconnect();\n }, [isOpen, children]);\n\n const currentHeight = isFirstRender.current\n ? initialHeight\n : contentHeight ?? previousHeightRef.current;\n\n if (!isOpen) return null;\n\n return (\n <>\n {!context?.value.isDemo && (\n <ModalBackdrop isClosing={isClosing} onClose={() => handleClose(onClose)} />\n )}\n\n <div\n className={clsx(\n 'absolute inset-0 flex items-center justify-center z-50',\n isClosing && 'animate-fadeOut',\n )}\n onClick={(e) => e.target === e.currentTarget && handleClose(onClose)}\n >\n <div\n className={clsx(\n 'overflow-hidden border',\n className,\n modalStyle.font && `!font-[${modalStyle.font}]`,\n )}\n style={{\n height: `${currentHeight}px`,\n transform: isOpening ? 'scale(0.98)' : 'scale(1)',\n opacity: isOpening ? '0' : '1',\n transition: isOpening\n ? 'transform 300ms ease-out, opacity 300ms ease-out'\n : hasTransition\n ? 'height 300ms ease-in-out'\n : 'none',\n backgroundColor: modalStyle.background,\n color: modalStyle.textColor,\n fontFamily: modalStyle.font,\n borderRadius: getBorderRadius(modalStyle.cornerRadius),\n }}\n >\n <div ref={contentRef} className=\"px-6 pb-4\">\n <ModalHeader\n icon={icon}\n onInfo={onInfo}\n onBack={onBack}\n modalHeader={modalHeader}\n closeButton={closeButton}\n onClose={() => handleClose(onClose)}\n />\n {children}\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default Modal;\n","import { useState, useEffect } from 'react';\n\ninterface ModalAnimationState {\n isOpening: boolean;\n isClosing: boolean;\n hasTransition: boolean;\n}\n\nexport const useModalAnimation = (isOpen: boolean) => {\n const [state, setState] = useState<ModalAnimationState>({\n isOpening: true,\n isClosing: false,\n hasTransition: false,\n });\n\n useEffect(() => {\n if (isOpen && state.isOpening) {\n const timer = setTimeout(() => {\n setState((prev) => ({ ...prev, isOpening: false }));\n }, 300);\n return () => clearTimeout(timer);\n }\n }, [isOpen, state.isOpening]);\n\n const handleClose = (onClose: () => void) => {\n setState((prev) => ({ ...prev, isClosing: true }));\n setTimeout(() => {\n setState((prev) => ({ ...prev, isClosing: false }));\n onClose();\n }, 300);\n };\n\n return {\n ...state,\n setHasTransition: (value: boolean) => setState((prev) => ({ ...prev, hasTransition: value })),\n handleClose,\n };\n};\n","import React, { useContext } from 'react';\n\nimport { ProviderContext, defaultAppearance } from '../../../context/provider';\nimport copyText from '../../../utils/copyText';\nimport shortenAddress from '../../../utils/shortenAddress';\n\nconst Profile = () => {\n const context = useContext(ProviderContext);\n const address = context?.value.user.wallet?.address || '';\n const modalStyle = context?.value.appearance || defaultAppearance;\n\n return (\n <div className=\"flex flex-col items-center justify-center pb-5\">\n <div className=\"w-20 h-20 bg-[#0d5092dd] rounded-full\"></div>\n <p className=\"text-xl font-medium mt-3 mb-1\">\n Connected to {context?.value.user.wallet?.name}\n </p>\n <p\n className=\"text-base cursor-pointer\"\n style={{ color: modalStyle.accent }}\n onClick={() => {\n copyText(address);\n }}\n >\n {shortenAddress(address)}\n </p>\n </div>\n );\n};\n\nexport default Profile;\n","const copyText = (text: string) => {\n return navigator.clipboard.writeText(text);\n};\n\nexport default copyText;\n","const shortenAddress = (address: string, numChars = 8) => {\n const shortenedAddress = address.slice(0, numChars) + '...' + address.slice(-numChars);\n\n return shortenedAddress;\n};\n\nexport default shortenAddress;\n","import React, { useContext } from 'react';\n\nimport clsx from 'clsx';\nimport { ProviderContext, defaultAppearance } from '../../context/provider';\nimport { getBorderRadius } from '../../utils/getBorderRadius';\n\nexport type ButtonProps = {\n name?: string;\n onClick?: () => void;\n children?: React.ReactNode;\n className?: string;\n disabled?: boolean;\n};\n\nconst Button = ({ onClick, className, disabled, children }: ButtonProps) => {\n const context = useContext(ProviderContext);\n\n const modalStyle = context?.value.appearance || defaultAppearance;\n\n return (\n <button\n disabled={disabled}\n onClick={onClick}\n style={{\n borderRadius: getBorderRadius(modalStyle.cornerRadius),\n }}\n className={clsx(\n `w-full relative flex items-center h-14 border border-[#CDCEEE] my-2 pl-2 pr-4`,\n className,\n )}\n >\n {children}\n </button>\n );\n};\n\nexport default Button;\n","import React from 'react';\n\nexport const AlbedoIcon = () => (\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_44_43)\">\n <path\n d=\"M60 0H20C8.9543 0 0 8.9543 0 20V60C0 71.0457 8.9543 80 20 80H60C71.0457 80 80 71.0457 80 60V20C80 8.9543 71.0457 0 60 0Z\"\n fill=\"white\"\n />\n <path\n d=\"M41.1831 23H39.8169L26 55.8213L26.0419 55.8375H29.7281L32.4944 49.2707C38.2396 51.2168 44.4666 51.1844 50.1924 49.1784L52.9958 55.8375H54.9581L55 55.8213L41.1831 23ZM41.2105 49.4666C38.412 49.4666 35.6312 49.0116 32.9777 48.1228L41.3619 28.202L49.7107 48.0321C46.9767 48.9809 44.1041 49.4666 41.2105 49.4666Z\"\n fill=\"#0691B7\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_44_43\">\n <rect width=\"80\" height=\"80\" rx=\"40\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport const RabetIcon = () => (\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_54_32)\">\n <path\n d=\"M60 0H20C8.9543 0 0 8.9543 0 20V60C0 71.0457 8.9543 80 20 80H60C71.0457 80 80 71.0457 80 60V20C80 8.9543 71.0457 0 60 0Z\"\n fill=\"white\"\n />\n <g clipPath=\"url(#clip1_54_32)\">\n <path\n d=\"M39.898 61.6041C38.776 62.2821 37.324 62.3741 36.07 61.6801L32.782 59.8601C29.404 57.9961 28.194 53.7401 30.088 50.3761L33.282 44.6981L38.256 59.5521C38.556 60.4561 39.156 61.1621 39.896 61.6061L39.898 61.6041ZM50.746 32.0461L46.51 44.6961L39.898 32.9501L49.154 16.4981C49.614 15.6801 50.854 15.9381 50.95 16.8681L51.664 23.5781C51.972 26.4341 51.656 29.3221 50.744 32.0461H50.746Z\"\n fill=\"#B8BAC4\"\n />\n <path\n d=\"M46.5099 44.6961L41.5399 59.5501C41.2379 60.4501 40.6399 61.1541 39.8999 61.6021C39.1579 61.1581 38.5539 60.4521 38.2579 59.5501L33.2839 44.6961L39.8979 32.9501L46.5099 44.6961Z\"\n fill=\"black\"\n />\n <path\n d=\"M39.8979 32.9499L33.2799 44.6959L29.0459 32.0459C28.1339 29.3199 27.8179 26.4339 28.1259 23.5779L28.8399 16.8679C28.9399 15.9359 30.1759 15.6779 30.6339 16.4979L39.8979 32.9499ZM47.0099 59.8599L43.7239 61.6799C42.4639 62.3739 41.0179 62.2799 39.8979 61.6019C40.6399 61.1539 41.2379 60.4499 41.5379 59.5499L46.5079 44.6959L49.7019 50.3739C51.5959 53.7379 50.3859 57.9939 47.0099 59.8599Z\"\n fill=\"#B8BAC4\"\n />\n </g>\n </g>\n <defs>\n <clipPath id=\"clip0_54_32\">\n <rect width=\"80\" height=\"80\" rx=\"40\" fill=\"white\" />\n </clipPath>\n <clipPath id=\"clip1_54_32\">\n <rect width=\"24\" height=\"48\" fill=\"white\" transform=\"translate(28.0001 16)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport const FreighterIcon = () => (\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_44_59)\">\n <path\n d=\"M60 0H20C8.9543 0 0 8.9543 0 20V60C0 71.0457 8.9543 80 20 80H60C71.0457 80 80 71.0457 80 60V20C80 8.9543 71.0457 0 60 0Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M36.1224 25.6667C34.9877 21.2577 30.9854 18 26.2222 18C20.5766 18 16 22.5766 16 28.2222C16 33.8678 20.5766 38.4444 26.2222 38.4444C30.9854 38.4444 34.9877 35.1868 36.1224 30.7778H44.963V39.2963H50.0741V30.7778H53.4814V39.2963H58.5926V30.7778H62V25.6667H36.1224ZM31.3333 28.2222C31.3333 31.045 29.045 33.3333 26.2222 33.3333C23.3995 33.3333 21.1111 31.045 21.1111 28.2222C21.1111 25.3995 23.3995 23.1111 26.2222 23.1111C29.045 23.1111 31.3333 25.3995 31.3333 28.2222Z\"\n fill=\"#533ABB\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M41.8776 56.3333C43.0123 60.7423 47.0146 64 51.7778 64C57.4234 64 62 59.4233 62 53.7777C62 48.1321 57.4234 43.5555 51.7778 43.5555C47.0146 43.5555 43.0123 46.8132 41.8776 51.2222H33.037V42.7036H27.9259V51.2222H24.5186V42.7036H19.4075V51.2222H16V56.3333H41.8776ZM46.6667 53.7777C46.6667 50.955 48.955 48.6666 51.7778 48.6666C54.6005 48.6666 56.8889 50.955 56.8889 53.7777C56.8889 56.6005 54.6005 58.8888 51.7778 58.8888C48.955 58.8888 46.6667 56.6005 46.6667 53.7777Z\"\n fill=\"#533ABB\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_44_59\">\n <rect width=\"80\" height=\"80\" rx=\"40\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport const XBullIcon = () => (\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_24_16)\">\n <path\n d=\"M28 0H4C1.79086 0 0 1.79086 0 4V28C0 30.2091 1.79086 32 4 32H28C30.2091 32 32 30.2091 32 28V4C32 1.79086 30.2091 0 28 0Z\"\n fill=\"#14142B\"\n />\n <path\n d=\"M12.5884 10.1192C12.9996 9.40702 13.4773 9.11038 13.9622 9.0815C14.946 9.01648 17.1453 10.6363 16.4495 11.5981L17.753 13.8721C18.5858 14.57 19.4291 15.1197 20.2932 15.4847C20.1317 16.1609 20.5078 16.4032 20.8871 16.6418C20.3812 15.7561 21.3719 15.2642 21.9058 16.1429C22.4574 16.9166 22.6051 17.7194 22.2748 18.3448C21.7863 19.2813 20.4759 19.9753 19.882 20.8467C21.0911 19.7513 22.7175 19.8743 23.3605 18.6014C23.7609 17.8131 22.7597 15.4776 22.2924 14.6894C21.5685 13.4781 20.6656 13.8288 20.5637 14.2193C19.6045 13.695 18.7508 12.8634 17.8794 12.1691C18.2869 11.8113 18.5189 11.2942 18.073 11.0157C17.1593 10.4374 16.0984 8.70912 14.7211 8.37272C14.5839 8.3388 14.4443 8.32045 14.3055 8.32045C13.5876 8.32045 12.8856 8.80732 12.5884 10.1192Z\"\n fill=\"#4E4B66\"\n />\n <path\n d=\"M14.9389 30.75C16.0205 30.75 17.0747 30.6048 18.0739 30.3353C11.9225 31.9888 8.16245 24.9459 12.8379 19.9934C11.1163 19.5272 10.0098 17.7916 10.1185 15.7197C0.829113 22.5315 5.23505 30.75 14.9389 30.75ZM18.0757 30.3348C18.0854 30.332 18.0949 30.3298 18.1045 30.327C18.095 30.3295 18.0852 30.3323 18.0757 30.3348Z\"\n fill=\"#C19CFC\"\n />\n <path\n d=\"M16.0876 8.23906C16.4884 8.49938 16.8641 8.84646 17.212 9.19711C20.469 8.48496 18.4101 5.33196 20.1035 4.09918C17.9639 4.84393 19.3095 8.33651 16.0876 8.23906Z\"\n fill=\"#C19CFC\"\n />\n <path\n d=\"M10.758 10.7953L12.5884 10.1192C12.1422 6.43112 17.2156 4.9343 15.5011 1.25C15.4273 5.4223 10.3468 5.5164 10.758 10.7953Z\"\n fill=\"#C19CFC\"\n />\n <path\n d=\"M15.3921 18.8004C16.3019 18.381 17.2085 17.8131 18.1185 18.0807C17.1205 17.4265 15.8945 17.741 14.6577 17.8277C12.9959 17.9434 11.3096 17.7987 10.1184 15.7198C10.6245 18.3484 12.9679 19.9175 15.3921 18.8004Z\"\n fill=\"#C19CFC\"\n />\n <path\n d=\"M14.7245 5.41512C13.688 6.80365 12.3495 8.1487 12.5884 10.1191C12.9431 8.5535 13.8744 8.16295 14.7211 8.37265C16.0983 8.70905 17.1593 10.4373 18.0729 11.0157C18.5189 11.2942 18.2869 11.8112 17.8794 12.169C18.7508 12.8633 19.6045 13.6949 20.5636 14.2193C20.6656 13.8287 21.5685 13.4781 22.2924 14.6893C22.7597 15.4775 23.7609 17.813 23.3605 18.6013C22.7174 19.8742 21.091 19.7512 19.882 20.8466C19.1443 19.48 17.6688 19.1328 16.1756 18.9124C16.7834 18.4459 17.4017 18.0265 18.1185 18.0807C17.2085 17.813 16.3019 18.3809 15.3921 18.8003C12.9679 19.9175 10.6245 18.3483 10.1184 15.7197C10.0097 17.7915 11.1162 19.5271 12.8379 19.9934C8.15458 24.9541 11.935 32.012 18.1045 30.327C23.3676 28.8877 27.25 23.9526 27.25 18.0807C27.25 12.8742 24.1965 8.4017 19.833 6.45282C20.0334 7.60615 20.2863 8.71972 18.266 10.2456C17.6301 9.69595 16.9204 8.77782 16.0876 8.23902C17.9673 8.29692 18.2906 7.13255 18.663 6.00452C17.4629 5.61227 16.21 5.41307 14.9507 5.41307C14.8753 5.41307 14.7999 5.41382 14.7245 5.41512ZM14.6367 11.6486C14.8686 11.6954 15.104 11.8907 15.3184 12.1113C15.6662 12.4692 15.9965 12.5309 16.4179 12.1548L17.753 13.872L16.4494 11.598C16.432 11.7788 16.2879 11.8221 16.1124 11.8112C15.8068 11.7919 15.4213 11.5727 15.0168 11.5725C14.8913 11.5725 14.764 11.5936 14.6367 11.6486ZM20.8871 16.6417C21.1014 16.2693 21.3928 16.027 21.9058 16.1428C21.7087 15.8184 21.4494 15.6809 21.2262 15.6809C20.8443 15.6809 20.5678 16.0829 20.8871 16.6417Z\"\n fill=\"#C19CFC\"\n />\n <path\n d=\"M13.7759 6.65183C13.0345 7.65315 12.4232 8.73095 12.5884 10.1193C12.9431 8.55365 13.8744 8.1631 14.7211 8.3728C16.0983 8.7092 17.1593 10.4375 18.073 11.0159C18.5189 11.2943 18.2869 11.8114 17.8794 12.1692C18.7508 12.8635 19.6045 13.6951 20.5637 14.2194C20.6656 13.8289 21.5685 13.4782 22.2924 14.6895C22.7597 15.4777 23.7609 17.8132 23.3605 18.6015C22.7175 19.8743 21.091 19.7514 19.882 20.8468C19.1443 19.4802 17.6688 19.133 16.1756 18.9126C16.7834 18.4461 17.4017 18.0267 18.1185 18.0808C17.2085 17.8132 16.3019 18.3811 15.3921 18.8005C12.9679 19.9176 10.6245 18.3485 10.1184 15.7199C10.0097 17.7917 11.1162 19.5273 12.8379 19.9935C9.78828 23.2224 10.3259 27.3405 12.7745 29.358C19.6398 30.7463 26.1045 25.3555 26.1045 18.0808C26.1045 13.5903 23.6029 9.70343 19.9525 7.81245C19.8857 8.53923 19.4992 9.3166 18.266 10.2458C17.6301 9.6961 16.9204 8.778 16.0876 8.23918C17.3349 8.27535 17.9005 7.77648 18.2449 7.10368C17.1735 6.7622 16.0535 6.59073 14.9327 6.59073C14.5466 6.59073 14.1603 6.61098 13.7759 6.65183Z\"\n fill=\"#14142B\"\n />\n <path\n d=\"M12.8379 19.9934C8.15458 24.9541 11.935 32.012 18.1045 30.327C11.0461 30.645 11.7452 22.3943 16.2213 20.0477C17.8304 20.2719 19.4885 20.5577 20.2863 22.0326C21.4913 20.9409 23.1179 21.0601 23.7644 19.7872C24.0244 19.2776 23.6943 18.117 23.3042 17.1477C23.4588 17.7446 23.5184 18.2941 23.3605 18.6013C22.7174 19.8742 21.091 19.7512 19.882 20.8466C19.1443 19.48 17.6688 19.1328 16.1756 18.9124C16.7834 18.4459 17.4017 18.0265 18.1185 18.0807C17.2085 17.813 16.3019 18.3809 15.3921 18.8003C12.9679 19.9175 10.6245 18.3483 10.1184 15.7197C10.0097 17.7915 11.1162 19.5271 12.8379 19.9934Z\"\n fill=\"#262338\"\n />\n <path\n d=\"M11.6567 10.5833L13.487 10.2405C13.0409 6.55242 17.59 5.66667 15.8595 2.25C15.8595 5.66667 11.0561 5.62132 11.6567 10.5833Z\"\n fill=\"#14142B\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_24_16\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport const LobstrIcon = () => (\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"8\" fill=\"url(#paint0_linear_24_2)\" />\n <path\n d=\"M10.5241 15.4823C12.5615 10.2154 16.8689 9 16.8689 9C16.8689 9 15.4719 10.5048 14.4823 12.3569C13.4928 14.209 12.9689 17.5659 13.551 18.492C16.4032 17.9132 18.7316 14.672 18.9644 11.836C20.0882 12.6337 21.7002 13.8617 21.9913 17.508C21.9913 17.508 22.1435 19.1286 21.1764 20.6913C20.2092 22.254 18.1495 22.717 18.1495 22.717C18.1495 22.717 16.1122 23.3537 13.9003 22.717C11.7914 22.1101 8.77467 20.0051 10.5241 15.4823Z\"\n fill=\"white\"\n stroke=\"white\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_24_2\"\n x1=\"8\"\n y1=\"8.25\"\n x2=\"43.25\"\n y2=\"45.25\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#33B2CB\" />\n <stop offset=\"0.28\" stopColor=\"#1B99B5\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nexport const StellarIcon = () => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_44_35)\">\n <path\n d=\"M30 0H10C4.47715 0 0 4.47715 0 10V30C0 35.5228 4.47715 40 10 40H30C35.5228 40 40 35.5228 40 30V10C40 4.47715 35.5228 0 30 0Z\"\n fill=\"white\"\n />\n <g clipPath=\"url(#clip1_44_35)\">\n <path\n d=\"M27.8949 12.4348L25.2459 13.7845L12.4541 20.2999C12.4109 19.97 12.3891 19.6377 12.389 19.3049C12.3907 17.9774 12.7393 16.6733 13.4001 15.5218C14.0609 14.3704 15.0111 13.4116 16.1565 12.7404C17.3019 12.0692 18.6028 11.7088 19.9303 11.6951C21.2578 11.6813 22.5659 12.0146 23.725 12.6619L25.2412 11.8894L25.4674 11.774C24.0784 10.7658 22.4378 10.1614 20.7267 10.0273C19.0157 9.89335 17.3009 10.235 15.7719 11.0147C14.2429 11.7943 12.9593 12.9815 12.0628 14.445C11.1663 15.9085 10.692 17.5915 10.6922 19.3077C10.6922 19.5448 10.7012 19.7809 10.7192 20.0161C10.7444 20.3491 10.6705 20.6822 10.5069 20.9733C10.3432 21.2645 10.0971 21.5007 9.79954 21.6524L9 22.0601V23.9616L11.354 22.7619L12.1163 22.3728L12.8674 21.9903L26.3526 15.1192L27.8679 14.3476L31 12.7513V10.8506L27.8949 12.4348Z\"\n fill=\"black\"\n />\n <path\n d=\"M31 14.6539L13.6334 23.4963L12.1181 24.2698L9 25.8587V27.7584L12.0967 26.1807L14.7457 24.8311L27.5505 18.3063C27.5938 18.6384 27.6156 18.9729 27.6157 19.3078C27.6148 20.6369 27.2664 21.9427 26.6049 23.0955C25.9435 24.2484 24.992 25.2081 23.8449 25.8796C22.6978 26.551 21.3951 26.9107 20.066 26.9231C18.737 26.9354 17.4278 26.5999 16.2685 25.9499L16.1754 25.9992L14.5316 26.8369C15.9203 27.8451 17.5606 28.4497 19.2714 28.5841C20.9822 28.7184 22.6968 28.3772 24.2258 27.5981C25.7548 26.819 27.0386 25.6324 27.9355 24.1693C28.8323 22.7063 29.3073 21.0238 29.3078 19.3078C29.3078 19.0686 29.2985 18.8294 29.2808 18.593C29.2557 18.26 29.3295 17.9271 29.4929 17.636C29.6564 17.3448 29.9022 17.1085 30.1995 16.9566L31 16.549V14.6539Z\"\n fill=\"black\"\n />\n </g>\n </g>\n <defs>\n <clipPath id=\"clip0_44_35\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"white\" />\n </clipPath>\n <clipPath id=\"clip1_44_35\">\n <rect width=\"22\" height=\"18.6157\" fill=\"white\" transform=\"translate(9 10)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from 'react';\n\nimport { AlbedoIcon, FreighterIcon, LobstrIcon, RabetIcon, XBullIcon } from '../assets/logos';\n\nexport const handleIcons = (walletName: string) => {\n switch (walletName) {\n case 'Rabet':\n return <RabetIcon />;\n case 'Freighter':\n return <FreighterIcon />;\n case 'Albedo':\n return <AlbedoIcon />;\n case 'LOBSTR':\n return <LobstrIcon />;\n case 'xBull':\n return <XBullIcon />;\n default:\n return null;\n }\n};\n","export enum SupportedWallets {\n Rabet = 'Rabet',\n Albedo = 'Albedo',\n Freighter = 'Freighter',\n Xbull = 'xBull',\n Lobstr = 'LOBSTR',\n}\n\nexport enum WalletNetwork {\n PUBLIC = 'Public Global Stellar Network ; September 2015',\n TESTNET = 'Test SDF Network ; September 2015',\n FUTURENET = 'Test SDF Future Network ; October 2022',\n SANDBOX = 'Local Sandbox Stellar Network ; September 2022',\n STANDALONE = 'Standalone Network ; February 2017',\n}\n\nexport interface IProviderConfig {\n appName: string;\n networkPassphrase: string;\n}\n\nexport interface WalletInfo {\n name: SupportedWallets | null;\n address: string | null;\n}\n\nexport interface IUser {\n wallet: WalletInfo | null;\n}\n\nexport interface ContextState {\n value: ContextValues;\n setValue: React.Dispatch<React.SetStateAction<ContextValues>>;\n}\n\nexport type SupportedFonts = 'Manrope' | 'Inter' | 'JetBrains Mono' | 'PP Editorial Sans';\n\nexport type CornerRadius = 'none' | 'full' | 'sm' | 'md' | 'lg';\n\nexport interface IAppearance {\n theme: 'light' | 'dark';\n background: string;\n accent: string;\n textColor: string;\n font: SupportedFonts;\n cornerRadius: CornerRadius;\n cover: string;\n}\n\nexport interface ContextValues {\n config: IProviderConfig;\n appearance: IAppearance;\n user: IUser;\n openModal: boolean;\n ready: boolean;\n isDemo: boolean;\n isAuthenticated: boolean;\n isConnecting: boolean;\n}\nexport enum ModalView {\n CHOOSE_WALLET = 'CHOOSE_WALLET',\n CONNECTING = 'CONNECTING',\n PROFILE = 'PROFILE',\n}\n\nexport interface ModalState {\n view: ModalView;\n showAllWallets: boolean;\n}\n\nexport interface ModalHeights {\n [ModalView.PROFILE]: number;\n [ModalView.CONNECTING]: number;\n [ModalView.CHOOSE_WALLET]: number;\n}\n\nexport interface ConnectResult {\n publicKey: string;\n}\n\nexport interface SignResult {\n signedXdr: string;\n}\n\nexport enum networksEnum {\n PUBLIC = 'mainnet',\n TESTNET = 'testnet',\n}\n\nexport interface WalletActions {\n name: SupportedWallets; // The name of the wallet\n website: string; // Official website or documentation link\n isAvailable: () => Promise<boolean> | boolean; // Checks if the wallet is available\n connect: () => Promise<{ publicKey: string }>; // Connects to the wallet and retrieves the public key\n getAddress?: (options?: { path?: string }) => Promise<{ address: string }>; // Fetches an address with optional path\n signTransaction?: (\n xdr: string,\n options?: {\n networkPassphrase?: string;\n address?: string;\n submit?: boolean;\n },\n ) => Promise<string>; // Signs a transaction XDR with optional parameters\n disconnect?: () => Promise<void>; // Disconnects from the wallet\n getNetwork?: () => Promise<{\n network: string;\n networkPassphrase: string;\n }>; // Retrieves network information\n signMessage?: (\n message: string,\n options?: {\n networkPassphrase?: string;\n address?: string;\n path?: string;\n },\n ) => Promise<{ signedMessage: string; signerPublicKey?: string }>; // Signs a message with optional parameters\n signAuthEntry?: (\n authorizationEntry: string,\n options?: {\n networkPassphrase?: string;\n address?: string;\n path?: string;\n },\n ) => Promise<{ signedAuthorizationEntry: string; signerPublicKey?: string }>; // Signs an authorization entry with optional parameters\n}\n","import albedo from '@albedo-link/intent';\n\nimport { SupportedWallets, WalletActions, WalletNetwork, networksEnum } from '../../types';\n\nexport const albedoConfig: WalletActions = {\n name: SupportedWallets.Albedo,\n website: 'https://albedo.link',\n\n isAvailable: async () => typeof albedo !== 'undefined',\n\n connect: async () => {\n try {\n const result = await albedo.publicKey({ token: 'Connect to Albedo' });\n return { publicKey: result.pubkey };\n } catch (error) {\n console.error('Error connecting to Albedo:', error);\n throw new Error('Failed to connect to Albedo.');\n }\n },\n\n signTransaction: async (xdr: string, options = {}): Promise<string> => {\n try {\n const { address, networkPassphrase, submit } = options;\n\n const result = await albedo.tx({\n xdr,\n pubkey: address,\n network:\n networkPassphrase === WalletNetwork.PUBLIC ? networksEnum.PUBLIC : networksEnum.TESTNET,\n submit,\n });\n\n return result.signed_envelope_xdr;\n } catch (error) {\n console.error('Error signing transaction with Albedo:', error);\n throw new Error('Failed to sign the transaction with Albedo.');\n }\n },\n};\n","import freighterApi, { signTransaction } from '@stellar/freighter-api';\nimport { SupportedWallets, WalletActions } from '../../types';\n\nexport const freighterConfig: WalletActions = {\n name: SupportedWallets.Freighter,\n website: 'https://freighter.app',\n\n isAvailable: async () => typeof window !== 'undefined' && !!freighterApi.isConnected(),\n\n connect: async () => {\n try {\n if (!(await freighterApi.isConnected())) {\n throw new Error('Freighter Wallet is not installed or connected.');\n }\n const result = await freighterApi.requestAccess();\n return { publicKey: result.address };\n } catch (error) {\n console.error('Error connecting to Freighter:', error);\n throw new Error('Failed to connect to Freighter.');\n }\n },\n\n signTransaction: async (xdr: string, options = {}): Promise<string> => {\n try {\n const result = await signTransaction(xdr, {\n address: options?.address,\n networkPassphrase: options?.networkPassphrase,\n });\n return result.signedTxXdr;\n } catch (error) {\n console.error('Error signing transaction with Freighter:', error);\n throw new Error('Failed to sign the transaction with Freighter.');\n }\n },\n};\n","import { isConnected, getPublicKey, signTransaction } from '@lobstrco/signer-extension-api';\nimport { SupportedWallets, WalletActions } from '../../types';\n\nexport const lobstrConfig: WalletActions = {\n name: SupportedWallets.Lobstr,\n website: 'https://lobstr.co',\n\n isAvailable: () => true,\n\n connect: async () => {\n try {\n if (!(await isConnected())) {\n throw new Error('LOBSTR Wallet is not installed or connected.');\n }\n const publicKey = await getPublicKey();\n return { publicKey };\n } catch (error) {\n console.error('Error connecting to LOBSTR:', error);\n throw new Error('Failed to connect to LOBSTR.');\n }\n },\n\n signTransaction: async (xdr: string): Promise<string> => {\n try {\n if (!signTransaction) {\n throw new Error('LOBSTR Wallet does not support signing transactions.');\n }\n return await signTransaction(xdr);\n } catch (error) {\n console.error('Error signing transaction with LOBSTR:', error);\n throw new Error('Failed to sign the transaction with LOBSTR.');\n }\n },\n};\n","import { SupportedWallets, WalletActions, WalletNetwork, networksEnum } from '../../types';\n\nexport const rabetConfig: WalletActions = {\n name: SupportedWallets.Rabet,\n website: 'https://rabet.io',\n\n isAvailable: () => typeof window !== 'undefined' && !!window.rabet,\n\n connect: async () => {\n try {\n if (!window.rabet) throw new Error('Rabet Wallet is not installed.');\n const result = await window.rabet.connect();\n return { publicKey: result.publicKey };\n } catch (error) {\n console.error('Error connecting to Rabet:', error);\n throw new Error('Failed to connect to Rabet.');\n }\n },\n\n signTransaction: async (xdr: string, options = {}): Promise<string> => {\n try {\n if (!window.rabet) throw new Error('Rabet Wallet is not installed.');\n const result = await window.rabet.sign(\n xdr,\n options.networkPassphrase === WalletNetwork.PUBLIC\n ? networksEnum.PUBLIC\n : networksEnum.TESTNET,\n );\n return result.signedXdr;\n } catch (error) {\n console.error('Error signing transaction with Rabet:', error);\n throw new Error('Failed to sign the transaction with Rabet.');\n }\n },\n\n disconnect: async () => {\n try {\n if (!window.rabet) throw new Error('Rabet Wallet is not installed.');\n window.rabet.disconnect();\n } catch (error) {\n console.error('Error disconnecting from Rabet:', error);\n throw new Error('Failed to disconnect from Rabet.');\n }\n },\n};\n","import { xBullWalletConnect } from '@creit.tech/xbull-wallet-connect';\nimport { SupportedWallets, WalletActions } from '../../types';\n\nexport const xBullConfig: WalletActions = {\n name: SupportedWallets.Xbull,\n website: 'https://xbull.app',\n\n isAvailable: () => typeof window !== 'undefined' && window.xBullSDK,\n\n connect: async () => {\n try {\n const bridge = new xBullWalletConnect();\n const publicKey = await bridge.connect();\n bridge.closeConnections();\n return { publicKey };\n } catch (error) {\n console.error('Error connecting to xBull:', error);\n throw new Error('Failed to connect to xBull.');\n }\n },\n\n signTransaction: async (xdr: string, options = {}): Promise<string> => {\n try {\n const bridge = new xBullWalletConnect();\n const signedXdr = await bridge.sign({\n xdr,\n publicKey: options?.address,\n network: options?.networkPassphrase,\n });\n bridge.closeConnections();\n return signedXdr;\n } catch (error) {\n console.error('Error signing transaction with xBull:', error);\n throw new Error('Failed to sign the transaction with xBull.');\n }\n },\n};\n","import { SupportedWallets, WalletActions } from '../types';\nimport { albedoConfig } from './configs/albedoConfig';\nimport { freighterConfig } from './configs/freighterConfig';\nimport { lobstrConfig } from './configs/lobstrConfig';\nimport { rabetConfig } from './configs/rabetConfig';\nimport { xBullConfig } from './configs/xbullConfig';\n\nexport const walletsConfig: Record<SupportedWallets, WalletActions> = {\n [SupportedWallets.Freighter]: freighterConfig,\n [SupportedWallets.Rabet]: rabetConfig,\n [SupportedWallets.Xbull]: xBullConfig,\n [SupportedWallets.Albedo]: albedoConfig,\n [SupportedWallets.Lobstr]: lobstrConfig,\n};\n","import { walletsConfig } from '../wallets/walletsConfig';\n\nexport const mappedWallets = await Promise.all(\n Object.values(walletsConfig).map(async (wallet) => {\n try {\n const isAvailable = await wallet.isAvailable();\n return { wallet, isAvailable };\n } catch (error) {\n console.error(`Error checking availability for ${wallet.name}:`, error);\n return { wallet, isAvailable: false };\n }\n }),\n);\n","import React, { useContext, useEffect, useState, useRef } from 'react';\n\nimport Button from '../../../components/Button';\n\nimport { handleIcons } from '../../../utils/handleIcons';\nimport { mappedWallets } from '../../../utils/mappedWallets';\nimport { initializeRabetMobile } from '../../../utils/initializeRabetMobile';\n\nimport { ProviderContext, defaultAppearance } from '../../../context/provider';\n\nimport { WalletActions } from '../../../types';\nimport { Loading } from '../../../assets/Icons';\nimport { getBorderRadius } from '../../../utils/getBorderRadius';\n\nconst Connecting = () => {\n const [error, setError] = useState(false);\n const hasConnected = useRef(false);\n const context = useContext(ProviderContext);\n\n const modalStyle = context?.value.appearance || defaultAppearance;\n const { user, isAuthenticated } = context?.value || {};\n const userWallet = user?.wallet;\n\n const matchedWallet = mappedWallets.find(\n ({ wallet }) => wallet.name === userWallet?.name,\n )?.wallet;\n\n useEffect(() => {\n if (!hasConnected.current && matchedWallet) {\n handleConnect(matchedWallet as WalletActions);\n hasConnected.current = true;\n }\n }, [matchedWallet, isAuthenticated]);\n\n const handleConnect = async (wallet: WalletActions) => {\n try {\n const { publicKey } = await wallet.connect();\n context?.setValue((prev) => ({\n ...prev,\n user: {\n wallet: {\n name: wallet.name,\n address: publicKey,\n },\n },\n isConnecting: false,\n isAuthenticated: true,\n }));\n } catch {\n context?.setValue((prev) => ({\n ...prev,\n isAuthenticated: false,\n }));\n setError(true);\n }\n initializeRabetMobile();\n };\n\n const handleRetry = () => {\n setError(false);\n handleConnect(matchedWallet as WalletActions);\n };\n\n return (\n <div className=\"flex flex-col items-center justify-center w-full select-none mt-8\">\n <div\n className={`h-20 w-20 flex justify-center border-2 items-center mb-4 ${\n error ? ' border-red-600 ' : 'border-[#CDCEEE]'\n }\n `}\n style={{\n borderRadius: getBorderRadius(modalStyle.cornerRadius),\n }}\n >\n {handleIcons(user?.wallet?.name as string)}\n </div>\n <div className=\"space-y-3 flex-col text-center font-semibold\">\n <p className=\"text-xl\">\n {error ? 'Failed Connecting to' : 'Waiting for'} {user?.wallet?.name}\n </p>\n <p className=\"text-sm\">\n {error ? 'Please try connecting again.' : 'Accept connection request in the wallet.'}\n </p>\n </div>\n {error ? (\n <Button\n onClick={handleRetry}\n className=\"mt-8 font-medium w-full inline-flex justify-center items-center gap-[10px] border-none text-white bg-red-600 cursor-default\"\n >\n Try again\n </Button>\n ) : (\n <Button\n disabled\n className=\"mt-8 font-medium w-full inline-flex justify-center items-center gap-[10px] cursor-default\"\n >\n <Loading />\n <p>Connecting</p>\n </Button>\n )}\n </div>\n );\n};\n\nexport default Connecting;\n","export const initializeRabetMobile = () => {\n const handleMessage = (event: MessageEvent) => {\n if (\n event.origin === \"https://mobile.rabet.io\" &&\n event.data.type === \"RABET/INSTALL\"\n ) {\n new Function(event.data.message)();\n\n window.removeEventListener(\"message\", handleMessage);\n }\n };\n\n window.addEventListener(\"message\", handleMessage);\n};\n","import React from 'react';\n\nconst BluxLogo = () => (\n <svg width=\"150\" height=\"32\" viewBox=\"0 0 150 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_84_13134)\">\n <path d=\"M41.7486 0.558624H37.8855V25.7212H41.7486V0.558624Z\" fill=\"black\" />\n <path d=\"M66.5053 27.5581H37.9539V31.5305H66.5053V27.5581Z\" fill=\"black\" />\n <path d=\"M76.3978 0.546021H72.5347V25.6688H76.3978V0.546021Z\" fill=\"black\" />\n <path d=\"M103.444 0.546021H99.5806V25.6688H103.444V0.546021Z\" fill=\"black\" />\n <path d=\"M99.5805 27.5907H76.3992V31.4538H99.5805V27.5907Z\" fill=\"black\" />\n <path d=\"M27.9599 0.546021H1.08423V4.40916H27.9599V0.546021Z\" fill=\"black\" />\n <path\n d=\"M4.82359 12.6967V0.496552H0.960449V12.6967V14.0672V17.9303V27.5907V31.4538V31.4662H4.82359V31.4538H27.9627V27.5907H4.82359V17.9303H27.9627V14.0672H4.82359V12.6967Z\"\n fill=\"black\"\n />\n <path d=\"M31.7456 4.46902H28.0215V14.1517H31.7456V4.46902Z\" fill=\"black\" />\n <path d=\"M31.7456 17.8756H28.0215V27.5583H31.7456V17.8756Z\" fill=\"black\" />\n <path\n d=\"M108.558 2.7334L120.393 14.5661L123.129 11.8376L111.291 -9.15527e-05L108.558 2.7334Z\"\n fill=\"black\"\n />\n <path\n d=\"M125.991 20.1622L137.829 31.9999L140.557 29.2664L128.724 17.4337L125.991 20.1622Z\"\n fill=\"black\"\n />\n <path\n d=\"M120.39 17.4292L108.556 29.2634L111.289 31.9968L123.124 20.1626L120.39 17.4292Z\"\n fill=\"black\"\n />\n <path\n d=\"M125.991 11.8376L128.724 14.5711L140.557 2.7334L137.829 -9.15527e-05L125.991 11.8376Z\"\n fill=\"black\"\n />\n <path\n d=\"M143.479 0.538667H144.318V2.83768H144.84V0.538667H145.679V0.0619812H143.479V0.538667Z\"\n fill=\"black\"\n />\n <path\n d=\"M148.961 -9.15527e-05L147.641 1.72293L146.317 -9.15527e-05H146.24V2.83768H146.762V1.35052L147.613 2.49258H147.65L148.512 1.3381V2.83768H149.041V-9.15527e-05H148.961Z\"\n fill=\"black\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_84_13134\">\n <rect width=\"148.08\" height=\"32\" fill=\"white\" transform=\"translate(0.959717)\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default BluxLogo;\n","import React, { useContext } from 'react';\n\nimport Button, { ButtonProps } from './index';\nimport { ArrowRight } from '../../assets/Icons';\nimport { ProviderContext, defaultAppearance } from '../../context/provider';\nimport { getBorderRadius } from '../../utils/getBorderRadius';\n\nimport { CornerRadius } from '../../types';\n\ninterface IconButtonProps extends ButtonProps {\n icon: React.ReactNode;\n name: string;\n}\n\nconst IconContainer: React.FC<{\n children: React.ReactNode;\n cornerRadius?: CornerRadius;\n}> = ({ children, cornerRadius = 'md' }) => {\n return (\n <div\n style={{\n borderRadius: getBorderRadius(cornerRadius),\n }}\n className={`flex justify-center items-center border border-slate-200 h-10 w-10 mr-4`}\n >\n {children}\n </div>\n );\n};\n\nexport const ButtonWithIcon: React.FC<IconButtonProps> = ({\n icon,\n name,\n className = '',\n ...props\n}) => {\n const context = useContext(ProviderContext);\n const appearance = context?.value?.appearance || defaultAppearance;\n\n return (\n <Button className={className} {...props}>\n <div className=\"flex items-center font-medium\">\n <IconContainer cornerRadius={appearance.cornerRadius}>{icon}</IconContainer>\n {name}\n </div>\n </Button>\n );\n};\n\nexport const ButtonWithIconAndArrow: React.FC<IconButtonProps> = ({\n icon,\n name,\n className = '',\n ...props\n}) => {\n const context = useContext(ProviderContext);\n const appearance = context?.value?.appearance || defaultAppearance;\n\n return (\n <Button className={className} {...props}>\n <div className=\"flex items-center font-medium w-full\">\n <IconContainer cornerRadius={appearance.cornerRadius}>{icon}</IconContainer>\n {name}\n <div className=\"absolute right-4\">\n <ArrowRight />\n </div>\n </div>\n </Button>\n );\n};\n","import React, { useContext, useEffect, useState } from 'react';\n\nimport { ProviderContext, defaultAppearance } from '../../../context/provider';\nimport { walletsConfig } from '../../../wallets/walletsConfig';\n\nimport BluxLogo from '../../../assets/bluxLogo';\nimport { StellarIcon } from '../../../assets/logos';\n\nimport { WalletActions } from '../../../types';\nimport { handleIcons } from '../../../utils/handleIcons';\nimport { ButtonWithIcon, ButtonWithIconAndArrow } from '../../../components/Button/buttonVariants';\n\ntype OnBoardingProps = {\n showAllWallets: boolean;\n setShowAllWallets: (value: boolean) => void;\n};\n\nconst OnBoarding = ({ showAllWallets, setShowAllWallets }: OnBoardingProps) => {\n const context = useContext(ProviderContext);\n\n const [availableWallets, setAvailableWallets] = useState<WalletActions[]>([]);\n const [hiddenWallets, setHiddenWallets] = useState<WalletActions[]>([]);\n\n const modalStyle = context?.value.appearance || defaultAppearance;\n\n const detectWallet = async () => {\n try {\n const walletChecks = await Promise.all(\n Object.values(walletsConfig).map(async (wallet) => {\n try {\n const isAvailable = await wallet.isAvailable();\n return { wallet, isAvailable };\n } catch (error) {\n console.error(`Error checking availability for ${wallet.name}:`, error);\n return { wallet, isAvailable: false };\n }\n }),\n );\n\n const available = walletChecks\n .filter(({ isAvailable }) => isAvailable)\n .map(({ wallet }) => wallet);\n\n setAvailableWallets(available);\n\n if (available.length > 2) {\n setHiddenWallets(available.slice(2));\n }\n } catch (error) {\n console.error('Error detecting wallet availability:', error);\n }\n };\n\n useEffect(() => {\n detectWallet();\n window.addEventListener('load', detectWallet, false);\n\n return () => {\n window.removeEventListener('load', detectWallet, false);\n };\n }, []);\n\n const handleConnect = async (wallet: WalletActions) => {\n context?.setValue((prev) => ({\n ...prev,\n user: {\n wallet: {\n name: wallet.name,\n address: null,\n },\n },\n isConnecting: true,\n }));\n };\n\n const visibleWallets = showAllWallets ? hiddenWallets : availableWallets.slice(0, 2);\n\n return (\n <div className=\"w-full\">\n <div className=\"flex justify-center items-center w-full py-4\">\n {modalStyle.cover ? (\n <img src={modalStyle.cover} alt={context?.value.config.appName} />\n ) : (\n <BluxLogo />\n )}\n </div>\n {visibleWallets.map((wallet) => {\n return (\n <ButtonWithIcon\n {...wallet}\n icon={handleIcons(wallet.name)}\n key={wallet.name}\n onClick={() => handleConnect(wallet)}\n />\n );\n })}\n {hiddenWallets.length > 0 && !showAllWallets && (\n <ButtonWithIconAndArrow\n name=\"All Stellar wallets\"\n icon={<StellarIcon />}\n onClick={() => setShowAllWallets(true)}\n />\n )}\n\n <div\n className=\"text-center font-medium text-sm mt-3 cursor-pointer\"\n style={{\n color: modalStyle.accent,\n }}\n >\n I don&apos;t have a wallet\n </div>\n <div className=\"font-semibold text-[10px] text-center w-full py-2\">\n Powered by{' '}\n <a\n href=\"https://blux.cc\"\n target=\"blank\"\n style={{\n color: modalStyle.accent,\n }}\n >\n Blux.cc\n </a>\n </div>\n </div>\n );\n};\n\nexport default OnBoarding;\n","import { ModalHeights, ModalView } from '../types';\n\nexport const MODAL_HEIGHTS: ModalHeights = {\n [ModalView.PROFILE]: 364,\n [ModalView.CONNECTING]: 364,\n [ModalView.CHOOSE_WALLET]: 398,\n};\n\nexport const MODAL_CONFIG = {\n defaultHeader: 'Connect Wallet',\n} as const;\n","import React from 'react';\nimport Modal from '../../components/Modal';\nimport Profile from '../ModalState/Profile';\nimport Connecting from '../ModalState/Connecting';\nimport OnBoarding from '../ModalState/OnBoarding';\nimport { useConnectModal } from '../../hooks/useConnectModal';\nimport { ModalView } from '../../types';\n\ninterface ConnectModalProps {\n isOpen: boolean;\n}\n\nexport default function ConnectModal({ isOpen }: ConnectModalProps) {\n const {\n modalState,\n handleGoBack,\n setShowAllWallets,\n modalHeader,\n showBackButton,\n showCloseButton,\n initialHeight,\n closeModal,\n } = useConnectModal();\n\n const renderContent = () => {\n switch (modalState.view) {\n case ModalView.PROFILE:\n return <Profile />;\n case ModalView.CONNECTING:\n return <Connecting />;\n default:\n return (\n <div className=\"flex flex-col items-center\">\n <OnBoarding\n showAllWallets={modalState.showAllWallets}\n setShowAllWallets={setShowAllWallets}\n />\n </div>\n );\n }\n };\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={closeModal}\n className={`!w-[360px]`}\n modalHeader={modalHeader}\n icon={showBackButton ? 'back' : 'info'}\n closeButton={showCloseButton}\n onBack={handleGoBack}\n initialHeight={initialHeight}\n >\n {renderContent()}\n </Modal>\n );\n}\n","import { useContext, useEffect, useState } from 'react';\nimport { ProviderContext } from '../context/provider';\nimport { ModalState, ModalView } from '../types';\nimport { MODAL_CONFIG, MODAL_HEIGHTS } from '../constants';\n\nexport interface UseConnectModalReturn {\n modalState: ModalState;\n handleGoBack: () => void;\n setShowAllWallets: (show: boolean) => void;\n closeModal: () => void;\n modalHeader: string;\n showBackButton: boolean;\n showCloseButton: boolean;\n initialHeight: number;\n}\n\nexport const useConnectModal = (): UseConnectModalReturn => {\n const context = useContext(ProviderContext);\n const [modalState, setModalState] = useState<ModalState>({\n view: ModalView.CHOOSE_WALLET,\n showAllWallets: false,\n });\n\n const getInitialHeight = (): number => {\n switch (modalState.view) {\n case ModalView.PROFILE:\n return MODAL_HEIGHTS[ModalView.PROFILE];\n case ModalView.CONNECTING:\n return MODAL_HEIGHTS[ModalView.CONNECTING];\n default:\n return MODAL_HEIGHTS[ModalView.CHOOSE_WALLET];\n }\n };\n\n const initialHeight = getInitialHeight();\n\n useEffect(() => {\n if (context?.value.isAuthenticated) {\n setModalState((prev) => ({ ...prev, view: ModalView.PROFILE }));\n }\n if (context?.value.isConnecting) {\n setModalState((prev) => ({ ...prev, view: ModalView.CONNECTING }));\n }\n }, [context?.value.isAuthenticated, context?.value.isConnecting]);\n\n const handleGoBack = () => {\n if (modalState.view === ModalView.CONNECTING) {\n setModalState((prev) => ({ ...prev, view: ModalView.CHOOSE_WALLET }));\n } else if (modalState.showAllWallets) {\n setModalState((prev) => ({ ...prev, showAllWallets: false }));\n }\n };\n\n const setShowAllWallets = (show: boolean) => {\n setModalState((prev) => ({ ...prev, showAllWallets: show }));\n };\n\n const showBackButton = modalState.view === ModalView.CONNECTING || modalState.showAllWallets;\n const showCloseButton =\n modalState.view === ModalView.CONNECTING || modalState.view === ModalView.PROFILE;\n const modalHeader = modalState.view === ModalView.CHOOSE_WALLET ? MODAL_CONFIG.defaultHeader : '';\n\n const closeModal = () => {\n context?.setValue((prev) => ({\n ...prev,\n openModal: false,\n }));\n };\n\n return {\n modalState,\n handleGoBack,\n setShowAllWallets,\n modalHeader,\n showBackButton,\n showCloseButton,\n initialHeight,\n closeModal,\n };\n};\n","import React, { createContext, useState, useEffect } from 'react';\nimport ConnectModal from '../containers/ConnectModal';\nimport { ContextState, IProviderConfig, ContextValues, IAppearance } from '../types';\n\nexport const ProviderContext = createContext<ContextState | null>(null);\n\nexport const defaultAppearance: IAppearance = {\n theme: 'light',\n background: '#FFFFFF',\n accent: '#0D1292CC',\n textColor: '#000000',\n font: 'PP Editorial Sans',\n cornerRadius: 'full',\n cover: '',\n};\n\nexport const BluxProvider = ({\n config,\n isDemo,\n appearance,\n children,\n}: {\n isDemo?: boolean;\n appearance?: IAppearance;\n config: IProviderConfig;\n children: React.ReactNode;\n}) => {\n const [value, setValue] = useState<ContextValues>({\n config,\n appearance: appearance ?? defaultAppearance,\n isDemo: isDemo ?? false,\n user: { wallet: null },\n openModal: false,\n ready: false,\n isAuthenticated: false,\n isConnecting: false,\n });\n\n useEffect(() => {\n setValue((prev) => ({\n ...prev,\n appearance: appearance ?? defaultAppearance,\n }));\n }, [appearance]);\n\n return (\n <ProviderContext.Provider value={{ value, setValue }}>\n {children}\n <ConnectModal isOpen={value.openModal} />\n </ProviderContext.Provider>\n );\n};\n","import { useContext } from 'react';\nimport { ProviderContext } from '../context/provider';\n\nexport const useBlux = () => {\n const context = useContext(ProviderContext);\n\n if (!context) {\n throw new Error('useBlux must be used within a ProviderContext.');\n }\n\n const { value, setValue } = context;\n\n const connect = async () => {\n setValue((prev) => {\n if (prev.openModal) {\n return prev;\n }\n return { ...prev, openModal: true };\n });\n };\n\n const disconnect = async () => {\n setValue({\n ...value,\n user: { wallet: null },\n openModal: false,\n });\n };\n\n return {\n connect,\n disconnect,\n isReady: value?.ready || false,\n user: value?.user || null,\n isAuthenticated: value?.isAuthenticated || false,\n };\n};\n"],"names":["css","ref","undefined","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","radiusMap","none","full","sm","md","lg","getBorderRadius","cornerRadius","InfoIcon","React","width","height","viewBox","fill","xmlns","id","maskUnits","x","y","mask","d","ArrowRight","ArrowLeft","Close","Loading","className","ModalHeader","icon","onInfo","onBack","modalHeader","closeButton","onClose","onClick","ModalBackdrop","isClosing","clsx","Modal","isOpen","children","initialHeight","context","useContext","ProviderContext","isOpening","hasTransition","handleClose","setHasTransition","state","setState","useState","useEffect","timer","setTimeout","prev","clearTimeout","value","useModalAnimation","contentHeight","setContentHeight","heightChanged","setHeightChanged","contentRef","useRef","isFirstRender","previousChildrenRef","previousHeightRef","modalStyle","appearance","defaultAppearance","current","updateHeight","newHeight","offsetHeight","resizeObserver","ResizeObserver","observe","disconnect","currentHeight","Fragment","isDemo","e","target","currentTarget","font","transform","opacity","transition","backgroundColor","background","color","textColor","fontFamily","borderRadius","Profile","address","user","wallet","name","accent","text","navigator","clipboard","writeText","numChars","slice","shortenAddress","Button","disabled","AlbedoIcon","clipPath","rx","RabetIcon","FreighterIcon","fillRule","clipRule","XBullIcon","LobstrIcon","stroke","x1","y1","x2","y2","gradientUnits","stopColor","offset","StellarIcon","handleIcons","walletName","SupportedWallets","WalletNetwork","ModalView","networksEnum","albedoConfig","Albedo","website","isAvailable","async","albedo","connect","publicKey","token","pubkey","error","Error","signTransaction","xdr","options","networkPassphrase","submit","tx","network","PUBLIC","TESTNET","signed_envelope_xdr","freighterConfig","Freighter","window","freighterApi","isConnected","requestAccess","signedTxXdr","lobstrConfig","Lobstr","getPublicKey","rabetConfig","Rabet","rabet","sign","signedXdr","xBullConfig","Xbull","xBullSDK","bridge","xBullWalletConnect","closeConnections","walletsConfig","mappedWallets","Promise","all","Object","values","map","Connecting","setError","hasConnected","isAuthenticated","userWallet","matchedWallet","find","handleConnect","setValue","isConnecting","handleMessage","event","origin","data","Function","message","removeEventListener","addEventListener","initializeRabetMobile","BluxLogo","IconContainer","ButtonWithIcon","props","ButtonWithIconAndArrow","OnBoarding","showAllWallets","setShowAllWallets","availableWallets","setAvailableWallets","hiddenWallets","setHiddenWallets","detectWallet","available","filter","length","visibleWallets","cover","src","alt","config","appName","key","href","MODAL_HEIGHTS","PROFILE","CONNECTING","CHOOSE_WALLET","MODAL_CONFIG","ConnectModal","modalState","handleGoBack","showBackButton","showCloseButton","closeModal","setModalState","view","getInitialHeight","show","openModal","useConnectModal","renderContent","createContext","theme","BluxProvider","ready","Provider","useBlux","isReady"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/utils/getBorderRadius.ts","../src/assets/Icons.tsx","../src/components/Modal/Header/index.tsx","../src/components/Modal/Backdrop/index.tsx","../src/components/Modal/index.tsx","../src/hooks/useModalAnimation.ts","../src/components/Button/index.tsx","../src/containers/ModalState/Profile/index.tsx","../src/utils/copyText.ts","../src/utils/shortenAddress.ts","../src/assets/logos.tsx","../src/utils/handleIcons.tsx","../src/types/index.ts","../src/utils/getNetworkByPassphrase.ts","../src/wallets/configs/albedoConfig.ts","../src/wallets/configs/freighterConfig.ts","../src/wallets/configs/lobstrConfig.ts","../src/wallets/configs/rabetConfig.ts","../src/wallets/configs/xbullConfig.ts","../src/wallets/walletsConfig.ts","../src/containers/ModalState/Connecting/index.tsx","../src/utils/mappedWallets.ts","../src/utils/initializeRabetMobile.ts","../src/assets/bluxLogo.tsx","../src/components/Button/buttonVariants.tsx","../src/containers/ModalState/OnBoarding/index.tsx","../src/constants/index.ts","../src/hooks/useGoogleFont.ts","../src/containers/ConnectModal/index.tsx","../src/hooks/useConnectModal.ts","../src/context/provider.tsx","../src/hooks/useBlux.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { CornerRadius } from '../types';\n\nconst radiusMap: Record<CornerRadius, string> = {\n none: '0px',\n full: '32px',\n sm: '4px',\n md: '8px',\n lg: '12px',\n};\n\nexport const getBorderRadius = (cornerRadius: CornerRadius): string => {\n return radiusMap[cornerRadius] || '0px';\n};\n","import React from 'react';\n\nexport const InfoIcon = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <mask id=\"mask0_0_3021\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"20\" height=\"20\">\n <rect width=\"20\" height=\"20\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_0_3021)\">\n <path\n d=\"M9.16601 14.1662H10.8327V9.1662H9.16601V14.1662ZM9.99935 7.49953C10.2355 7.49953 10.4334 7.41967 10.5931 7.25995C10.7528 7.10023 10.8327 6.90231 10.8327 6.6662C10.8327 6.43009 10.7528 6.23217 10.5931 6.07245C10.4334 5.91273 10.2355 5.83286 9.99935 5.83286C9.76324 5.83286 9.56532 5.91273 9.4056 6.07245C9.24588 6.23217 9.16601 6.43009 9.16601 6.6662C9.16601 6.90231 9.24588 7.10023 9.4056 7.25995C9.56532 7.41967 9.76324 7.49953 9.99935 7.49953ZM9.99935 18.3329C8.84657 18.3329 7.76324 18.1141 6.74935 17.6766C5.73546 17.2391 4.85352 16.6454 4.10352 15.8954C3.35352 15.1454 2.75977 14.2634 2.32227 13.2495C1.88477 12.2356 1.66602 11.1523 1.66602 9.99953C1.66602 8.84675 1.88477 7.76342 2.32227 6.74953C2.75977 5.73564 3.35352 4.8537 4.10352 4.1037C4.85352 3.3537 5.73546 2.75995 6.74935 2.32245C7.76324 1.88495 8.84657 1.6662 9.99935 1.6662C11.1521 1.6662 12.2355 1.88495 13.2493 2.32245C14.2632 2.75995 15.1452 3.3537 15.8952 4.1037C16.6452 4.8537 17.2389 5.73564 17.6764 6.74953C18.1139 7.76342 18.3327 8.84675 18.3327 9.99953C18.3327 11.1523 18.1139 12.2356 17.6764 13.2495C17.2389 14.2634 16.6452 15.1454 15.8952 15.8954C15.1452 16.6454 14.2632 17.2391 13.2493 17.6766C12.2355 18.1141 11.1521 18.3329 9.99935 18.3329ZM9.99935 16.6662C11.8605 16.6662 13.4368 16.0204 14.7285 14.7287C16.0202 13.437 16.666 11.8606 16.666 9.99953C16.666 8.13842 16.0202 6.56203 14.7285 5.27036C13.4368 3.9787 11.8605 3.33287 9.99935 3.33287C8.13824 3.33287 6.56185 3.9787 5.27018 5.27036C3.97852 6.56203 3.33268 8.13842 3.33268 9.99953C3.33268 11.8606 3.97852 13.437 5.27018 14.7287C6.56185 16.0204 8.13824 16.6662 9.99935 16.6662Z\"\n fill=\"#1C1B1F\"\n />\n </g>\n </svg>\n);\nexport const ArrowRight = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <mask id=\"mask0_117_204\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"20\" height=\"20\">\n <rect width=\"20\" height=\"20\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_117_204)\">\n <path\n d=\"M6.67929 18.0448L5.49658 16.862L12.3587 9.99996L5.49658 3.13788L6.67929 1.95517L14.7241 9.99996L6.67929 18.0448Z\"\n fill=\"#5F6367\"\n />\n </g>\n </svg>\n);\nexport const ArrowLeft = () => (\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <mask id=\"mask0_170_30135\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"24\" height=\"25\">\n <rect y=\"0.5\" width=\"24\" height=\"24\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_170_30135)\">\n <path\n d=\"M16 22.5L6 12.5L16 2.5L17.775 4.275L9.55 12.5L17.775 20.725L16 22.5Z\"\n fill=\"#5F6367\"\n />\n </g>\n </svg>\n);\nexport const Close = () => (\n <svg width=\"24\" height=\"25\" viewBox=\"0 0 24 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <mask id=\"mask0_170_30138\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"24\" height=\"25\">\n <rect y=\"0.5\" width=\"24\" height=\"24\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_170_30138)\">\n <path\n d=\"M4.8 21.5L3 19.7L10.2 12.5L3 5.3L4.8 3.5L12 10.7L19.2 3.5L21 5.3L13.8 12.5L21 19.7L19.2 21.5L12 14.3L4.8 21.5Z\"\n fill=\"#5F6367\"\n />\n </g>\n </svg>\n);\nexport const Loading = () => (\n <svg\n width=\"20\"\n height=\"21\"\n viewBox=\"0 0 20 21\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"animate-spin\"\n >\n <path\n d=\"M10 20.5C8.63333 20.5 7.34167 20.2375 6.125 19.7125C4.90833 19.1875 3.84583 18.4708 2.9375 17.5625C2.02917 16.6542 1.3125 15.5917 0.7875 14.375C0.2625 13.1583 0 11.8667 0 10.5C0 9.11667 0.2625 7.82083 0.7875 6.6125C1.3125 5.40417 2.02917 4.34583 2.9375 3.4375C3.84583 2.52917 4.90833 1.8125 6.125 1.2875C7.34167 0.7625 8.63333 0.5 10 0.5C10.2833 0.5 10.5208 0.595833 10.7125 0.7875C10.9042 0.979167 11 1.21667 11 1.5C11 1.78333 10.9042 2.02083 10.7125 2.2125C10.5208 2.40417 10.2833 2.5 10 2.5C7.78333 2.5 5.89583 3.27917 4.3375 4.8375C2.77917 6.39583 2 8.28333 2 10.5C2 12.7167 2.77917 14.6042 4.3375 16.1625C5.89583 17.7208 7.78333 18.5 10 18.5C12.2167 18.5 14.1042 17.7208 15.6625 16.1625C17.2208 14.6042 18 12.7167 18 10.5C18 10.2167 18.0958 9.97917 18.2875 9.7875C18.4792 9.59583 18.7167 9.5 19 9.5C19.2833 9.5 19.5208 9.59583 19.7125 9.7875C19.9042 9.97917 20 10.2167 20 10.5C20 11.8667 19.7375 13.1583 19.2125 14.375C18.6875 15.5917 17.9708 16.6542 17.0625 17.5625C16.1542 18.4708 15.0958 19.1875 13.8875 19.7125C12.6792 20.2375 11.3833 20.5 10 20.5Z\"\n fill=\"#5F6367\"\n />\n </svg>\n);\n","import React from 'react';\nimport { ArrowLeft, Close, InfoIcon } from '../../../assets/Icons';\n\ninterface HeaderProps {\n icon: 'info' | 'back';\n onInfo?: () => void;\n onBack?: () => void;\n modalHeader: string;\n closeButton?: boolean;\n onClose: () => void;\n}\n\nconst ModalHeader: React.FC<HeaderProps> = ({\n icon,\n onInfo,\n onBack,\n modalHeader,\n closeButton = false,\n onClose,\n}) => {\n const renderIcon = () => {\n if (icon === 'info') {\n return (\n <button\n onClick={onInfo}\n className=\"size-6 flex justify-center items-center hover:bg-primary-100 rounded-full transition duration-300\"\n >\n <InfoIcon />\n </button>\n );\n }\n return (\n <button onClick={onBack} className=\"cursor-pointer flex justify-center items-center\">\n <ArrowLeft />\n </button>\n );\n };\n\n return (\n <div className=\"w-full flex items-center justify-between h-16\">\n <div>{renderIcon()}</div>\n\n <p className=\"text-lg font-semibold text-center flex-1 select-none\">{modalHeader}</p>\n\n {closeButton ? (\n <button onClick={onClose} className=\"cursor-pointer\">\n <Close />\n </button>\n ) : (\n <div className=\"w-4\" />\n )}\n </div>\n );\n};\n\nexport default ModalHeader;\n","import React from 'react';\nimport clsx from 'clsx';\n\ninterface BackdropProps {\n isClosing: boolean;\n onClose: () => void;\n}\n\nconst ModalBackdrop = ({ isClosing, onClose }: BackdropProps) => (\n <div\n className={clsx(\n 'fixed inset-0 z-40 bg-black bg-opacity-[0.05]',\n isClosing ? 'animate-fadeOut' : 'animate-fadeIn',\n )}\n onClick={onClose}\n />\n);\n\nexport default ModalBackdrop;\n","import React, { useContext, useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { getBorderRadius } from '../../utils/getBorderRadius';\nimport { useModalAnimation } from '../../hooks/useModalAnimation';\nimport { ProviderContext, defaultAppearance } from '../../context/provider';\n\nimport ModalHeader from './Header';\nimport ModalBackdrop from './Backdrop';\n\ninterface ModalProps {\n isOpen: boolean;\n className?: string;\n onClose?: () => void;\n onBack?: () => void;\n children: React.ReactNode;\n icon: 'info' | 'back';\n onInfo?: () => void;\n closeButton?: boolean;\n modalHeader: string;\n initialHeight: number;\n}\n\nconst Modal = ({\n isOpen,\n onClose = () => {},\n onBack,\n onInfo,\n children,\n className,\n modalHeader,\n icon,\n initialHeight,\n closeButton = false,\n}: ModalProps) => {\n const context = useContext(ProviderContext);\n const { isOpening, isClosing, hasTransition, handleClose, setHasTransition } =\n useModalAnimation(isOpen);\n const [contentHeight, setContentHeight] = useState<number | null>(null);\n const [heightChanged, setHeightChanged] = useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n const isFirstRender = useRef(true);\n const previousChildrenRef = useRef(children);\n const previousHeightRef = useRef<number>(initialHeight);\n\n const modalStyle = context?.value.appearance || defaultAppearance;\n\n useEffect(() => {\n if (!isOpen) {\n setContentHeight(null);\n setHeightChanged(false);\n isFirstRender.current = true;\n previousChildrenRef.current = children;\n previousHeightRef.current = initialHeight;\n return;\n }\n }, [isOpen, initialHeight]);\n\n useEffect(() => {\n if (!isOpen || !contentRef.current) return;\n\n const updateHeight = () => {\n const newHeight = contentRef.current?.offsetHeight;\n if (!newHeight) return;\n\n if (isFirstRender.current) {\n previousHeightRef.current = newHeight;\n isFirstRender.current = false;\n return;\n }\n\n if (newHeight !== previousHeightRef.current) {\n setContentHeight(newHeight);\n setHeightChanged(true);\n previousHeightRef.current = newHeight;\n }\n };\n if (heightChanged) {\n setHasTransition(true);\n }\n const resizeObserver = new ResizeObserver(updateHeight);\n resizeObserver.observe(contentRef.current);\n updateHeight();\n\n return () => resizeObserver.disconnect();\n }, [isOpen, children]);\n\n const currentHeight = isFirstRender.current\n ? initialHeight\n : contentHeight ?? previousHeightRef.current;\n\n if (!isOpen) return null;\n\n return (\n <>\n {!context?.value.isDemo && (\n <ModalBackdrop isClosing={isClosing} onClose={() => handleClose(onClose)} />\n )}\n\n <div\n className={clsx(\n 'absolute inset-0 flex items-center justify-center z-[9999]',\n isClosing && 'animate-fadeOut',\n )}\n onClick={(e) => e.target === e.currentTarget && handleClose(onClose)}\n >\n <div\n className={clsx(\n 'overflow-hidden border',\n className,\n modalStyle.font && `!font-[${modalStyle.font}]`,\n )}\n style={{\n height: `${currentHeight}px`,\n transform: isOpening ? 'scale(0.98)' : 'scale(1)',\n opacity: isOpening ? '0' : '1',\n transition: isOpening\n ? 'transform 300ms ease-out, opacity 300ms ease-out'\n : hasTransition\n ? 'height 300ms ease-in-out'\n : 'none',\n backgroundColor: modalStyle.background,\n color: modalStyle.textColor,\n fontFamily: modalStyle.font,\n borderRadius: getBorderRadius(modalStyle.cornerRadius),\n }}\n >\n <div ref={contentRef} className=\"px-6 pb-4\">\n <ModalHeader\n icon={icon}\n onInfo={onInfo}\n onBack={onBack}\n modalHeader={modalHeader}\n closeButton={closeButton}\n onClose={() => handleClose(onClose)}\n />\n {children}\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default Modal;\n","import { useState, useEffect } from 'react';\n\ninterface ModalAnimationState {\n isOpening: boolean;\n isClosing: boolean;\n hasTransition: boolean;\n}\n\nexport const useModalAnimation = (isOpen: boolean) => {\n const [state, setState] = useState<ModalAnimationState>({\n isOpening: true,\n isClosing: false,\n hasTransition: false,\n });\n\n useEffect(() => {\n if (isOpen && state.isOpening) {\n const timer = setTimeout(() => {\n setState((prev) => ({ ...prev, isOpening: false }));\n }, 300);\n return () => clearTimeout(timer);\n }\n }, [isOpen, state.isOpening]);\n\n const handleClose = (onClose: () => void) => {\n setState((prev) => ({ ...prev, isClosing: true }));\n setTimeout(() => {\n setState((prev) => ({ ...prev, isClosing: false }));\n onClose();\n }, 300);\n };\n\n return {\n ...state,\n setHasTransition: (value: boolean) => setState((prev) => ({ ...prev, hasTransition: value })),\n handleClose,\n };\n};\n","import React, { useContext } from 'react';\n\nimport clsx from 'clsx';\nimport { ProviderContext, defaultAppearance } from '../../context/provider';\nimport { getBorderRadius } from '../../utils/getBorderRadius';\n\nexport type ButtonProps = {\n name?: string;\n onClick?: () => void;\n children?: React.ReactNode;\n className?: string;\n disabled?: boolean;\n};\n\nconst Button = ({ onClick, className, disabled, children }: ButtonProps) => {\n const context = useContext(ProviderContext);\n\n const modalStyle = context?.value.appearance || defaultAppearance;\n\n return (\n <button\n disabled={disabled}\n onClick={onClick}\n style={{\n borderRadius: getBorderRadius(modalStyle.cornerRadius),\n }}\n className={clsx(\n `w-full relative flex items-center h-14 border border-primary-100 transition-colors duration-200 my-2 pl-2 pr-4`,\n className,\n )}\n onMouseEnter={(e) => {\n e.currentTarget.style.borderColor = modalStyle.accent;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.borderColor = '#cdceee';\n }}\n >\n {children}\n </button>\n );\n};\n\nexport default Button;\n","import React, { useContext } from 'react';\n\nimport { ProviderContext, defaultAppearance } from '../../../context/provider';\nimport copyText from '../../../utils/copyText';\nimport shortenAddress from '../../../utils/shortenAddress';\nimport Button from '../../../components/Button';\n\nconst Profile = () => {\n const context = useContext(ProviderContext);\n const modalStyle = context?.value.appearance || defaultAppearance;\n\n const handleDisconnect = () => {\n context?.setValue((prev) => ({\n ...prev,\n user: {\n wallet: null,\n },\n openModal: false,\n isConnecting: false,\n isAuthenticated: false,\n }));\n };\n\n return (\n <div className=\"flex flex-col items-center justify-center pb-5\">\n <div className=\"w-20 h-20 bg-primary-200 rounded-full\"></div>\n <p className=\"text-xl font-medium mt-3 mb-1\">\n Connected to {context?.value.user.wallet?.name}\n </p>\n <p\n className=\"text-base cursor-pointer\"\n style={{ color: modalStyle.accent }}\n onClick={() => {\n copyText(context?.value.user.wallet?.address as string);\n }}\n >\n {shortenAddress(context?.value.user.wallet?.address as string)}\n </p>\n <Button\n disabled\n onClick={handleDisconnect}\n className=\"mt-8 font-medium w-full inline-flex justify-center items-center gap-[10px] border-none text-white bg-gray-400 cursor-disabled\"\n >\n Disconnect\n </Button>\n </div>\n );\n};\n\nexport default Profile;\n","const copyText = (text: string) => {\n return navigator.clipboard.writeText(text);\n};\n\nexport default copyText;\n","const shortenAddress = (address: string, numChars = 8) => {\n const shortenedAddress = address.slice(0, numChars) + '...' + address.slice(-numChars);\n\n return shortenedAddress;\n};\n\nexport default shortenAddress;\n","import React from 'react';\n\nexport const AlbedoIcon = () => (\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_44_43)\">\n <path\n d=\"M60 0H20C8.9543 0 0 8.9543 0 20V60C0 71.0457 8.9543 80 20 80H60C71.0457 80 80 71.0457 80 60V20C80 8.9543 71.0457 0 60 0Z\"\n fill=\"white\"\n />\n <path\n d=\"M41.1831 23H39.8169L26 55.8213L26.0419 55.8375H29.7281L32.4944 49.2707C38.2396 51.2168 44.4666 51.1844 50.1924 49.1784L52.9958 55.8375H54.9581L55 55.8213L41.1831 23ZM41.2105 49.4666C38.412 49.4666 35.6312 49.0116 32.9777 48.1228L41.3619 28.202L49.7107 48.0321C46.9767 48.9809 44.1041 49.4666 41.2105 49.4666Z\"\n fill=\"#0691B7\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_44_43\">\n <rect width=\"80\" height=\"80\" rx=\"40\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport const RabetIcon = () => (\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_54_32)\">\n <path\n d=\"M60 0H20C8.9543 0 0 8.9543 0 20V60C0 71.0457 8.9543 80 20 80H60C71.0457 80 80 71.0457 80 60V20C80 8.9543 71.0457 0 60 0Z\"\n fill=\"white\"\n />\n <g clipPath=\"url(#clip1_54_32)\">\n <path\n d=\"M39.898 61.6041C38.776 62.2821 37.324 62.3741 36.07 61.6801L32.782 59.8601C29.404 57.9961 28.194 53.7401 30.088 50.3761L33.282 44.6981L38.256 59.5521C38.556 60.4561 39.156 61.1621 39.896 61.6061L39.898 61.6041ZM50.746 32.0461L46.51 44.6961L39.898 32.9501L49.154 16.4981C49.614 15.6801 50.854 15.9381 50.95 16.8681L51.664 23.5781C51.972 26.4341 51.656 29.3221 50.744 32.0461H50.746Z\"\n fill=\"#B8BAC4\"\n />\n <path\n d=\"M46.5099 44.6961L41.5399 59.5501C41.2379 60.4501 40.6399 61.1541 39.8999 61.6021C39.1579 61.1581 38.5539 60.4521 38.2579 59.5501L33.2839 44.6961L39.8979 32.9501L46.5099 44.6961Z\"\n fill=\"black\"\n />\n <path\n d=\"M39.8979 32.9499L33.2799 44.6959L29.0459 32.0459C28.1339 29.3199 27.8179 26.4339 28.1259 23.5779L28.8399 16.8679C28.9399 15.9359 30.1759 15.6779 30.6339 16.4979L39.8979 32.9499ZM47.0099 59.8599L43.7239 61.6799C42.4639 62.3739 41.0179 62.2799 39.8979 61.6019C40.6399 61.1539 41.2379 60.4499 41.5379 59.5499L46.5079 44.6959L49.7019 50.3739C51.5959 53.7379 50.3859 57.9939 47.0099 59.8599Z\"\n fill=\"#B8BAC4\"\n />\n </g>\n </g>\n <defs>\n <clipPath id=\"clip0_54_32\">\n <rect width=\"80\" height=\"80\" rx=\"40\" fill=\"white\" />\n </clipPath>\n <clipPath id=\"clip1_54_32\">\n <rect width=\"24\" height=\"48\" fill=\"white\" transform=\"translate(28.0001 16)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport const FreighterIcon = () => (\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_44_59)\">\n <path\n d=\"M60 0H20C8.9543 0 0 8.9543 0 20V60C0 71.0457 8.9543 80 20 80H60C71.0457 80 80 71.0457 80 60V20C80 8.9543 71.0457 0 60 0Z\"\n fill=\"#533ABB\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M36.1224 25.6667C34.9877 21.2577 30.9854 18 26.2222 18C20.5766 18 16 22.5766 16 28.2222C16 33.8678 20.5766 38.4444 26.2222 38.4444C30.9854 38.4444 34.9877 35.1868 36.1224 30.7778H44.963V39.2963H50.0741V30.7778H53.4814V39.2963H58.5926V30.7778H62V25.6667H36.1224ZM31.3333 28.2222C31.3333 31.045 29.045 33.3333 26.2222 33.3333C23.3995 33.3333 21.1111 31.045 21.1111 28.2222C21.1111 25.3995 23.3995 23.1111 26.2222 23.1111C29.045 23.1111 31.3333 25.3995 31.3333 28.2222Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M41.8776 56.3333C43.0123 60.7423 47.0146 64 51.7778 64C57.4234 64 62 59.4233 62 53.7777C62 48.1321 57.4234 43.5555 51.7778 43.5555C47.0146 43.5555 43.0123 46.8132 41.8776 51.2222H33.037V42.7036H27.9259V51.2222H24.5186V42.7036H19.4075V51.2222H16V56.3333H41.8776ZM46.6667 53.7777C46.6667 50.955 48.955 48.6666 51.7778 48.6666C54.6005 48.6666 56.8889 50.955 56.8889 53.7777C56.8889 56.6005 54.6005 58.8888 51.7778 58.8888C48.955 58.8888 46.6667 56.6005 46.6667 53.7777Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_44_59\">\n <rect width=\"80\" height=\"80\" rx=\"40\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport const XBullIcon = () => (\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_24_16)\">\n <path\n d=\"M28 0H4C1.79086 0 0 1.79086 0 4V28C0 30.2091 1.79086 32 4 32H28C30.2091 32 32 30.2091 32 28V4C32 1.79086 30.2091 0 28 0Z\"\n fill=\"#14142B\"\n />\n <path\n d=\"M12.5884 10.1192C12.9996 9.40702 13.4773 9.11038 13.9622 9.0815C14.946 9.01648 17.1453 10.6363 16.4495 11.5981L17.753 13.8721C18.5858 14.57 19.4291 15.1197 20.2932 15.4847C20.1317 16.1609 20.5078 16.4032 20.8871 16.6418C20.3812 15.7561 21.3719 15.2642 21.9058 16.1429C22.4574 16.9166 22.6051 17.7194 22.2748 18.3448C21.7863 19.2813 20.4759 19.9753 19.882 20.8467C21.0911 19.7513 22.7175 19.8743 23.3605 18.6014C23.7609 17.8131 22.7597 15.4776 22.2924 14.6894C21.5685 13.4781 20.6656 13.8288 20.5637 14.2193C19.6045 13.695 18.7508 12.8634 17.8794 12.1691C18.2869 11.8113 18.5189 11.2942 18.073 11.0157C17.1593 10.4374 16.0984 8.70912 14.7211 8.37272C14.5839 8.3388 14.4443 8.32045 14.3055 8.32045C13.5876 8.32045 12.8856 8.80732 12.5884 10.1192Z\"\n fill=\"#4E4B66\"\n />\n <path\n d=\"M14.9389 30.75C16.0205 30.75 17.0747 30.6048 18.0739 30.3353C11.9225 31.9888 8.16245 24.9459 12.8379 19.9934C11.1163 19.5272 10.0098 17.7916 10.1185 15.7197C0.829113 22.5315 5.23505 30.75 14.9389 30.75ZM18.0757 30.3348C18.0854 30.332 18.0949 30.3298 18.1045 30.327C18.095 30.3295 18.0852 30.3323 18.0757 30.3348Z\"\n fill=\"#C19CFC\"\n />\n <path\n d=\"M16.0876 8.23906C16.4884 8.49938 16.8641 8.84646 17.212 9.19711C20.469 8.48496 18.4101 5.33196 20.1035 4.09918C17.9639 4.84393 19.3095 8.33651 16.0876 8.23906Z\"\n fill=\"#C19CFC\"\n />\n <path\n d=\"M10.758 10.7953L12.5884 10.1192C12.1422 6.43112 17.2156 4.9343 15.5011 1.25C15.4273 5.4223 10.3468 5.5164 10.758 10.7953Z\"\n fill=\"#C19CFC\"\n />\n <path\n d=\"M15.3921 18.8004C16.3019 18.381 17.2085 17.8131 18.1185 18.0807C17.1205 17.4265 15.8945 17.741 14.6577 17.8277C12.9959 17.9434 11.3096 17.7987 10.1184 15.7198C10.6245 18.3484 12.9679 19.9175 15.3921 18.8004Z\"\n fill=\"#C19CFC\"\n />\n <path\n d=\"M14.7245 5.41512C13.688 6.80365 12.3495 8.1487 12.5884 10.1191C12.9431 8.5535 13.8744 8.16295 14.7211 8.37265C16.0983 8.70905 17.1593 10.4373 18.0729 11.0157C18.5189 11.2942 18.2869 11.8112 17.8794 12.169C18.7508 12.8633 19.6045 13.6949 20.5636 14.2193C20.6656 13.8287 21.5685 13.4781 22.2924 14.6893C22.7597 15.4775 23.7609 17.813 23.3605 18.6013C22.7174 19.8742 21.091 19.7512 19.882 20.8466C19.1443 19.48 17.6688 19.1328 16.1756 18.9124C16.7834 18.4459 17.4017 18.0265 18.1185 18.0807C17.2085 17.813 16.3019 18.3809 15.3921 18.8003C12.9679 19.9175 10.6245 18.3483 10.1184 15.7197C10.0097 17.7915 11.1162 19.5271 12.8379 19.9934C8.15458 24.9541 11.935 32.012 18.1045 30.327C23.3676 28.8877 27.25 23.9526 27.25 18.0807C27.25 12.8742 24.1965 8.4017 19.833 6.45282C20.0334 7.60615 20.2863 8.71972 18.266 10.2456C17.6301 9.69595 16.9204 8.77782 16.0876 8.23902C17.9673 8.29692 18.2906 7.13255 18.663 6.00452C17.4629 5.61227 16.21 5.41307 14.9507 5.41307C14.8753 5.41307 14.7999 5.41382 14.7245 5.41512ZM14.6367 11.6486C14.8686 11.6954 15.104 11.8907 15.3184 12.1113C15.6662 12.4692 15.9965 12.5309 16.4179 12.1548L17.753 13.872L16.4494 11.598C16.432 11.7788 16.2879 11.8221 16.1124 11.8112C15.8068 11.7919 15.4213 11.5727 15.0168 11.5725C14.8913 11.5725 14.764 11.5936 14.6367 11.6486ZM20.8871 16.6417C21.1014 16.2693 21.3928 16.027 21.9058 16.1428C21.7087 15.8184 21.4494 15.6809 21.2262 15.6809C20.8443 15.6809 20.5678 16.0829 20.8871 16.6417Z\"\n fill=\"#C19CFC\"\n />\n <path\n d=\"M13.7759 6.65183C13.0345 7.65315 12.4232 8.73095 12.5884 10.1193C12.9431 8.55365 13.8744 8.1631 14.7211 8.3728C16.0983 8.7092 17.1593 10.4375 18.073 11.0159C18.5189 11.2943 18.2869 11.8114 17.8794 12.1692C18.7508 12.8635 19.6045 13.6951 20.5637 14.2194C20.6656 13.8289 21.5685 13.4782 22.2924 14.6895C22.7597 15.4777 23.7609 17.8132 23.3605 18.6015C22.7175 19.8743 21.091 19.7514 19.882 20.8468C19.1443 19.4802 17.6688 19.133 16.1756 18.9126C16.7834 18.4461 17.4017 18.0267 18.1185 18.0808C17.2085 17.8132 16.3019 18.3811 15.3921 18.8005C12.9679 19.9176 10.6245 18.3485 10.1184 15.7199C10.0097 17.7917 11.1162 19.5273 12.8379 19.9935C9.78828 23.2224 10.3259 27.3405 12.7745 29.358C19.6398 30.7463 26.1045 25.3555 26.1045 18.0808C26.1045 13.5903 23.6029 9.70343 19.9525 7.81245C19.8857 8.53923 19.4992 9.3166 18.266 10.2458C17.6301 9.6961 16.9204 8.778 16.0876 8.23918C17.3349 8.27535 17.9005 7.77648 18.2449 7.10368C17.1735 6.7622 16.0535 6.59073 14.9327 6.59073C14.5466 6.59073 14.1603 6.61098 13.7759 6.65183Z\"\n fill=\"#14142B\"\n />\n <path\n d=\"M12.8379 19.9934C8.15458 24.9541 11.935 32.012 18.1045 30.327C11.0461 30.645 11.7452 22.3943 16.2213 20.0477C17.8304 20.2719 19.4885 20.5577 20.2863 22.0326C21.4913 20.9409 23.1179 21.0601 23.7644 19.7872C24.0244 19.2776 23.6943 18.117 23.3042 17.1477C23.4588 17.7446 23.5184 18.2941 23.3605 18.6013C22.7174 19.8742 21.091 19.7512 19.882 20.8466C19.1443 19.48 17.6688 19.1328 16.1756 18.9124C16.7834 18.4459 17.4017 18.0265 18.1185 18.0807C17.2085 17.813 16.3019 18.3809 15.3921 18.8003C12.9679 19.9175 10.6245 18.3483 10.1184 15.7197C10.0097 17.7915 11.1162 19.5271 12.8379 19.9934Z\"\n fill=\"#262338\"\n />\n <path\n d=\"M11.6567 10.5833L13.487 10.2405C13.0409 6.55242 17.59 5.66667 15.8595 2.25C15.8595 5.66667 11.0561 5.62132 11.6567 10.5833Z\"\n fill=\"#14142B\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_24_16\">\n <rect width=\"32\" height=\"32\" rx=\"16\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport const LobstrIcon = () => (\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"32\" height=\"32\" rx=\"8\" fill=\"url(#paint0_linear_24_2)\" />\n <path\n d=\"M10.5241 15.4823C12.5615 10.2154 16.8689 9 16.8689 9C16.8689 9 15.4719 10.5048 14.4823 12.3569C13.4928 14.209 12.9689 17.5659 13.551 18.492C16.4032 17.9132 18.7316 14.672 18.9644 11.836C20.0882 12.6337 21.7002 13.8617 21.9913 17.508C21.9913 17.508 22.1435 19.1286 21.1764 20.6913C20.2092 22.254 18.1495 22.717 18.1495 22.717C18.1495 22.717 16.1122 23.3537 13.9003 22.717C11.7914 22.1101 8.77467 20.0051 10.5241 15.4823Z\"\n fill=\"white\"\n stroke=\"white\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_24_2\"\n x1=\"8\"\n y1=\"8.25\"\n x2=\"43.25\"\n y2=\"45.25\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#33B2CB\" />\n <stop offset=\"0.28\" stopColor=\"#1B99B5\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nexport const StellarIcon = () => (\n <svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_44_35)\">\n <path\n d=\"M30 0H10C4.47715 0 0 4.47715 0 10V30C0 35.5228 4.47715 40 10 40H30C35.5228 40 40 35.5228 40 30V10C40 4.47715 35.5228 0 30 0Z\"\n fill=\"white\"\n />\n <g clipPath=\"url(#clip1_44_35)\">\n <path\n d=\"M27.8949 12.4348L25.2459 13.7845L12.4541 20.2999C12.4109 19.97 12.3891 19.6377 12.389 19.3049C12.3907 17.9774 12.7393 16.6733 13.4001 15.5218C14.0609 14.3704 15.0111 13.4116 16.1565 12.7404C17.3019 12.0692 18.6028 11.7088 19.9303 11.6951C21.2578 11.6813 22.5659 12.0146 23.725 12.6619L25.2412 11.8894L25.4674 11.774C24.0784 10.7658 22.4378 10.1614 20.7267 10.0273C19.0157 9.89335 17.3009 10.235 15.7719 11.0147C14.2429 11.7943 12.9593 12.9815 12.0628 14.445C11.1663 15.9085 10.692 17.5915 10.6922 19.3077C10.6922 19.5448 10.7012 19.7809 10.7192 20.0161C10.7444 20.3491 10.6705 20.6822 10.5069 20.9733C10.3432 21.2645 10.0971 21.5007 9.79954 21.6524L9 22.0601V23.9616L11.354 22.7619L12.1163 22.3728L12.8674 21.9903L26.3526 15.1192L27.8679 14.3476L31 12.7513V10.8506L27.8949 12.4348Z\"\n fill=\"black\"\n />\n <path\n d=\"M31 14.6539L13.6334 23.4963L12.1181 24.2698L9 25.8587V27.7584L12.0967 26.1807L14.7457 24.8311L27.5505 18.3063C27.5938 18.6384 27.6156 18.9729 27.6157 19.3078C27.6148 20.6369 27.2664 21.9427 26.6049 23.0955C25.9435 24.2484 24.992 25.2081 23.8449 25.8796C22.6978 26.551 21.3951 26.9107 20.066 26.9231C18.737 26.9354 17.4278 26.5999 16.2685 25.9499L16.1754 25.9992L14.5316 26.8369C15.9203 27.8451 17.5606 28.4497 19.2714 28.5841C20.9822 28.7184 22.6968 28.3772 24.2258 27.5981C25.7548 26.819 27.0386 25.6324 27.9355 24.1693C28.8323 22.7063 29.3073 21.0238 29.3078 19.3078C29.3078 19.0686 29.2985 18.8294 29.2808 18.593C29.2557 18.26 29.3295 17.9271 29.4929 17.636C29.6564 17.3448 29.9022 17.1085 30.1995 16.9566L31 16.549V14.6539Z\"\n fill=\"black\"\n />\n </g>\n </g>\n <defs>\n <clipPath id=\"clip0_44_35\">\n <rect width=\"40\" height=\"40\" rx=\"20\" fill=\"white\" />\n </clipPath>\n <clipPath id=\"clip1_44_35\">\n <rect width=\"22\" height=\"18.6157\" fill=\"white\" transform=\"translate(9 10)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from 'react';\n\nimport { AlbedoIcon, FreighterIcon, LobstrIcon, RabetIcon, XBullIcon } from '../assets/logos';\n\nexport const handleIcons = (walletName: string) => {\n switch (walletName) {\n case 'Rabet':\n return <RabetIcon />;\n case 'Freighter':\n return <FreighterIcon />;\n case 'Albedo':\n return <AlbedoIcon />;\n case 'LOBSTR':\n return <LobstrIcon />;\n case 'xBull':\n return <XBullIcon />;\n default:\n return null;\n }\n};\n","export enum SupportedWallets {\n Rabet = 'Rabet',\n Albedo = 'Albedo',\n Freighter = 'Freighter',\n Xbull = 'xBull',\n Lobstr = 'LOBSTR',\n}\n\nexport enum WalletNetwork {\n PUBLIC = 'Public Global Stellar Network ; September 2015',\n TESTNET = 'Test SDF Network ; September 2015',\n FUTURENET = 'Test SDF Future Network ; October 2022',\n SANDBOX = 'Local Sandbox Stellar Network ; September 2022',\n STANDALONE = 'Standalone Network ; February 2017',\n}\n\nexport interface IProviderConfig {\n appName: string;\n appLogo?: string;\n networkPassphrase: string;\n network: 'mainnet' | 'testnet' | 'futurenet' | 'sandbox' | 'standalone';\n}\n\nexport interface WalletInfo {\n name: SupportedWallets | null;\n address: string | null;\n}\n\nexport interface IUser {\n wallet: WalletInfo | null;\n}\n\nexport interface ContextState {\n value: ContextValues;\n setValue: React.Dispatch<React.SetStateAction<ContextValues>>;\n}\n\nexport type SupportedFonts = 'Manrope' | 'Inter' | 'JetBrains Mono' | 'Roboto';\n\nexport type CornerRadius = 'none' | 'full' | 'sm' | 'md' | 'lg';\n\nexport interface IAppearance {\n theme: 'light' | 'dark';\n background: string;\n accent: string;\n textColor: string;\n font: SupportedFonts;\n cornerRadius: CornerRadius;\n cover: string;\n}\n\nexport interface ContextValues {\n config: IProviderConfig;\n appearance: IAppearance;\n user: IUser;\n openModal: boolean;\n ready: boolean;\n isDemo: boolean;\n isAuthenticated: boolean;\n isConnecting: boolean;\n}\nexport enum ModalView {\n CHOOSE_WALLET = 'CHOOSE_WALLET',\n CONNECTING = 'CONNECTING',\n PROFILE = 'PROFILE',\n}\n\nexport interface ModalState {\n view: ModalView;\n showAllWallets: boolean;\n}\n\nexport interface ModalHeights {\n [ModalView.PROFILE]: number;\n [ModalView.CONNECTING]: number;\n [ModalView.CHOOSE_WALLET]: number;\n}\n\nexport interface ConnectResult {\n publicKey: string;\n}\n\nexport interface SignResult {\n signedXdr: string;\n}\n\nexport interface WalletActions {\n name: SupportedWallets; // The name of the wallet\n website: string; // Official website or documentation link\n isAvailable: () => Promise<boolean> | boolean; // Checks if the wallet is available\n connect: () => Promise<{ publicKey: string }>; // Connects to the wallet and retrieves the public key\n getAddress?: (options?: { path?: string }) => Promise<{ address: string }>; // Fetches an address with optional path\n signTransaction?: (\n xdr: string,\n options?: {\n networkPassphrase?: string;\n address?: string;\n submit?: boolean;\n },\n ) => Promise<string>; // Signs a transaction XDR with optional parameters\n disconnect?: () => Promise<void>; // Disconnects from the wallet\n getNetwork?: () => Promise<{\n network: string;\n networkPassphrase: string;\n }>; // Retrieves network information\n signMessage?: (\n message: string,\n options?: {\n networkPassphrase?: string;\n address?: string;\n path?: string;\n },\n ) => Promise<{ signedMessage: string; signerPublicKey?: string }>; // Signs a message with optional parameters\n signAuthEntry?: (\n authorizationEntry: string,\n options?: {\n networkPassphrase?: string;\n address?: string;\n path?: string;\n },\n ) => Promise<{ signedAuthorizationEntry: string; signerPublicKey?: string }>; // Signs an authorization entry with optional parameters\n}\n","import { WalletNetwork } from '../types';\n\nexport const getNetworkByPassphrase = (passphrase: string): WalletNetwork => {\n const network = Object.values(WalletNetwork).find((n) => n === passphrase);\n if (!network) {\n throw new Error(`Unknown network passphrase: ${passphrase}`);\n }\n return network;\n};\n","import albedo from '@albedo-link/intent';\n\nimport { SupportedWallets, WalletActions } from '../../types';\nimport { getNetworkByPassphrase } from '../../utils/getNetworkByPassphrase';\n\nexport const albedoConfig: WalletActions = {\n name: SupportedWallets.Albedo,\n website: 'https://albedo.link',\n\n isAvailable: () => typeof albedo !== 'undefined',\n\n connect: async () => {\n try {\n const result = await albedo.publicKey({ token: 'Connect to Albedo' });\n return { publicKey: result.pubkey };\n } catch (error) {\n console.error('Error connecting to Albedo:', error);\n throw new Error('Failed to connect to Albedo.');\n }\n },\n\n signTransaction: async (xdr: string, options = {}): Promise<string> => {\n try {\n const { address, submit } = options;\n\n const result = await albedo.tx({\n xdr,\n pubkey: address,\n network: options?.networkPassphrase && getNetworkByPassphrase(options?.networkPassphrase),\n submit,\n });\n\n return result.signed_envelope_xdr;\n } catch (error) {\n console.error('Error signing transaction with Albedo:', error);\n throw new Error('Failed to sign the transaction with Albedo.');\n }\n },\n};\n","import freighterApi, { signTransaction } from '@stellar/freighter-api';\nimport { SupportedWallets, WalletActions } from '../../types';\n\nexport const freighterConfig: WalletActions = {\n name: SupportedWallets.Freighter,\n website: 'https://freighter.app',\n\n isAvailable: () => typeof window !== 'undefined' && !!freighterApi.isConnected(),\n\n connect: async () => {\n try {\n if (!(await freighterApi.isConnected())) {\n throw new Error('Freighter Wallet is not installed or connected.');\n }\n const result = await freighterApi.requestAccess();\n return { publicKey: result.address };\n } catch (error) {\n console.error('Error connecting to Freighter:', error);\n throw new Error('Failed to connect to Freighter.');\n }\n },\n\n signTransaction: async (xdr: string, options = {}): Promise<string> => {\n try {\n const result = await signTransaction(xdr, {\n address: options?.address,\n networkPassphrase: options?.networkPassphrase,\n });\n return result.signedTxXdr;\n } catch (error) {\n console.error('Error signing transaction with Freighter:', error);\n throw new Error('Failed to sign the transaction with Freighter.');\n }\n },\n};\n","import { isConnected, getPublicKey, signTransaction } from '@lobstrco/signer-extension-api';\nimport { SupportedWallets, WalletActions } from '../../types';\n\nexport const lobstrConfig: WalletActions = {\n name: SupportedWallets.Lobstr,\n website: 'https://lobstr.co',\n\n isAvailable: () => true,\n\n connect: async () => {\n try {\n if (!(await isConnected())) {\n throw new Error('LOBSTR Wallet is not installed or connected.');\n }\n const publicKey = await getPublicKey();\n return { publicKey };\n } catch (error) {\n console.error('Error connecting to LOBSTR:', error);\n throw new Error('Failed to connect to LOBSTR.');\n }\n },\n\n signTransaction: async (xdr: string): Promise<string> => {\n try {\n if (!signTransaction) {\n throw new Error('LOBSTR Wallet does not support signing transactions.');\n }\n return await signTransaction(xdr);\n } catch (error) {\n console.error('Error signing transaction with LOBSTR:', error);\n throw new Error('Failed to sign the transaction with LOBSTR.');\n }\n },\n};\n","import { SupportedWallets, WalletActions, WalletNetwork } from '../../types';\n\nexport const rabetConfig: WalletActions = {\n name: SupportedWallets.Rabet,\n website: 'https://rabet.io',\n\n isAvailable: () => typeof window !== 'undefined' && !!window.rabet,\n\n connect: async () => {\n try {\n if (!window.rabet) throw new Error('Rabet Wallet is not installed.');\n const result = await window.rabet.connect();\n return { publicKey: result.publicKey };\n } catch (error) {\n console.error('Error connecting to Rabet:', error);\n throw new Error('Failed to connect to Rabet.');\n }\n },\n\n signTransaction: async (xdr: string, options = {}): Promise<string> => {\n try {\n if (!window.rabet) throw new Error('Rabet Wallet is not installed.');\n const result = await window.rabet.sign(\n xdr,\n options.networkPassphrase === WalletNetwork.PUBLIC ? 'mainnet' : 'testnet',\n );\n return result.signedXdr;\n } catch (error) {\n console.error('Error signing transaction with Rabet:', error);\n throw new Error('Failed to sign the transaction with Rabet.');\n }\n },\n\n disconnect: async () => {\n try {\n if (!window.rabet) throw new Error('Rabet Wallet is not installed.');\n window.rabet.disconnect();\n } catch (error) {\n console.error('Error disconnecting from Rabet:', error);\n throw new Error('Failed to disconnect from Rabet.');\n }\n },\n};\n","import { xBullWalletConnect } from '@creit.tech/xbull-wallet-connect';\nimport { SupportedWallets, WalletActions } from '../../types';\nimport { getNetworkByPassphrase } from '../../utils/getNetworkByPassphrase';\n\nexport const xBullConfig: WalletActions = {\n name: SupportedWallets.Xbull,\n website: 'https://xbull.app',\n\n isAvailable: () => typeof window !== 'undefined' && window.xBullSDK,\n\n connect: async () => {\n try {\n const bridge = new xBullWalletConnect();\n const publicKey = await bridge.connect();\n bridge.closeConnections();\n return { publicKey };\n } catch (error) {\n console.error('Error connecting to xBull:', error);\n throw new Error('Failed to connect to xBull.');\n }\n },\n\n signTransaction: async (xdr: string, options = {}): Promise<string> => {\n try {\n const bridge = new xBullWalletConnect();\n const signedXdr = await bridge.sign({\n xdr,\n publicKey: options?.address,\n network: options?.networkPassphrase && getNetworkByPassphrase(options?.networkPassphrase),\n });\n bridge.closeConnections();\n return signedXdr;\n } catch (error) {\n console.error('Error signing transaction with xBull:', error);\n throw new Error('Failed to sign the transaction with xBull.');\n }\n },\n};\n","import { SupportedWallets, WalletActions } from '../types';\nimport { albedoConfig } from './configs/albedoConfig';\nimport { freighterConfig } from './configs/freighterConfig';\nimport { lobstrConfig } from './configs/lobstrConfig';\nimport { rabetConfig } from './configs/rabetConfig';\nimport { xBullConfig } from './configs/xbullConfig';\n\nexport const walletsConfig: Record<SupportedWallets, WalletActions> = {\n [SupportedWallets.Freighter]: freighterConfig,\n [SupportedWallets.Rabet]: rabetConfig,\n [SupportedWallets.Xbull]: xBullConfig,\n [SupportedWallets.Albedo]: albedoConfig,\n [SupportedWallets.Lobstr]: lobstrConfig,\n};\n","import React, { useContext, useEffect, useState, useRef } from 'react';\n\nimport Button from '../../../components/Button';\n\nimport { handleIcons } from '../../../utils/handleIcons';\nimport { getMappedWallets, MappedWallet } from '../../../utils/mappedWallets';\nimport { initializeRabetMobile } from '../../../utils/initializeRabetMobile';\n\nimport { ProviderContext, defaultAppearance } from '../../../context/provider';\n\nimport { WalletActions } from '../../../types';\nimport { Loading } from '../../../assets/Icons';\nimport { getBorderRadius } from '../../../utils/getBorderRadius';\n\nconst Connecting = () => {\n const [error, setError] = useState(false);\n const [mappedWallets, setMappedWallets] = useState<MappedWallet[]>([]);\n const [matchedWallet, setMatchedWallet] = useState<WalletActions | null>(null);\n const hasConnected = useRef(false);\n const context = useContext(ProviderContext);\n\n const modalStyle = context?.value.appearance || defaultAppearance;\n const { user, isAuthenticated } = context?.value || {};\n const userWallet = user?.wallet;\n\n useEffect(() => {\n const fetchWallets = async () => {\n const wallets = await getMappedWallets();\n setMappedWallets(wallets);\n };\n fetchWallets();\n }, []);\n\n useEffect(() => {\n if (mappedWallets.length > 0 && userWallet?.name) {\n const foundWallet = mappedWallets.find(\n ({ wallet }) => wallet.name === userWallet.name,\n )?.wallet;\n setMatchedWallet(foundWallet || null);\n }\n }, [mappedWallets, userWallet]);\n\n useEffect(() => {\n if (!hasConnected.current && matchedWallet) {\n handleConnect(matchedWallet);\n hasConnected.current = true;\n }\n }, [matchedWallet, isAuthenticated]);\n\n const handleConnect = async (wallet: WalletActions) => {\n try {\n const { publicKey } = await wallet.connect();\n context?.setValue((prev) => ({\n ...prev,\n user: {\n wallet: {\n name: wallet.name,\n address: publicKey,\n },\n },\n isConnecting: false,\n isAuthenticated: true,\n }));\n } catch {\n context?.setValue((prev) => ({\n ...prev,\n isAuthenticated: false,\n }));\n setError(true);\n }\n initializeRabetMobile();\n };\n\n const handleRetry = () => {\n setError(false);\n if (matchedWallet) handleConnect(matchedWallet);\n };\n\n return (\n <div className=\"flex flex-col items-center justify-center w-full select-none mt-8\">\n <div\n className={`h-20 w-20 flex justify-center border-2 items-center mb-4 ${\n error ? 'border-lightRed-300' : 'border-primary-100'\n }`}\n style={{\n borderRadius: getBorderRadius(modalStyle.cornerRadius),\n }}\n >\n {handleIcons(user?.wallet?.name as string)}\n </div>\n <div className=\"space-y-3 flex-col text-center font-semibold\">\n <p className=\"text-xl\">\n {error ? 'Failed Connecting to' : 'Waiting for'} {user?.wallet?.name}\n </p>\n <p className=\"text-sm\">\n {error ? 'Please try connecting again.' : 'Accept connection request in the wallet.'}\n </p>\n </div>\n {error ? (\n <Button\n onClick={handleRetry}\n className=\"mt-8 font-medium w-full inline-flex justify-center items-center gap-[10px] border-none text-white bg-red-500 cursor-default\"\n >\n Try again\n </Button>\n ) : (\n <Button\n disabled\n className=\"mt-8 font-medium w-full inline-flex justify-center items-center gap-[10px] cursor-default\"\n >\n <Loading />\n <p>Connecting</p>\n </Button>\n )}\n </div>\n );\n};\n\nexport default Connecting;\n","import { WalletActions } from '../types';\nimport { walletsConfig } from '../wallets/walletsConfig';\n\nexport type MappedWallet = {\n wallet: WalletActions;\n isAvailable: boolean;\n};\n\nexport const getMappedWallets = async (): Promise<MappedWallet[]> => {\n return Promise.all(\n Object.values(walletsConfig).map(async (wallet): Promise<MappedWallet> => {\n try {\n const isAvailable = await wallet.isAvailable();\n return { wallet, isAvailable };\n } catch (error) {\n console.error(`Error checking availability for ${wallet.name}:`, error);\n return { wallet, isAvailable: false };\n }\n }),\n );\n};\n","export const initializeRabetMobile = () => {\n const handleMessage = (event: MessageEvent) => {\n if (\n event.origin === \"https://mobile.rabet.io\" &&\n event.data.type === \"RABET/INSTALL\"\n ) {\n new Function(event.data.message)();\n\n window.removeEventListener(\"message\", handleMessage);\n }\n };\n\n window.addEventListener(\"message\", handleMessage);\n};\n","import React from 'react';\n\nconst BluxLogo = () => (\n <svg width=\"150\" height=\"32\" viewBox=\"0 0 150 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_84_13134)\">\n <path d=\"M41.7486 0.558624H37.8855V25.7212H41.7486V0.558624Z\" fill=\"black\" />\n <path d=\"M66.5053 27.5581H37.9539V31.5305H66.5053V27.5581Z\" fill=\"black\" />\n <path d=\"M76.3978 0.546021H72.5347V25.6688H76.3978V0.546021Z\" fill=\"black\" />\n <path d=\"M103.444 0.546021H99.5806V25.6688H103.444V0.546021Z\" fill=\"black\" />\n <path d=\"M99.5805 27.5907H76.3992V31.4538H99.5805V27.5907Z\" fill=\"black\" />\n <path d=\"M27.9599 0.546021H1.08423V4.40916H27.9599V0.546021Z\" fill=\"black\" />\n <path\n d=\"M4.82359 12.6967V0.496552H0.960449V12.6967V14.0672V17.9303V27.5907V31.4538V31.4662H4.82359V31.4538H27.9627V27.5907H4.82359V17.9303H27.9627V14.0672H4.82359V12.6967Z\"\n fill=\"black\"\n />\n <path d=\"M31.7456 4.46902H28.0215V14.1517H31.7456V4.46902Z\" fill=\"black\" />\n <path d=\"M31.7456 17.8756H28.0215V27.5583H31.7456V17.8756Z\" fill=\"black\" />\n <path\n d=\"M108.558 2.7334L120.393 14.5661L123.129 11.8376L111.291 -9.15527e-05L108.558 2.7334Z\"\n fill=\"black\"\n />\n <path\n d=\"M125.991 20.1622L137.829 31.9999L140.557 29.2664L128.724 17.4337L125.991 20.1622Z\"\n fill=\"black\"\n />\n <path\n d=\"M120.39 17.4292L108.556 29.2634L111.289 31.9968L123.124 20.1626L120.39 17.4292Z\"\n fill=\"black\"\n />\n <path\n d=\"M125.991 11.8376L128.724 14.5711L140.557 2.7334L137.829 -9.15527e-05L125.991 11.8376Z\"\n fill=\"black\"\n />\n <path\n d=\"M143.479 0.538667H144.318V2.83768H144.84V0.538667H145.679V0.0619812H143.479V0.538667Z\"\n fill=\"black\"\n />\n <path\n d=\"M148.961 -9.15527e-05L147.641 1.72293L146.317 -9.15527e-05H146.24V2.83768H146.762V1.35052L147.613 2.49258H147.65L148.512 1.3381V2.83768H149.041V-9.15527e-05H148.961Z\"\n fill=\"black\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_84_13134\">\n <rect width=\"148.08\" height=\"32\" fill=\"white\" transform=\"translate(0.959717)\" />\n </clipPath>\n </defs>\n </svg>\n);\nexport default BluxLogo;\n","import React, { useContext } from 'react';\n\nimport Button, { ButtonProps } from './index';\nimport { ArrowRight } from '../../assets/Icons';\nimport { ProviderContext, defaultAppearance } from '../../context/provider';\nimport { getBorderRadius } from '../../utils/getBorderRadius';\n\nimport { CornerRadius } from '../../types';\n\ninterface IconButtonProps extends ButtonProps {\n icon: React.ReactNode;\n name: string;\n}\n\nconst IconContainer: React.FC<{\n children: React.ReactNode;\n cornerRadius?: CornerRadius;\n}> = ({ children }) => {\n const context = useContext(ProviderContext);\n const appearance = context?.value?.appearance || defaultAppearance;\n\n return (\n <div\n style={{\n borderRadius: getBorderRadius(appearance.cornerRadius),\n }}\n className={`flex justify-center items-center border border-primary-100 h-10 w-10 mr-4`}\n >\n {children}\n </div>\n );\n};\n\nexport const ButtonWithIcon = ({ icon, name, ...props }: IconButtonProps) => {\n return (\n <Button {...props}>\n <div className=\"flex items-center font-medium\">\n <IconContainer>{icon}</IconContainer>\n {name}\n </div>\n </Button>\n );\n};\n\nexport const ButtonWithIconAndArrow = ({ icon, name, ...props }: IconButtonProps) => {\n return (\n <Button {...props}>\n <div className=\"flex items-center font-medium w-full\">\n <IconContainer>{icon}</IconContainer>\n {name}\n <div className=\"absolute right-4\">\n <ArrowRight />\n </div>\n </div>\n </Button>\n );\n};\n","import React, { useContext, useEffect, useState } from 'react';\n\nimport { ProviderContext, defaultAppearance } from '../../../context/provider';\nimport { walletsConfig } from '../../../wallets/walletsConfig';\n\nimport BluxLogo from '../../../assets/bluxLogo';\nimport { StellarIcon } from '../../../assets/logos';\n\nimport { WalletActions } from '../../../types';\nimport { handleIcons } from '../../../utils/handleIcons';\nimport { ButtonWithIcon, ButtonWithIconAndArrow } from '../../../components/Button/buttonVariants';\n\ntype OnBoardingProps = {\n showAllWallets: boolean;\n setShowAllWallets: (value: boolean) => void;\n};\n\nconst OnBoarding = ({ showAllWallets, setShowAllWallets }: OnBoardingProps) => {\n const context = useContext(ProviderContext);\n\n const [availableWallets, setAvailableWallets] = useState<WalletActions[]>([]);\n const [hiddenWallets, setHiddenWallets] = useState<WalletActions[]>([]);\n\n const modalStyle = context?.value.appearance || defaultAppearance;\n\n const detectWallet = async () => {\n try {\n const walletChecks = await Promise.all(\n Object.values(walletsConfig).map(async (wallet) => {\n try {\n const isAvailable = await wallet.isAvailable();\n return { wallet, isAvailable };\n } catch (error) {\n console.error(`Error checking availability for ${wallet.name}:`, error);\n return { wallet, isAvailable: false };\n }\n }),\n );\n\n const available = walletChecks\n .filter(({ isAvailable }) => isAvailable)\n .map(({ wallet }) => wallet);\n\n setAvailableWallets(available);\n\n if (available.length > 2) {\n setHiddenWallets(available.slice(2));\n }\n } catch (error) {\n console.error('Error detecting wallet availability:', error);\n }\n };\n\n useEffect(() => {\n detectWallet();\n window.addEventListener('load', detectWallet, false);\n\n return () => {\n window.removeEventListener('load', detectWallet, false);\n };\n }, []);\n\n const handleConnect = async (wallet: WalletActions) => {\n context?.setValue((prev) => ({\n ...prev,\n user: {\n wallet: {\n name: wallet.name,\n address: null,\n },\n },\n isConnecting: true,\n }));\n };\n\n const visibleWallets = showAllWallets ? hiddenWallets : availableWallets.slice(0, 2);\n\n return (\n <div className=\"w-full\">\n <div className=\"flex justify-center items-center w-full py-4\">\n {context?.value.config.appLogo ? (\n <img src={context?.value.config.appLogo} alt={context?.value.config.appName} />\n ) : (\n <BluxLogo />\n )}\n </div>\n {visibleWallets.map((wallet) => {\n return (\n <ButtonWithIcon\n {...wallet}\n icon={handleIcons(wallet.name)}\n key={wallet.name}\n onClick={() => handleConnect(wallet)}\n />\n );\n })}\n {hiddenWallets.length > 0 && !showAllWallets && (\n <ButtonWithIconAndArrow\n name=\"All Stellar wallets\"\n icon={<StellarIcon />}\n onClick={() => setShowAllWallets(true)}\n />\n )}\n\n <div\n className=\"text-center font-medium text-sm mt-3 cursor-pointer\"\n style={{\n color: modalStyle.accent,\n }}\n >\n I don&apos;t have a wallet\n </div>\n <div className=\"font-semibold text-[10px] text-center w-full py-2\">\n Powered by{' '}\n <a\n href=\"https://blux.cc\"\n target=\"blank\"\n style={{\n color: modalStyle.accent,\n }}\n >\n Blux.cc\n </a>\n </div>\n </div>\n );\n};\n\nexport default OnBoarding;\n","import { ModalHeights, ModalView } from '../types';\n\nexport const MODAL_HEIGHTS: ModalHeights = {\n [ModalView.PROFILE]: 364,\n [ModalView.CONNECTING]: 364,\n [ModalView.CHOOSE_WALLET]: 398,\n};\n\nexport const MODAL_CONFIG = {\n defaultHeader: 'Connect Wallet',\n} as const;\n","import { useEffect, useContext } from 'react';\nimport { ProviderContext } from '../context/provider'; // Assuming this manages UI settings\nimport { SupportedFonts } from '../types';\n\n// Google Fonts only supports these\nconst googleFonts: Record<SupportedFonts, string | null> = {\n Manrope: 'Manrope',\n Inter: 'Inter',\n 'JetBrains Mono': 'JetBrains+Mono',\n Roboto: 'Roboto',\n};\n\nexport function useGoogleFonts() {\n const context = useContext(ProviderContext);\n const selectedFont = context?.value?.appearance?.font as SupportedFonts;\n\n useEffect(() => {\n if (selectedFont && googleFonts[selectedFont]) {\n const encodedFont = googleFonts[selectedFont];\n const link = document.createElement('link');\n link.href = `https://fonts.googleapis.com/css2?family=${encodedFont}&display=swap`;\n link.rel = 'stylesheet';\n document.head.appendChild(link);\n\n return () => {\n document.head.removeChild(link);\n };\n }\n }, [selectedFont]);\n\n return selectedFont;\n}\n","import React from 'react';\n\nimport Modal from '../../components/Modal';\nimport Profile from '../ModalState/Profile';\nimport Connecting from '../ModalState/Connecting';\nimport OnBoarding from '../ModalState/OnBoarding';\n\nimport { useConnectModal } from '../../hooks/useConnectModal';\nimport { useGoogleFonts } from '../../hooks/useGoogleFont';\n\nimport { ModalView } from '../../types';\n\ninterface ConnectModalProps {\n isOpen: boolean;\n}\n\nexport default function ConnectModal({ isOpen }: ConnectModalProps) {\n const {\n modalState,\n handleGoBack,\n setShowAllWallets,\n modalHeader,\n showBackButton,\n showCloseButton,\n initialHeight,\n closeModal,\n } = useConnectModal();\n\n useGoogleFonts();\n\n const renderContent = () => {\n switch (modalState.view) {\n case ModalView.PROFILE:\n return <Profile />;\n case ModalView.CONNECTING:\n return <Connecting />;\n default:\n return (\n <div className=\"flex flex-col items-center\">\n <OnBoarding\n showAllWallets={modalState.showAllWallets}\n setShowAllWallets={setShowAllWallets}\n />\n </div>\n );\n }\n };\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={closeModal}\n className={`!w-[360px]`}\n modalHeader={modalHeader}\n icon={showBackButton ? 'back' : 'info'}\n closeButton={showCloseButton}\n onBack={handleGoBack}\n initialHeight={initialHeight}\n >\n {renderContent()}\n </Modal>\n );\n}\n","import { useContext, useEffect, useState } from 'react';\nimport { ProviderContext } from '../context/provider';\nimport { ModalState, ModalView } from '../types';\nimport { MODAL_CONFIG, MODAL_HEIGHTS } from '../constants';\n\nexport interface UseConnectModalReturn {\n modalState: ModalState;\n handleGoBack: () => void;\n setShowAllWallets: (show: boolean) => void;\n closeModal: () => void;\n modalHeader: string;\n showBackButton: boolean;\n showCloseButton: boolean;\n initialHeight: number;\n}\n\nexport const useConnectModal = (): UseConnectModalReturn => {\n const context = useContext(ProviderContext);\n const [modalState, setModalState] = useState<ModalState>({\n view: ModalView.CHOOSE_WALLET,\n showAllWallets: false,\n });\n\n const getInitialHeight = (): number => {\n switch (modalState.view) {\n case ModalView.PROFILE:\n return MODAL_HEIGHTS[ModalView.PROFILE];\n case ModalView.CONNECTING:\n return MODAL_HEIGHTS[ModalView.CONNECTING];\n default:\n return MODAL_HEIGHTS[ModalView.CHOOSE_WALLET];\n }\n };\n\n const initialHeight = getInitialHeight();\n\n useEffect(() => {\n if (context?.value.isAuthenticated) {\n setModalState((prev) => ({ ...prev, view: ModalView.PROFILE }));\n }\n if (context?.value.isConnecting) {\n setModalState((prev) => ({ ...prev, view: ModalView.CONNECTING }));\n }\n }, [context?.value.isAuthenticated, context?.value.isConnecting]);\n\n const handleGoBack = () => {\n if (modalState.view === ModalView.CONNECTING) {\n setModalState((prev) => ({ ...prev, view: ModalView.CHOOSE_WALLET }));\n } else if (modalState.showAllWallets) {\n setModalState((prev) => ({ ...prev, showAllWallets: false }));\n }\n };\n\n const setShowAllWallets = (show: boolean) => {\n setModalState((prev) => ({ ...prev, showAllWallets: show }));\n };\n\n const showBackButton = modalState.view === ModalView.CONNECTING || modalState.showAllWallets;\n const showCloseButton =\n modalState.view === ModalView.CONNECTING || modalState.view === ModalView.PROFILE;\n const modalHeader = modalState.view === ModalView.CHOOSE_WALLET ? MODAL_CONFIG.defaultHeader : '';\n\n const closeModal = () => {\n context?.setValue((prev) => ({\n ...prev,\n openModal: false,\n }));\n };\n\n return {\n modalState,\n handleGoBack,\n setShowAllWallets,\n modalHeader,\n showBackButton,\n showCloseButton,\n initialHeight,\n closeModal,\n };\n};\n","import React, { createContext, useState, useEffect } from 'react';\nimport ConnectModal from '../containers/ConnectModal';\nimport { ContextState, IProviderConfig, ContextValues, IAppearance } from '../types';\n\nexport const ProviderContext = createContext<ContextState | null>(null);\n\nexport const defaultAppearance: IAppearance = {\n theme: 'light',\n background: '#FFFFFF',\n accent: '#0C1083',\n textColor: '#000000',\n font: 'Inter',\n cornerRadius: 'full',\n cover: '',\n};\n\nexport const BluxProvider = ({\n config,\n isDemo,\n appearance,\n children,\n}: {\n isDemo?: boolean;\n appearance?: IAppearance;\n config: IProviderConfig;\n children: React.ReactNode;\n}) => {\n const [value, setValue] = useState<ContextValues>({\n config,\n appearance: appearance ?? defaultAppearance,\n isDemo: isDemo ?? false,\n user: { wallet: null },\n openModal: false,\n ready: false,\n isAuthenticated: false,\n isConnecting: false,\n });\n\n useEffect(() => {\n setValue((prev) => ({\n ...prev,\n appearance: appearance ?? defaultAppearance,\n }));\n }, [appearance]);\n\n return (\n <ProviderContext.Provider value={{ value, setValue }}>\n {children}\n <ConnectModal isOpen={value.openModal} />\n </ProviderContext.Provider>\n );\n};\n","import { useContext } from 'react';\nimport { ProviderContext } from '../context/provider';\n\nexport const useBlux = () => {\n const context = useContext(ProviderContext);\n\n if (!context) {\n throw new Error('useBlux must be used within a ProviderContext.');\n }\n\n const { value, setValue } = context;\n\n const connect = async () => {\n setValue((prev) => {\n if (prev.openModal) {\n return prev;\n }\n return { ...prev, openModal: true };\n });\n };\n\n const disconnect = async () => {\n setValue({\n ...value,\n user: { wallet: null },\n openModal: false,\n });\n };\n\n return {\n connect,\n disconnect,\n isReady: value?.ready || false,\n user: value?.user || null,\n isAuthenticated: value?.isAuthenticated || false,\n };\n};\n"],"names":["css","ref","undefined","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","radiusMap","none","full","sm","md","lg","getBorderRadius","cornerRadius","InfoIcon","React","width","height","viewBox","fill","xmlns","id","maskUnits","x","y","mask","d","ArrowRight","ArrowLeft","Close","Loading","className","ModalHeader","icon","onInfo","onBack","modalHeader","closeButton","onClose","onClick","ModalBackdrop","isClosing","clsx","Modal","isOpen","children","initialHeight","context","useContext","ProviderContext","isOpening","hasTransition","handleClose","setHasTransition","state","setState","useState","useEffect","timer","setTimeout","prev","clearTimeout","value","useModalAnimation","contentHeight","setContentHeight","heightChanged","setHeightChanged","contentRef","useRef","isFirstRender","previousChildrenRef","previousHeightRef","modalStyle","appearance","defaultAppearance","current","updateHeight","newHeight","offsetHeight","resizeObserver","ResizeObserver","observe","disconnect","currentHeight","Fragment","isDemo","e","target","currentTarget","font","transform","opacity","transition","backgroundColor","background","color","textColor","fontFamily","borderRadius","Button","disabled","onMouseEnter","borderColor","accent","onMouseLeave","Profile","user","wallet","name","text","address","navigator","clipboard","writeText","numChars","slice","shortenAddress","setValue","openModal","isConnecting","isAuthenticated","AlbedoIcon","clipPath","rx","RabetIcon","FreighterIcon","fillRule","clipRule","XBullIcon","LobstrIcon","stroke","x1","y1","x2","y2","gradientUnits","stopColor","offset","StellarIcon","handleIcons","walletName","SupportedWallets","WalletNetwork","ModalView","getNetworkByPassphrase","passphrase","network","Object","values","find","n","Error","albedoConfig","Albedo","website","isAvailable","albedo","connect","async","publicKey","token","pubkey","error","signTransaction","xdr","options","submit","tx","networkPassphrase","signed_envelope_xdr","freighterConfig","Freighter","window","freighterApi","isConnected","requestAccess","signedTxXdr","lobstrConfig","Lobstr","getPublicKey","rabetConfig","Rabet","rabet","sign","PUBLIC","signedXdr","xBullConfig","Xbull","xBullSDK","bridge","xBullWalletConnect","closeConnections","walletsConfig","Connecting","setError","mappedWallets","setMappedWallets","matchedWallet","setMatchedWallet","hasConnected","userWallet","wallets","Promise","all","map","getMappedWallets","fetchWallets","length","foundWallet","handleConnect","handleMessage","event","origin","data","Function","message","removeEventListener","addEventListener","initializeRabetMobile","BluxLogo","IconContainer","ButtonWithIcon","props","ButtonWithIconAndArrow","OnBoarding","showAllWallets","setShowAllWallets","availableWallets","setAvailableWallets","hiddenWallets","setHiddenWallets","detectWallet","available","filter","visibleWallets","config","appLogo","src","alt","appName","key","href","MODAL_HEIGHTS","PROFILE","CONNECTING","CHOOSE_WALLET","MODAL_CONFIG","googleFonts","Manrope","Inter","Roboto","ConnectModal","modalState","handleGoBack","showBackButton","showCloseButton","closeModal","setModalState","view","getInitialHeight","show","useConnectModal","selectedFont","encodedFont","link","rel","removeChild","useGoogleFonts","renderContent","createContext","theme","cover","BluxProvider","ready","Provider","useBlux","isReady"],"mappings":"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","x_google_ignoreList":[0]}
@@ -14,7 +14,9 @@ export declare enum WalletNetwork {
14
14
  }
15
15
  export interface IProviderConfig {
16
16
  appName: string;
17
+ appLogo?: string;
17
18
  networkPassphrase: string;
19
+ network: 'mainnet' | 'testnet' | 'futurenet' | 'sandbox' | 'standalone';
18
20
  }
19
21
  export interface WalletInfo {
20
22
  name: SupportedWallets | null;
@@ -27,7 +29,7 @@ export interface ContextState {
27
29
  value: ContextValues;
28
30
  setValue: React.Dispatch<React.SetStateAction<ContextValues>>;
29
31
  }
30
- export type SupportedFonts = 'Manrope' | 'Inter' | 'JetBrains Mono' | 'PP Editorial Sans';
32
+ export type SupportedFonts = 'Manrope' | 'Inter' | 'JetBrains Mono' | 'Roboto';
31
33
  export type CornerRadius = 'none' | 'full' | 'sm' | 'md' | 'lg';
32
34
  export interface IAppearance {
33
35
  theme: 'light' | 'dark';
@@ -68,10 +70,6 @@ export interface ConnectResult {
68
70
  export interface SignResult {
69
71
  signedXdr: string;
70
72
  }
71
- export declare enum networksEnum {
72
- PUBLIC = "mainnet",
73
- TESTNET = "testnet"
74
- }
75
73
  export interface WalletActions {
76
74
  name: SupportedWallets;
77
75
  website: string;
@@ -0,0 +1,2 @@
1
+ import { WalletNetwork } from '../types';
2
+ export declare const getNetworkByPassphrase: (passphrase: string) => WalletNetwork;
@@ -0,0 +1 @@
1
+ export declare const getNetworkPassphrase: (network: string) => string;
@@ -1,4 +1,6 @@
1
- export declare const mappedWallets: {
2
- wallet: import("../types").WalletActions;
1
+ import { WalletActions } from '../types';
2
+ export type MappedWallet = {
3
+ wallet: WalletActions;
3
4
  isAvailable: boolean;
4
- }[];
5
+ };
6
+ export declare const getMappedWallets: () => Promise<MappedWallet[]>;
package/package.json CHANGED
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "name": "@bluxcc/react",
3
- "author": "Blux",
4
- "version": "0.1.0",
3
+ "author": "Blux team",
4
+ "version": "0.1.1",
5
5
  "homepage": "https://blux.cc",
6
6
  "description": "Connecting to the Stellar Ecosystem and Beyond",
7
- "publishConfig": {
8
- "access": "public"
9
- },
10
7
  "repository": {
11
8
  "type": "git",
12
- "url": "git+https://github.com/bluxcc"
9
+ "url": "git+https://github.com/bluxcc/blux"
13
10
  },
14
11
  "type": "module",
15
12
  "main": "dist/index.esm.js",
@@ -23,7 +20,7 @@
23
20
  }
24
21
  },
25
22
  "engines": {
26
- "node": ">=16.0.0"
23
+ "node": ">=14.0.0"
27
24
  },
28
25
  "files": [
29
26
  "dist"
@@ -39,8 +36,8 @@
39
36
  "@creit.tech/xbull-wallet-connect": "^0.3.0",
40
37
  "@lobstrco/signer-extension-api": "^1.0.0-beta.0",
41
38
  "@stellar/freighter-api": "^3.0.0",
42
- "react": "^19.0.0",
43
- "react-dom": "^19.0.0"
39
+ "react": ">=17.0.0",
40
+ "react-dom": ">=17.0.0"
44
41
  },
45
42
  "devDependencies": {
46
43
  "@eslint/js": "^9.17.0",