@lifi/widget 2.0.0-beta.5 → 2.0.0-beta.7

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.
Files changed (82) hide show
  1. package/App.d.ts +3 -2
  2. package/AppDrawer.js +2 -1
  3. package/AppProvider.js +1 -1
  4. package/cjs/App.d.ts +3 -2
  5. package/cjs/AppDrawer.js +2 -1
  6. package/cjs/AppProvider.js +1 -1
  7. package/cjs/components/ChainSelect/useChainSelect.js +6 -0
  8. package/cjs/components/Header/Header.js +2 -2
  9. package/cjs/components/Header/Header.style.js +3 -0
  10. package/cjs/components/Header/NavigationHeader.js +7 -4
  11. package/cjs/components/Header/NavigationTabs.d.ts +1 -0
  12. package/cjs/components/Header/NavigationTabs.js +26 -0
  13. package/cjs/components/Header/NavigationTabs.style.d.ts +101 -0
  14. package/cjs/components/Header/NavigationTabs.style.js +61 -0
  15. package/cjs/components/Header/WalletHeader.d.ts +1 -0
  16. package/cjs/components/Header/WalletHeader.js +15 -8
  17. package/cjs/components/Header/useHeaderActionStore.js +0 -1
  18. package/cjs/components/SelectTokenButton/SelectTokenButton.js +5 -2
  19. package/cjs/config/version.d.ts +1 -1
  20. package/cjs/config/version.js +1 -1
  21. package/cjs/hooks/index.d.ts +2 -1
  22. package/cjs/hooks/index.js +2 -1
  23. package/cjs/hooks/useContentHeight.js +3 -5
  24. package/cjs/hooks/useInitializer.js +0 -1
  25. package/cjs/hooks/useSwapOnly.d.ts +1 -0
  26. package/cjs/hooks/useSwapOnly.js +9 -0
  27. package/cjs/hooks/useSwapRoutes.js +3 -1
  28. package/cjs/i18n/en.json +2 -2
  29. package/cjs/i18n/pt.json +19 -4
  30. package/cjs/i18n/uk.json +20 -5
  31. package/cjs/index.d.ts +1 -1
  32. package/cjs/pages/SelectTokenPage/SelectTokenPage.js +3 -1
  33. package/cjs/providers/SwapFormProvider/FormUpdater.js +3 -0
  34. package/cjs/stores/StoreProvider.d.ts +2 -2
  35. package/cjs/stores/StoreProvider.js +3 -2
  36. package/cjs/stores/routes/RouteExecutionStore.js +0 -1
  37. package/cjs/stores/settings/index.d.ts +1 -0
  38. package/cjs/stores/settings/index.js +1 -0
  39. package/cjs/stores/settings/types.d.ts +11 -0
  40. package/cjs/stores/settings/useSplitSubvariantStore.d.ts +7 -0
  41. package/cjs/stores/settings/useSplitSubvariantStore.js +44 -0
  42. package/cjs/types/widget.d.ts +5 -1
  43. package/cjs/types/widget.js +3 -3
  44. package/components/ChainSelect/useChainSelect.js +7 -1
  45. package/components/Header/Header.js +3 -3
  46. package/components/Header/Header.style.js +3 -0
  47. package/components/Header/NavigationHeader.js +7 -4
  48. package/components/Header/NavigationTabs.d.ts +1 -0
  49. package/components/Header/NavigationTabs.js +22 -0
  50. package/components/Header/NavigationTabs.style.d.ts +101 -0
  51. package/components/Header/NavigationTabs.style.js +58 -0
  52. package/components/Header/WalletHeader.d.ts +1 -0
  53. package/components/Header/WalletHeader.js +12 -6
  54. package/components/Header/useHeaderActionStore.js +0 -1
  55. package/components/SelectTokenButton/SelectTokenButton.js +6 -3
  56. package/config/version.d.ts +1 -1
  57. package/config/version.js +1 -1
  58. package/hooks/index.d.ts +2 -1
  59. package/hooks/index.js +2 -1
  60. package/hooks/useContentHeight.js +4 -6
  61. package/hooks/useInitializer.js +0 -1
  62. package/hooks/useSwapOnly.d.ts +1 -0
  63. package/hooks/useSwapOnly.js +5 -0
  64. package/hooks/useSwapRoutes.js +3 -1
  65. package/i18n/en.json +2 -2
  66. package/i18n/pt.json +19 -4
  67. package/i18n/uk.json +20 -5
  68. package/index.d.ts +1 -1
  69. package/package.json +6 -6
  70. package/pages/SelectTokenPage/SelectTokenPage.js +4 -2
  71. package/providers/SwapFormProvider/FormUpdater.js +3 -0
  72. package/stores/StoreProvider.d.ts +2 -2
  73. package/stores/StoreProvider.js +3 -2
  74. package/stores/routes/RouteExecutionStore.js +0 -1
  75. package/stores/settings/index.d.ts +1 -0
  76. package/stores/settings/index.js +1 -0
  77. package/stores/settings/types.d.ts +11 -0
  78. package/stores/settings/useSplitSubvariantStore.d.ts +7 -0
  79. package/stores/settings/useSplitSubvariantStore.js +37 -0
  80. package/tsconfig.cjs.tsbuildinfo +1 -1
  81. package/types/widget.d.ts +5 -1
  82. package/types/widget.js +3 -3
