diff --git a/package-lock.json b/package-lock.json
index 64e836b722..9fa72a9786 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,9 +13,9 @@
"@emotion/styled": "^11.14.1",
"@kyper/hooks": "^1.3.0",
"@kyper/icon": "^1.22.0",
- "@kyper/tokenprovider": "^4.4.0",
"@mui/icons-material": "^7.3.9",
"@mui/material": "^7.3.9",
+ "@mxenabled/design-tokens": "^1.0.3",
"@mxenabled/mxui": "^2.10.0",
"@reduxjs/toolkit": "^2.2.7",
"@types/node": "^22.1.0",
@@ -1631,18 +1631,6 @@
"react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
- "node_modules/@kyper/tokenprovider": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@kyper/tokenprovider/-/tokenprovider-4.4.0.tgz",
- "integrity": "sha512-zHeANyaflgm21Hr8BJPgbhp9jfHFCTibpJC5/nz7B1EoM1ML4WcvBmI2RI47qiz7FaFvdD5A5jm/co71EMAEiA==",
- "license": "MIT",
- "peerDependencies": {
- "@mxenabled/design-tokens": "^1.0.0",
- "prop-types": "^15.7.2",
- "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
- }
- },
"node_modules/@microsoft/api-extractor": {
"version": "7.58.0",
"resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.58.0.tgz",
@@ -2592,6 +2580,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@mxenabled/design-tokens/-/design-tokens-1.0.3.tgz",
"integrity": "sha512-8c75eOjzU7XbApGve0Msodvi6culN93orLRlS2esLhkNMt7WE6JjxWLEX/BT7kU1qseK4hlky4VryocIKMLHbg==",
+ "license": "ISC",
"engines": {
"node": ">=12.13.1",
"npm": ">=6.14.0"
diff --git a/package.json b/package.json
index 8dc967ef43..1d36c30359 100644
--- a/package.json
+++ b/package.json
@@ -46,9 +46,9 @@
"@emotion/styled": "^11.14.1",
"@kyper/hooks": "^1.3.0",
"@kyper/icon": "^1.22.0",
- "@kyper/tokenprovider": "^4.4.0",
"@mui/icons-material": "^7.3.9",
"@mui/material": "^7.3.9",
+ "@mxenabled/design-tokens": "^1.0.3",
"@mxenabled/mxui": "^2.10.0",
"@reduxjs/toolkit": "^2.2.7",
"@types/node": "^22.1.0",
diff --git a/src/Connect.tsx b/src/Connect.tsx
index 267e07bff1..c8da3b8ace 100644
--- a/src/Connect.tsx
+++ b/src/Connect.tsx
@@ -6,7 +6,7 @@ import _isNil from 'lodash/isNil'
import _toLower from 'lodash/toLower'
import { Message, sha256 } from 'js-sha256'
// import 'posthog-js/dist/recorder-v2' // Added for security requirements to use PostHog Session Recording
-import { TokenContext } from '@kyper/tokenprovider'
+import { TokenContext } from 'src/context/LegacyTokenProvider'
import { usePrevious } from '@kyper/hooks'
import * as connectActions from 'src/redux/actions/Connect'
diff --git a/src/ConnectedTokenProvider.tsx b/src/ConnectedTokenProvider.tsx
index 66b75a6d5c..8673f3e022 100644
--- a/src/ConnectedTokenProvider.tsx
+++ b/src/ConnectedTokenProvider.tsx
@@ -4,7 +4,7 @@ import { useSelector } from 'react-redux'
import { ThemeProvider } from '@mui/material'
import { createMXTheme } from '@mxenabled/mxui'
-import { TokenProvider, THEMES } from '@kyper/tokenprovider'
+import { LegacyTokenProvider, THEMES } from 'src/context/LegacyTokenProvider'
import { getPrimarySeedColor } from 'src/redux/selectors/ClientColorScheme'
@@ -52,17 +52,17 @@ export const ConnectedTokenProvider = ({ children }: Props): React.ReactNode =>
Container: mxTheme.palette.background.paper,
},
}),
- // TokenProvider keys a useEffect off this object's identity, so it has to
+ // LegacyTokenProvider keys a useEffect off this object's identity, so it has to
// be stable across renders.
[isDarkModeEnabled, mxTheme.palette.primary, mxTheme.palette.background],
)
return (
-
{children}
-
+
)
}
diff --git a/src/components/ActionTile.js b/src/components/ActionTile.js
index 3dcea02efc..ccb0361bda 100644
--- a/src/components/ActionTile.js
+++ b/src/components/ActionTile.js
@@ -1,7 +1,7 @@
import React from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text, Icon } from '@mxenabled/mxui'
import { Button } from '@mui/material'
diff --git a/src/components/ActionableUtilityRow.tsx b/src/components/ActionableUtilityRow.tsx
index f7cf77dac5..bca4b4b60e 100644
--- a/src/components/ActionableUtilityRow.tsx
+++ b/src/components/ActionableUtilityRow.tsx
@@ -2,7 +2,7 @@
import React from 'react'
import { Text } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Button } from '@mui/material'
interface ActionableUtilityRowProps {
diff --git a/src/components/ClientLogo.js b/src/components/ClientLogo.js
index 045ac2af80..c3032ceeb9 100644
--- a/src/components/ClientLogo.js
+++ b/src/components/ClientLogo.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import { useSelector } from 'react-redux'
import { css } from '@mxenabled/cssinjs'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { selectColorScheme } from 'src/redux/reducers/configSlice'
import { COLOR_SCHEME } from 'src/const/Connect'
diff --git a/src/components/ConnectInstitutionHeader.js b/src/components/ConnectInstitutionHeader.js
index 630351252d..ed3e1a2eeb 100644
--- a/src/components/ConnectInstitutionHeader.js
+++ b/src/components/ConnectInstitutionHeader.js
@@ -2,7 +2,7 @@ import React from 'react'
import PropTypes from 'prop-types'
import { useSelector } from 'react-redux'
import { InstitutionLogo } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { selectColorScheme } from 'src/redux/reducers/configSlice'
import { COLOR_SCHEME } from 'src/const/Connect'
diff --git a/src/components/ConnectLogoHeader.tsx b/src/components/ConnectLogoHeader.tsx
index d9de6d6d71..fc5fdb261c 100644
--- a/src/components/ConnectLogoHeader.tsx
+++ b/src/components/ConnectLogoHeader.tsx
@@ -2,7 +2,7 @@
import React from 'react'
import { useSelector } from 'react-redux'
import { InstitutionLogo } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { selectColorScheme } from 'src/redux/reducers/configSlice'
diff --git a/src/components/Container.tsx b/src/components/Container.tsx
index b44d8766a7..65849a5d5a 100644
--- a/src/components/Container.tsx
+++ b/src/components/Container.tsx
@@ -1,6 +1,6 @@
import React from 'react'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { STEPS } from 'src/const/Connect'
interface ContainerProps {
diff --git a/src/components/DataCluster.js b/src/components/DataCluster.js
index e25f268fe1..20717aa886 100644
--- a/src/components/DataCluster.js
+++ b/src/components/DataCluster.js
@@ -1,6 +1,6 @@
import React, { Fragment } from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
export const DataCluster = (props) => {
diff --git a/src/components/DetailReviewItem.js b/src/components/DetailReviewItem.js
index f94f72e1d2..8142b96e06 100644
--- a/src/components/DetailReviewItem.js
+++ b/src/components/DetailReviewItem.js
@@ -1,7 +1,7 @@
import React from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Icon, Text } from '@mxenabled/mxui'
import { Text as ProtectedText } from 'src/privacy/components'
import { IconButton } from '@mui/material'
diff --git a/src/components/FindAccountInfo.js b/src/components/FindAccountInfo.js
index 6990fe2ec9..c2af926fb2 100644
--- a/src/components/FindAccountInfo.js
+++ b/src/components/FindAccountInfo.js
@@ -1,7 +1,7 @@
import React, { useRef } from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { Button } from '@mui/material'
diff --git a/src/components/InstitutionBlock.js b/src/components/InstitutionBlock.js
index b5fc939984..2492497326 100644
--- a/src/components/InstitutionBlock.js
+++ b/src/components/InstitutionBlock.js
@@ -2,7 +2,7 @@ import React from 'react'
import PropTypes from 'prop-types'
import { __ } from 'src/utilities/Intl'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { InstitutionLogo } from '@mxenabled/mxui'
import { formatUrl } from 'src/utilities/FormatUrl'
diff --git a/src/components/InstitutionGridTile.js b/src/components/InstitutionGridTile.js
index 31b8889b4d..6c2dae5977 100644
--- a/src/components/InstitutionGridTile.js
+++ b/src/components/InstitutionGridTile.js
@@ -5,7 +5,7 @@ import { css } from '@mxenabled/cssinjs'
import { __ } from 'src/utilities/Intl'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { InstitutionLogo } from '@mxenabled/mxui'
import { Button, Stack } from '@mui/material'
diff --git a/src/components/InstitutionTile.js b/src/components/InstitutionTile.js
index f9319affd1..d940ffbc47 100644
--- a/src/components/InstitutionTile.js
+++ b/src/components/InstitutionTile.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import { __ } from 'src/utilities/Intl'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Button } from '@mui/material'
import { Icon, InstitutionLogo, Tag } from '@mxenabled/mxui'
diff --git a/src/components/InstructionList.js b/src/components/InstructionList.js
index 7b0d0bad81..44ffb5b2cc 100644
--- a/src/components/InstructionList.js
+++ b/src/components/InstructionList.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import { css } from '@mxenabled/cssinjs'
import DOMPurify from 'dompurify'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { goToUrlLink } from 'src/utilities/global'
diff --git a/src/components/RenderConnectStep.js b/src/components/RenderConnectStep.js
index b67e9042a6..14a81fd81e 100644
--- a/src/components/RenderConnectStep.js
+++ b/src/components/RenderConnectStep.js
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types'
import _isEmpty from 'lodash/isEmpty'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import * as connectActions from 'src/redux/actions/Connect'
diff --git a/src/components/StickyComponentContainer.tsx b/src/components/StickyComponentContainer.tsx
index 0f501825ee..8183f03cf4 100644
--- a/src/components/StickyComponentContainer.tsx
+++ b/src/components/StickyComponentContainer.tsx
@@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import React from 'react'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
interface StickyComponentContainerProps {
children?: React.ReactNode
diff --git a/src/components/StyledAccountTypeIcon.tsx b/src/components/StyledAccountTypeIcon.tsx
index fb559268b0..71c2e068c0 100644
--- a/src/components/StyledAccountTypeIcon.tsx
+++ b/src/components/StyledAccountTypeIcon.tsx
@@ -3,7 +3,7 @@ import React from 'react'
import { Icon } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { AccountTypes } from 'src/views/manualAccount/constants'
diff --git a/src/components/ViewTitle.js b/src/components/ViewTitle.js
index 52f9efa63c..4e780c9dce 100644
--- a/src/components/ViewTitle.js
+++ b/src/components/ViewTitle.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import { Stack } from '@mui/material'
import { Icon, Text } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { InfoFilled } from '@kyper/icon/InfoFilled'
import { ReadableStatuses } from 'src/const/Statuses'
diff --git a/src/components/support/GeneralSupport.js b/src/components/support/GeneralSupport.js
index f38f5a516f..97bcfd7558 100644
--- a/src/components/support/GeneralSupport.js
+++ b/src/components/support/GeneralSupport.js
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react'
import PropTypes from 'prop-types'
import _isEmpty from 'lodash/isEmpty'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { TextField } from 'src/privacy/input'
import { Button } from '@mui/material'
diff --git a/src/components/support/Support.js b/src/components/support/Support.js
index 93e8813af5..ffb07e86f8 100644
--- a/src/components/support/Support.js
+++ b/src/components/support/Support.js
@@ -1,7 +1,7 @@
import React, { useRef, useState, useImperativeHandle } from 'react'
import PropTypes from 'prop-types'
import { useSelector } from 'react-redux'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { SupportMenu } from 'src/components/support/SupportMenu'
import { GeneralSupport } from 'src/components/support/GeneralSupport'
diff --git a/src/components/support/SupportMenu.js b/src/components/support/SupportMenu.js
index 69be8d223f..1951eeaec5 100644
--- a/src/components/support/SupportMenu.js
+++ b/src/components/support/SupportMenu.js
@@ -1,7 +1,7 @@
import React from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Icon, Text } from '@mxenabled/mxui'
import { __ } from 'src/utilities/Intl'
diff --git a/src/components/support/SupportSuccess.js b/src/components/support/SupportSuccess.js
index f6316aa0bc..30dd5c6023 100644
--- a/src/components/support/SupportSuccess.js
+++ b/src/components/support/SupportSuccess.js
@@ -1,7 +1,7 @@
import React, { useEffect } from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { Button } from '@mui/material'
diff --git a/src/context/LegacyTokenProvider.test.tsx b/src/context/LegacyTokenProvider.test.tsx
new file mode 100644
index 0000000000..f06f840cc1
--- /dev/null
+++ b/src/context/LegacyTokenProvider.test.tsx
@@ -0,0 +1,57 @@
+import React from 'react'
+import { describe, it, expect } from 'vitest'
+import { render, screen, waitFor } from '@testing-library/react'
+import { light, dark } from '@mxenabled/design-tokens'
+import { LegacyTokenProvider, THEMES, useTokens } from 'src/context/LegacyTokenProvider'
+
+const TokenReader = () => {
+ const tokens = useTokens()
+
+ return (
+
+ {tokens.BackgroundColor.Body}
+ {tokens.Color.Brand300}
+
+ )
+}
+
+describe('LegacyTokenProvider', () => {
+ it('returns the light tokens by default without a provider', () => {
+ render()
+
+ expect(screen.getByTestId('body')).toHaveTextContent(light.BackgroundColor.Body)
+ })
+
+ it('provides the light tokens by default', () => {
+ render(
+
+
+ ,
+ )
+
+ expect(screen.getByTestId('body')).toHaveTextContent(light.BackgroundColor.Body)
+ })
+
+ it('provides the dark tokens when the dark theme is used', () => {
+ render(
+
+
+ ,
+ )
+
+ expect(screen.getByTestId('body')).toHaveTextContent(dark.BackgroundColor.Body)
+ })
+
+ it('applies token overrides', async () => {
+ const tokenOverrides = { Color: { Brand300: '#123456' }, BackgroundColor: { Body: '#abcdef' } }
+
+ render(
+
+
+ ,
+ )
+
+ await waitFor(() => expect(screen.getByTestId('brand300')).toHaveTextContent('#123456'))
+ expect(screen.getByTestId('body')).toHaveTextContent('#abcdef')
+ })
+})
diff --git a/src/context/LegacyTokenProvider.tsx b/src/context/LegacyTokenProvider.tsx
new file mode 100644
index 0000000000..da9ac053e9
--- /dev/null
+++ b/src/context/LegacyTokenProvider.tsx
@@ -0,0 +1,63 @@
+// Local copy of @kyper/tokenprovider (v4.4.0) so we no longer depend on the Kyper package.
+// Source: https://gitlab.com/mxtechnologies/mx/kyper-react/-/blob/master/packages/tokenprovider/lib/TokenProvider.js
+import React, { useEffect, useState } from 'react'
+import { light, dark, buildTheme } from '@mxenabled/design-tokens'
+import type { TokenTypes } from '@mxenabled/design-tokens'
+
+export const targets = {
+ REACT: 'react',
+ REACT_NATIVE: 'react_native',
+ NATIVE: 'native',
+} as const
+
+export const THEMES = {
+ LIGHT: 'light',
+ DARK: 'dark',
+} as const
+
+type Target = (typeof targets)[keyof typeof targets]
+type Theme = (typeof THEMES)[keyof typeof THEMES]
+
+const defaultTokenOverrides = {}
+
+export const TokenContext = React.createContext(light)
+export const ReactNativeTokenContext = React.createContext(
+ buildTheme(THEMES.LIGHT, targets.REACT_NATIVE),
+)
+
+export const useTokens = (target: Target = targets.REACT, tokenOverrides = {}): TokenTypes => {
+ const contextTarget = target === targets.REACT ? TokenContext : ReactNativeTokenContext
+ const context = React.useContext(contextTarget)
+
+ return context ? context : buildTheme(THEMES.LIGHT, target, { ...tokenOverrides })
+}
+
+interface LegacyTokenProviderProps {
+ theme?: Theme | string
+ target?: typeof targets.REACT | typeof targets.REACT_NATIVE
+ tokenOverrides?: object
+ children?: React.ReactNode
+}
+
+export const LegacyTokenProvider = ({
+ theme = THEMES.LIGHT,
+ target = targets.REACT,
+ tokenOverrides = defaultTokenOverrides,
+ children,
+}: LegacyTokenProviderProps) => {
+ const [tokens, setTokens] = useState(theme === THEMES.LIGHT ? light : dark)
+
+ useEffect(() => {
+ const userSpecificTokens = buildTheme(theme, target, { ...tokenOverrides })
+
+ setTokens(userSpecificTokens)
+ }, [theme, target, tokenOverrides])
+
+ if (target === targets.REACT) {
+ return {children}
+ }
+
+ return (
+ {children}
+ )
+}
diff --git a/src/views/connected/Connected.tsx b/src/views/connected/Connected.tsx
index 5a0861881a..961d6df1b5 100644
--- a/src/views/connected/Connected.tsx
+++ b/src/views/connected/Connected.tsx
@@ -6,7 +6,7 @@ import { fadeOut } from 'src/utilities/Animation'
import { Button } from '@mui/material'
import { Text } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { SlideDown } from 'src/components/SlideDown'
import { getDelay } from 'src/utilities/getDelay'
diff --git a/src/views/connecting/Connecting.js b/src/views/connecting/Connecting.js
index 8263c7a973..4010bf1058 100644
--- a/src/views/connecting/Connecting.js
+++ b/src/views/connecting/Connecting.js
@@ -5,7 +5,7 @@ import { mergeMap, catchError, map, retry } from 'rxjs/operators'
import { useSelector, useDispatch } from 'react-redux'
import { Text } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { SlideDown } from 'src/components/SlideDown'
import { getDelay } from 'src/utilities/getDelay'
diff --git a/src/views/connecting/progress/ProgressCheckMark.js b/src/views/connecting/progress/ProgressCheckMark.js
index 3d667041eb..1f7a393c07 100644
--- a/src/views/connecting/progress/ProgressCheckMark.js
+++ b/src/views/connecting/progress/ProgressCheckMark.js
@@ -1,6 +1,6 @@
import React from 'react'
import { Icon } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
export const ProgressCheckMark = () => {
const tokens = useTokens()
diff --git a/src/views/connecting/progress/ProgressCircle.js b/src/views/connecting/progress/ProgressCircle.js
index 45ecfdacd5..ebac7e8a90 100644
--- a/src/views/connecting/progress/ProgressCircle.js
+++ b/src/views/connecting/progress/ProgressCircle.js
@@ -1,6 +1,6 @@
import React from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import CircularProgress from '@mui/material/CircularProgress'
import { JOB_STATUSES } from 'src/const/consts'
diff --git a/src/views/connecting/progress/ProgressLine.tsx b/src/views/connecting/progress/ProgressLine.tsx
index 0589e29231..483c316ea0 100644
--- a/src/views/connecting/progress/ProgressLine.tsx
+++ b/src/views/connecting/progress/ProgressLine.tsx
@@ -1,5 +1,5 @@
import React from 'react'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
export const ProgressLine = ({
isActive,
diff --git a/src/views/connecting/progress/ProgressLogo.tsx b/src/views/connecting/progress/ProgressLogo.tsx
index 16eeb5dd0e..79b938c1fe 100644
--- a/src/views/connecting/progress/ProgressLogo.tsx
+++ b/src/views/connecting/progress/ProgressLogo.tsx
@@ -1,5 +1,5 @@
import React, { ReactNode } from 'react'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
export const ProgressLogo = ({ children }: { children: ReactNode }) => {
const tokens = useTokens()
diff --git a/src/views/connecting/progress/ProgressMessage.js b/src/views/connecting/progress/ProgressMessage.js
index 1619212a84..05714dfcf6 100644
--- a/src/views/connecting/progress/ProgressMessage.js
+++ b/src/views/connecting/progress/ProgressMessage.js
@@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react'
import PropTypes from 'prop-types'
import { from, of } from 'rxjs'
import { delay, concatMap, repeat } from 'rxjs/operators'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { JOB_TYPES } from 'src/const/consts'
diff --git a/src/views/consent/DynamicDisclosure.tsx b/src/views/consent/DynamicDisclosure.tsx
index 6201207170..501e461115 100644
--- a/src/views/consent/DynamicDisclosure.tsx
+++ b/src/views/consent/DynamicDisclosure.tsx
@@ -8,7 +8,7 @@ import { __, getLocale, setLocale } from 'src/utilities/Intl'
import { Box, Button, IconButton, Link, Stack } from '@mui/material'
import { Icon } from '@mxenabled/mxui'
import { Text } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { SlideDown } from 'src/components/SlideDown'
import { getDelay } from 'src/utilities/getDelay'
diff --git a/src/views/deleteMemberSuccess/DeleteMemberSuccess.js b/src/views/deleteMemberSuccess/DeleteMemberSuccess.js
index 81f5418161..258512a4c7 100644
--- a/src/views/deleteMemberSuccess/DeleteMemberSuccess.js
+++ b/src/views/deleteMemberSuccess/DeleteMemberSuccess.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import { __ } from 'src/utilities/Intl'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Button } from '@mui/material'
import { SlideDown } from 'src/components/SlideDown'
diff --git a/src/views/disclosure/DataAvailable.js b/src/views/disclosure/DataAvailable.js
index e46c285b08..619b9c5ebd 100644
--- a/src/views/disclosure/DataAvailable.js
+++ b/src/views/disclosure/DataAvailable.js
@@ -1,7 +1,7 @@
import React, { Fragment } from 'react'
import { useSelector } from 'react-redux'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { PageviewInfo } from 'src/const/Analytics'
diff --git a/src/views/loginError/ImpededMemberError.js b/src/views/loginError/ImpededMemberError.js
index a1e1dd2d96..34a3cf4dd9 100644
--- a/src/views/loginError/ImpededMemberError.js
+++ b/src/views/loginError/ImpededMemberError.js
@@ -6,7 +6,7 @@ import PropTypes from 'prop-types'
import { getInstitutionLoginUrl } from 'src/utilities/Institution'
import { goToUrlLink } from 'src/utilities/global'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Icon, Text } from '@mxenabled/mxui'
import { Link } from '@mui/material'
diff --git a/src/views/loginError/PrimaryActions.js b/src/views/loginError/PrimaryActions.js
index 4a21718539..23127dad3b 100644
--- a/src/views/loginError/PrimaryActions.js
+++ b/src/views/loginError/PrimaryActions.js
@@ -3,7 +3,7 @@ import React from 'react'
import { __ } from 'src/utilities/Intl'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Button } from '@mui/material'
import { REFRESH, UPDATE_CREDENTIALS, OK } from 'src/views/loginError/consts'
diff --git a/src/views/loginError/SecondaryActions.js b/src/views/loginError/SecondaryActions.js
index 285e910a93..4a73ca5457 100644
--- a/src/views/loginError/SecondaryActions.js
+++ b/src/views/loginError/SecondaryActions.js
@@ -8,7 +8,7 @@ import { goToUrlLink } from 'src/utilities/global'
import { getInstitutionLoginUrl } from 'src/utilities/Institution'
import useAnalyticsEvent from 'src/hooks/useAnalyticsEvent'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Button } from '@mui/material'
import { AnalyticEvents } from 'src/const/Analytics'
diff --git a/src/views/manualAccount/ManualAccountSuccess.js b/src/views/manualAccount/ManualAccountSuccess.js
index ca22fff71a..7a568f5b49 100644
--- a/src/views/manualAccount/ManualAccountSuccess.js
+++ b/src/views/manualAccount/ManualAccountSuccess.js
@@ -2,7 +2,7 @@ import React, { useEffect, useRef, useContext } from 'react'
import PropTypes from 'prop-types'
import { __ } from 'src/utilities/Intl'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Button } from '@mui/material'
import { Text } from '@mxenabled/mxui'
diff --git a/src/views/mfa/DefaultMFA.js b/src/views/mfa/DefaultMFA.js
index 7ddd4a3601..537fe9b7ca 100644
--- a/src/views/mfa/DefaultMFA.js
+++ b/src/views/mfa/DefaultMFA.js
@@ -2,7 +2,7 @@ import React, { useCallback, useState } from 'react'
import PropTypes from 'prop-types'
import { sha256 } from 'js-sha256'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { TextField } from 'src/privacy/input'
import { Button, Typography } from '@mui/material'
diff --git a/src/views/mfa/MFAForm.js b/src/views/mfa/MFAForm.js
index 31e0a88128..7518e9a118 100644
--- a/src/views/mfa/MFAForm.js
+++ b/src/views/mfa/MFAForm.js
@@ -1,7 +1,7 @@
import _get from 'lodash/get'
import PropTypes from 'prop-types'
import React from 'react'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { sha256 } from 'js-sha256'
import { ViewTitle } from 'src/components/ViewTitle'
diff --git a/src/views/mfa/MFAImages.js b/src/views/mfa/MFAImages.js
index 1c77ac4f96..7dffa458d4 100644
--- a/src/views/mfa/MFAImages.js
+++ b/src/views/mfa/MFAImages.js
@@ -10,7 +10,7 @@ import { focusElement } from 'src/utilities/Accessibility'
import useAnalyticsPath from 'src/hooks/useAnalyticsPath'
import useAnalyticsEvent from 'src/hooks/useAnalyticsEvent'
import { PageviewInfo, AnalyticEvents } from 'src/const/Analytics'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Icon, Text } from '@mxenabled/mxui'
import { Button } from '@mui/material'
diff --git a/src/views/mfa/MFAOptions.js b/src/views/mfa/MFAOptions.js
index 33f1ea268c..06bab2e3ae 100644
--- a/src/views/mfa/MFAOptions.js
+++ b/src/views/mfa/MFAOptions.js
@@ -3,7 +3,7 @@ import _isEmpty from 'lodash/isEmpty'
import PropTypes from 'prop-types'
import { sha256 } from 'js-sha256'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Icon, Text } from '@mxenabled/mxui'
import { SelectionBox } from 'src/privacy/input'
import { Button, FormLabel } from '@mui/material'
diff --git a/src/views/mfa/MFAStep.js b/src/views/mfa/MFAStep.js
index dd416e1abd..ad4846a89f 100644
--- a/src/views/mfa/MFAStep.js
+++ b/src/views/mfa/MFAStep.js
@@ -6,7 +6,7 @@ import { catchError, map } from 'rxjs/operators'
import PropTypes from 'prop-types'
import Alert from '@mui/material/Alert'
import AlertTitle from '@mui/material/AlertTitle'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Link, Button } from '@mui/material'
import { InstitutionBlock } from 'src/components/InstitutionBlock'
diff --git a/src/views/microdeposits/ComeBack.js b/src/views/microdeposits/ComeBack.js
index 93800870e3..378edff798 100644
--- a/src/views/microdeposits/ComeBack.js
+++ b/src/views/microdeposits/ComeBack.js
@@ -1,7 +1,7 @@
import React, { useContext, useRef } from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { Text as ProtectedText } from 'src/privacy/components'
import { Button } from '@mui/material'
diff --git a/src/views/microdeposits/ConfirmDetails.js b/src/views/microdeposits/ConfirmDetails.js
index ec5e2a3522..03ee9ddbd1 100644
--- a/src/views/microdeposits/ConfirmDetails.js
+++ b/src/views/microdeposits/ConfirmDetails.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import { defer } from 'rxjs'
import { useSelector } from 'react-redux'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { Button } from '@mui/material'
diff --git a/src/views/microdeposits/HowItWorks.js b/src/views/microdeposits/HowItWorks.js
index fa1acee19f..ece2614aa2 100644
--- a/src/views/microdeposits/HowItWorks.js
+++ b/src/views/microdeposits/HowItWorks.js
@@ -1,7 +1,7 @@
import React, { useRef } from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { Button } from '@mui/material'
diff --git a/src/views/microdeposits/MicrodepositErrors.js b/src/views/microdeposits/MicrodepositErrors.js
index 21130dd05f..50c3ce67a1 100644
--- a/src/views/microdeposits/MicrodepositErrors.js
+++ b/src/views/microdeposits/MicrodepositErrors.js
@@ -2,7 +2,7 @@ import React, { useContext, useRef } from 'react'
import PropTypes from 'prop-types'
import { css } from '@mxenabled/cssinjs'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { Text as ProtectedText } from 'src/privacy/components'
import Alert from '@mui/material/Alert'
diff --git a/src/views/microdeposits/PersonalInfoForm.js b/src/views/microdeposits/PersonalInfoForm.js
index 7e34801b9a..e92556e944 100644
--- a/src/views/microdeposits/PersonalInfoForm.js
+++ b/src/views/microdeposits/PersonalInfoForm.js
@@ -1,7 +1,7 @@
import React, { useEffect, useRef, useState } from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { TextField } from 'src/privacy/input'
import { Button } from '@mui/material'
diff --git a/src/views/microdeposits/RoutingNumber.js b/src/views/microdeposits/RoutingNumber.js
index ba55549665..f285ca574e 100644
--- a/src/views/microdeposits/RoutingNumber.js
+++ b/src/views/microdeposits/RoutingNumber.js
@@ -4,7 +4,7 @@ import { useSelector } from 'react-redux'
import { defer } from 'rxjs'
import _isEmpty from 'lodash/isEmpty'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Icon, Text } from '@mxenabled/mxui'
import { TextField } from 'src/privacy/input'
import { Button } from '@mui/material'
diff --git a/src/views/microdeposits/Verified.js b/src/views/microdeposits/Verified.js
index 8c9abc2f4e..916686615c 100644
--- a/src/views/microdeposits/Verified.js
+++ b/src/views/microdeposits/Verified.js
@@ -2,7 +2,7 @@ import React, { useContext, useEffect, useRef } from 'react'
import PropTypes from 'prop-types'
import { useSelector } from 'react-redux'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { Button } from '@mui/material'
diff --git a/src/views/microdeposits/Verifying.js b/src/views/microdeposits/Verifying.js
index cf00652644..42577a4021 100644
--- a/src/views/microdeposits/Verifying.js
+++ b/src/views/microdeposits/Verifying.js
@@ -2,7 +2,7 @@ import React, { useEffect, useRef } from 'react'
import PropTypes from 'prop-types'
import { defer, interval } from 'rxjs'
import { filter, mergeMap, pluck, scan, switchMap, take } from 'rxjs/operators'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { __ } from 'src/utilities/Intl'
diff --git a/src/views/oauth/OAuthDefault.js b/src/views/oauth/OAuthDefault.js
index cab3be0030..91c36d5be3 100644
--- a/src/views/oauth/OAuthDefault.js
+++ b/src/views/oauth/OAuthDefault.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import { useSelector } from 'react-redux'
import { sha256 } from 'js-sha256'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Export } from '@kyper/icon/Export'
import { Button } from '@mui/material'
diff --git a/src/views/oauth/OAuthError.js b/src/views/oauth/OAuthError.js
index 8af5b887b9..00270aab13 100644
--- a/src/views/oauth/OAuthError.js
+++ b/src/views/oauth/OAuthError.js
@@ -3,7 +3,7 @@ import { useSelector } from 'react-redux'
import PropTypes from 'prop-types'
import { Text } from '@mxenabled/mxui'
import Alert from '@mui/material/Alert'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Button } from '@mui/material'
import { __ } from 'src/utilities/Intl'
diff --git a/src/views/oauth/OAuthStartError.js b/src/views/oauth/OAuthStartError.js
index e176612859..8259cda624 100644
--- a/src/views/oauth/OAuthStartError.js
+++ b/src/views/oauth/OAuthStartError.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import { Button } from '@mui/material'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { SlideDown } from 'src/components/SlideDown'
import { InstitutionBlock } from 'src/components/InstitutionBlock'
diff --git a/src/views/oauth/WaitingForOAuth.js b/src/views/oauth/WaitingForOAuth.js
index 401a73ca39..2588c20f9b 100644
--- a/src/views/oauth/WaitingForOAuth.js
+++ b/src/views/oauth/WaitingForOAuth.js
@@ -5,7 +5,7 @@ import { of, defer } from 'rxjs'
import { map, mergeMap, first, filter, catchError } from 'rxjs/operators'
import { Text } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Button } from '@mui/material'
import { SlideDown } from 'src/components/SlideDown'
diff --git a/src/views/search/Search.js b/src/views/search/Search.js
index 64b0591c39..23e1a5f0ab 100644
--- a/src/views/search/Search.js
+++ b/src/views/search/Search.js
@@ -13,7 +13,7 @@ import _unionBy from 'lodash/unionBy'
import _debounce from 'lodash/debounce'
import _find from 'lodash/find'
import { Icon, Text } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import InputAdornment from '@mui/material/InputAdornment'
import { TextField } from 'src/privacy/input'
import { IconButton, Snackbar } from '@mui/material'
diff --git a/src/views/search/views/PopularInstitutionsList.js b/src/views/search/views/PopularInstitutionsList.js
index 1e313ca54b..06ebb903f4 100644
--- a/src/views/search/views/PopularInstitutionsList.js
+++ b/src/views/search/views/PopularInstitutionsList.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'
import { useDispatch, useSelector } from 'react-redux'
import _pick from 'lodash/pick'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Button } from '@mui/material'
import { selectCurrentMode } from 'src/redux/reducers/configSlice'
diff --git a/src/views/search/views/SearchNoResult.js b/src/views/search/views/SearchNoResult.js
index c02732006f..83b82b096e 100644
--- a/src/views/search/views/SearchNoResult.js
+++ b/src/views/search/views/SearchNoResult.js
@@ -4,7 +4,7 @@ import PropTypes from 'prop-types'
import { Button } from '@mui/material'
import { Text } from '@mxenabled/mxui'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { selectCurrentMode } from 'src/redux/reducers/configSlice'
import { stepToAddManualAccount, stepToMicrodeposits } from 'src/redux/actions/Connect'
diff --git a/src/views/search/views/SearchedInstitutionsList.js b/src/views/search/views/SearchedInstitutionsList.js
index 5497ea1ae3..211d8f48e5 100644
--- a/src/views/search/views/SearchedInstitutionsList.js
+++ b/src/views/search/views/SearchedInstitutionsList.js
@@ -3,7 +3,7 @@ import { useDispatch, useSelector } from 'react-redux'
import PropTypes from 'prop-types'
import _pick from 'lodash/pick'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import { Text } from '@mxenabled/mxui'
import { Button } from '@mui/material'
diff --git a/src/views/verification/VerifyError.js b/src/views/verification/VerifyError.js
index 8dd57984ff..0ba50a770d 100644
--- a/src/views/verification/VerifyError.js
+++ b/src/views/verification/VerifyError.js
@@ -1,7 +1,7 @@
import React from 'react'
import PropTypes from 'prop-types'
-import { useTokens } from '@kyper/tokenprovider'
+import { useTokens } from 'src/context/LegacyTokenProvider'
import Alert from '@mui/material/Alert'
import { Text } from '@mxenabled/mxui'
import { Button } from '@mui/material'
diff --git a/typings/kyper.d.ts b/typings/kyper.d.ts
index 919d4c09db..5fc53d65bd 100644
--- a/typings/kyper.d.ts
+++ b/typings/kyper.d.ts
@@ -1,4 +1,3 @@
-declare module '@kyper/tokenprovider'
declare module '@kyper/textarea'
declare module '@kyper/input'
declare module '@kyper/icon/Accounts'