@@ -3,7 +3,7 @@ import { Box, Container } from '@mui/material';
3
3
  import { useLayoutEffect, useRef, useState } from 'react';
4
4
  import { ChainSelect } from '../../components/ChainSelect';
5
5
  import { TokenList } from '../../components/TokenList';
6
- import { useContentHeight, useNavigateBack, useScrollableOverflowHidden, } from '../../hooks';
6
+ import { useContentHeight, useNavigateBack, useScrollableOverflowHidden, useSwapOnly, } from '../../hooks';
7
7
  import { SearchTokenInput } from './SearchTokenInput';
8
8
  const minTokenListHeight = 360;
9
9
  export const SelectTokenPage = ({ formType }) => {
@@ -12,8 +12,10 @@ export const SelectTokenPage = ({ formType }) => {
12
12
  const headerRef = useRef(null);
13
13
  const contentHeight = useContentHeight();
14
14
  const [tokenListHeight, setTokenListHeight] = useState(0);
15
+ const swapOnly = useSwapOnly();
15
16
  useLayoutEffect(() => {
16
17
  setTokenListHeight(Math.max(contentHeight - (headerRef.current?.offsetHeight ?? 0), minTokenListHeight));
17
18
  }, [contentHeight]);
18
- return (_jsxs(Container, { disableGutters: true, children: [_jsxs(Box, { pt: 1, pb: 2, px: 3, ref: headerRef, children: [_jsx(ChainSelect, { formType: formType }), _jsx(Box, { mt: 2, children: _jsx(SearchTokenInput, {}) })] }), _jsx(TokenList, { height: tokenListHeight, onClick: navigateBack, formType: formType })] }));
19
+ const hideChainSelect = swapOnly && formType === 'to';
20
+ return (_jsxs(Container, { disableGutters: true, children: [_jsxs(Box, { pt: 1, pb: 2, px: 3, ref: headerRef, children: [!hideChainSelect ? _jsx(ChainSelect, { formType: formType }) : null, _jsx(Box, { mt: !hideChainSelect ? 2 : 0, children: _jsx(SearchTokenInput, {}) })] }), _jsx(TokenList, { height: tokenListHeight, onClick: navigateBack, formType: formType })] }));
19
21
  };
@@ -23,6 +23,7 @@ export const FormUpdater = ({ defaultValues }) => {
23
23
  const { isTouched: isToTokenTouched } = getFieldState(SwapFormKey.ToToken);
24
24
  const { isTouched: isFromAmountTouched } = getFieldState(SwapFormKey.FromAmount);
25
25
  if (!fromChain && !isFromChainTouched && !isFromTokenTouched) {
26
+ resetField(SwapFormKey.FromChain, { defaultValue: account.chainId });
26
27
  setValue(SwapFormKey.FromChain, account.chainId);
27
28
  setValue(SwapFormKey.FromToken, '');
28
29
  if (isFromAmountTouched) {
@@ -30,6 +31,7 @@ export const FormUpdater = ({ defaultValues }) => {
30
31
  }
31
32
  }
32
33
  if (!toChain && !isToChainTouched && !isToTokenTouched) {
34
+ resetField(SwapFormKey.ToChain, { defaultValue: account.chainId });
33
35
  setValue(SwapFormKey.ToChain, account.chainId);
34
36
  setValue(SwapFormKey.ToToken, '');
35
37
  }
@@ -40,6 +42,7 @@ export const FormUpdater = ({ defaultValues }) => {
40
42
  fromChain,
41
43
  getFieldState,
42
44
  getValues,
45
+ resetField,
43
46
  setValue,
44
47
  toChain,
45
48
  ]);
@@ -1,3 +1,3 @@
1
1
  import type { PropsWithChildren } from 'react';
2
- import type { PersistStoreProviderProps } from './types';
3
- export declare const StoreProvider: React.FC<PropsWithChildren<PersistStoreProviderProps>>;
2
+ import type { WidgetConfigProps } from '../types';
3
+ export declare const StoreProvider: React.FC<PropsWithChildren<WidgetConfigProps>>;
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { RouteExecutionStoreProvider } from './routes';
3
- export const StoreProvider = ({ children, namePrefix }) => {
4
- return (_jsx(RouteExecutionStoreProvider, { namePrefix: namePrefix, children: children }));
3
+ import { SplitSubvariantStoreProvider } from './settings';
4
+ export const StoreProvider = ({ children, config, }) => {
5
+ return (_jsx(SplitSubvariantStoreProvider, { state: config.subvariant === 'split' ? 'swap' : undefined, children: _jsx(RouteExecutionStoreProvider, { namePrefix: config?.localStorageKeyPrefix, children: children }) }));
5
6
  };
@@ -1,5 +1,4 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- /* eslint-disable no-underscore-dangle */
3
2
  import { createContext, useContext, useRef } from 'react';
4
3
  import { createRouteExecutionStore } from './createRouteExecutionStore';
5
4
  export const RouteExecutionStoreContext = createContext(null);
@@ -3,3 +3,4 @@ export * from './useAppearance';
3
3
  export * from './useSendToWalletStore';
4
4
  export * from './useSettings';
5
5
  export * from './useSettingsStore';
6
+ export * from './useSplitSubvariantStore';
@@ -3,3 +3,4 @@ export * from './useAppearance';
3
3
  export * from './useSendToWalletStore';
4
4
  export * from './useSettings';
5
5
  export * from './useSettingsStore';
6
+ export * from './useSplitSubvariantStore';
@@ -1,4 +1,6 @@
1
1
  import type { Order } from '@lifi/sdk';
2
+ import type { PropsWithChildren } from 'react';
3
+ import type { StoreApi, UseBoundStore } from 'zustand';
2
4
  import type { Appearance, WidgetConfig } from '../../types';
3
5
  export type ValueSetter<S> = <K extends keyof S>(key: K, value: S[Extract<K, string>]) => void;
4
6
  export type ValuesSetter<S> = <K extends keyof S>(values: Record<K, S[Extract<K, string>]>) => void;
@@ -32,3 +34,12 @@ export interface SendToWalletStore extends SendToWalletState {
32
34
  toggleSendToWallet(): void;
33
35
  setSendToWallet(value: boolean): void;
34
36
  }
37
+ export interface SplitSubvariantState {
38
+ state?: 'swap' | 'bridge';
39
+ setState(state: 'swap' | 'bridge'): void;
40
+ }
41
+ export type SplitSubvariantStore = UseBoundStore<StoreApi<SplitSubvariantState>>;
42
+ export interface SplitSubvariantProps {
43
+ state?: 'swap' | 'bridge';
44
+ }
45
+ export type SplitSubvariantProviderProps = PropsWithChildren<SplitSubvariantProps>;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import type { SplitSubvariantProps, SplitSubvariantProviderProps, SplitSubvariantState, SplitSubvariantStore } from './types';
3
+ export declare const SplitSubvariantStoreContext: import("react").Context<SplitSubvariantStore | null>;
4
+ export declare function SplitSubvariantStoreProvider({ children, ...props }: SplitSubvariantProviderProps): JSX.Element;
5
+ export declare function useSplitSubvariantStore<T>(selector: (state: SplitSubvariantState) => T, equalityFn?: (left: T, right: T) => boolean): T;
6
+ export declare function useSplitSubvariantStoreContext(): SplitSubvariantStore;
7
+ export declare const createSplitSubvariantStore: ({ state }: SplitSubvariantProps) => import("zustand").UseBoundStore<import("zustand").StoreApi<SplitSubvariantState>>;
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useRef } from 'react';
3
+ import { create } from 'zustand';
4
+ export const SplitSubvariantStoreContext = createContext(null);
5
+ const shouldRecreateStore = (store, props) => {
6
+ const { state } = store.getState();
7
+ return (!state && props.state) || (state && !props.state);
8
+ };
9
+ export function SplitSubvariantStoreProvider({ children, ...props }) {
10
+ const storeRef = useRef();
11
+ if (!storeRef.current || shouldRecreateStore(storeRef.current, props)) {
12
+ storeRef.current = createSplitSubvariantStore(props);
13
+ }
14
+ return (_jsx(SplitSubvariantStoreContext.Provider, { value: storeRef.current, children: children }));
15
+ }
16
+ export function useSplitSubvariantStore(selector, equalityFn) {
17
+ const useStore = useContext(SplitSubvariantStoreContext);
18
+ if (!useStore) {
19
+ throw new Error(`You forgot to wrap your component in <${SplitSubvariantStoreProvider.name}>.`);
20
+ }
21
+ return useStore(selector, equalityFn);
22
+ }
23
+ export function useSplitSubvariantStoreContext() {
24
+ const useStore = useContext(SplitSubvariantStoreContext);
25
+ if (!useStore) {
26
+ throw new Error(`You forgot to wrap your component in <${SplitSubvariantStoreProvider.name}>.`);
27
+ }
28
+ return useStore;
29
+ }
30
+ export const createSplitSubvariantStore = ({ state }) => create((set) => ({
31
+ state,
32
+ setState(state) {
33
+ set(() => ({
34
+ state,
35
+ }));
36
+ },
37
+ }));