@0xsquid/ui 0.6.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +23 -19
- package/dist/cjs/types/components/buttons/BoostButton.d.ts +1 -1
- package/dist/cjs/types/components/controls/Switch.d.ts +2 -1
- package/dist/cjs/types/components/icons/Heart.d.ts +9 -3
- package/dist/cjs/types/components/layout/DetailsToolbar.d.ts +6 -2
- package/dist/cjs/types/components/layout/ErrorMessage.d.ts +3 -0
- package/dist/cjs/types/components/layout/ProductCard.d.ts +1 -5
- package/dist/cjs/types/components/layout/SwapConfiguration.d.ts +4 -1
- package/dist/cjs/types/components/layout/index.d.ts +1 -0
- package/dist/cjs/types/components/lists/ListItem.d.ts +3 -1
- package/dist/cjs/types/components/views/AssetsView.d.ts +2 -6
- package/dist/cjs/types/stories/controls/Switch.stories.d.ts +2 -0
- package/dist/cjs/types/stories/layout/DetailsToolbar.stories.d.ts +1 -0
- package/dist/cjs/types/stories/layout/ErrorMessage.stories.d.ts +6 -0
- package/dist/cjs/types/stories/layout/SwapConfiguration.stories.d.ts +1 -0
- package/dist/cjs/types/stories/lists/ListItem.stories.d.ts +3 -0
- package/dist/esm/index.js +23 -20
- package/dist/esm/types/components/buttons/BoostButton.d.ts +1 -1
- package/dist/esm/types/components/controls/Switch.d.ts +2 -1
- package/dist/esm/types/components/icons/Heart.d.ts +9 -3
- package/dist/esm/types/components/layout/DetailsToolbar.d.ts +6 -2
- package/dist/esm/types/components/layout/ErrorMessage.d.ts +3 -0
- package/dist/esm/types/components/layout/ProductCard.d.ts +1 -5
- package/dist/esm/types/components/layout/SwapConfiguration.d.ts +4 -1
- package/dist/esm/types/components/layout/index.d.ts +1 -0
- package/dist/esm/types/components/lists/ListItem.d.ts +3 -1
- package/dist/esm/types/components/views/AssetsView.d.ts +2 -6
- package/dist/esm/types/stories/controls/Switch.stories.d.ts +2 -0
- package/dist/esm/types/stories/layout/DetailsToolbar.stories.d.ts +1 -0
- package/dist/esm/types/stories/layout/ErrorMessage.stories.d.ts +6 -0
- package/dist/esm/types/stories/layout/SwapConfiguration.stories.d.ts +1 -0
- package/dist/esm/types/stories/lists/ListItem.stories.d.ts +3 -0
- package/dist/index.css +30 -34
- package/dist/index.d.ts +22 -11
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -2819,14 +2819,16 @@ const switchCircleSizeClassMap = {
|
|
|
2819
2819
|
small: 'tw-w-4 tw-h-4',
|
|
2820
2820
|
large: 'tw-w-6 tw-h-6',
|
|
2821
2821
|
};
|
|
2822
|
-
function Switch({ checked = false, onChange, size }) {
|
|
2822
|
+
function Switch({ checked = false, onChange, size, disabled = false, }) {
|
|
2823
2823
|
return (
|
|
2824
2824
|
// Switch container
|
|
2825
|
-
jsxRuntime.jsxs("label", { className: clsx('tw-relative tw-inline-flex tw-
|
|
2825
|
+
jsxRuntime.jsxs("label", { className: clsx('tw-relative tw-inline-flex tw-items-center tw-justify-end tw-overflow-hidden tw-rounded-squid-m tw-border tw-border-material-light-thin tw-transition-colors',
|
|
2826
2826
|
// size styles
|
|
2827
2827
|
switchSizeClassMap[size],
|
|
2828
2828
|
// checked styles
|
|
2829
|
-
checked ? 'tw-bg-status-positive' : 'tw-bg-grey-800'
|
|
2829
|
+
checked ? 'tw-bg-status-positive' : 'tw-bg-grey-800',
|
|
2830
|
+
// disabled styles
|
|
2831
|
+
disabled ? 'tw-cursor-not-allowed' : 'tw-cursor-pointer'), children: [jsxRuntime.jsx("input", { disabled: disabled, checked: checked, onChange: disabled ? undefined : (e) => onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked), type: "checkbox", className: "tw-peer tw-sr-only" }), jsxRuntime.jsx("span", { style: {
|
|
2830
2832
|
filter: 'drop-shadow(0px 5px 20px rgba(0, 0, 0, 0.33)) drop-shadow(0px 2px 5px rgba(0, 0, 0, 0.20))',
|
|
2831
2833
|
}, className: clsx('tw-absolute tw-rounded-full tw-border tw-border-material-light-thin tw-transition-all',
|
|
2832
2834
|
// size styles
|
|
@@ -2864,10 +2866,8 @@ function Tooltip({ children, tooltipContent, tooltipWidth = 'container', thresho
|
|
|
2864
2866
|
}
|
|
2865
2867
|
|
|
2866
2868
|
const animationDuration = '500ms';
|
|
2867
|
-
function BoostButton({ boostMode
|
|
2869
|
+
function BoostButton({ boostMode, onToggleBoostMode, canToggleBoostMode = true, boostDisabledMessage = 'Boost disabled', }) {
|
|
2868
2870
|
const boostIndicatorRef = react.useRef(null);
|
|
2869
|
-
// force normal mode if canToggleBoostMode is false
|
|
2870
|
-
const boostMode = canToggleBoostMode ? _boostMode : 'normal';
|
|
2871
2871
|
function handleToggleBoostMode() {
|
|
2872
2872
|
if (!boostIndicatorRef.current || !canToggleBoostMode)
|
|
2873
2873
|
return;
|
|
@@ -2956,19 +2956,20 @@ function EmojiSadIcon() {
|
|
|
2956
2956
|
return (jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", children: jsxRuntime.jsx("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M10 20C15.5228 20 20 15.5228 20 10C20 4.47715 15.5228 0 10 0C4.47715 0 0 4.47715 0 10C0 15.5228 4.47715 20 10 20ZM13.5341 12.4645C11.5815 10.5118 8.41568 10.5118 6.46306 12.4645C6.07254 12.855 6.07254 13.4882 6.46306 13.8787C6.85358 14.2692 7.48675 14.2692 7.87727 13.8787C9.04885 12.7071 10.9483 12.7071 12.1199 13.8787C12.5104 14.2692 13.1436 14.2692 13.5341 13.8787C13.9247 13.4882 13.9247 12.855 13.5341 12.4645ZM8.5 7.5C8.5 8.32843 7.94036 9 7.25 9C6.55964 9 6 8.32843 6 7.5C6 6.67157 6.55964 6 7.25 6C7.94036 6 8.5 6.67157 8.5 7.5ZM12.75 9C13.4404 9 14 8.32843 14 7.5C14 6.67157 13.4404 6 12.75 6C12.0596 6 11.5 6.67157 11.5 7.5C11.5 8.32843 12.0596 9 12.75 9Z", fill: "currentColor" }) }));
|
|
2957
2957
|
}
|
|
2958
2958
|
|
|
2959
|
+
function ErrorMessage({ message }) {
|
|
2960
|
+
return (jsxRuntime.jsxs("div", { className: "tw-flex tw-h-squid-xl tw-flex-1 tw-items-center tw-gap-squid-xxs tw-text-status-negative", children: [jsxRuntime.jsx(EmojiSadIcon, {}), jsxRuntime.jsx(CaptionText, { children: message })] }));
|
|
2961
|
+
}
|
|
2962
|
+
|
|
2959
2963
|
const detailStateClassMap = {
|
|
2960
2964
|
loading: 'tw-opacity-33 tw-pointer-events-none',
|
|
2961
2965
|
empty: 'tw-pointer-events-none tw-hidden',
|
|
2962
2966
|
error: 'tw-opacity-33 tw-pointer-events-none',
|
|
2963
2967
|
full: '',
|
|
2964
2968
|
};
|
|
2965
|
-
function DetailsToolbar({ state = 'full', errorMessage, boostMode = 'normal', onToggleBoostMode, onInvertSwapButtonClick, onFeeButtonClick, feeInUsd, estimatedTime, canToggleBoostMode, boostDisabledMessage, }) {
|
|
2969
|
+
function DetailsToolbar({ state = 'full', errorMessage = 'Something went wrong', boostMode = 'normal', onToggleBoostMode, onInvertSwapButtonClick, onFeeButtonClick, feeInUsd, estimatedTime, canToggleBoostMode, boostDisabledMessage, helpButton, }) {
|
|
2966
2970
|
const detailClassName = cn('tw-w-[190px]', detailStateClassMap[state]);
|
|
2967
|
-
return (jsxRuntime.jsx("aside", { className:
|
|
2971
|
+
return (jsxRuntime.jsx("aside", { className: cn('tw-h-squid-[50px] tw-flex tw-w-[480px] tw-items-center tw-justify-around tw-bg-grey-900 tw-py-squid-xxs tw-text-grey-500', state === 'error' ? 'tw-px-squid-l' : 'tw-px-squid-m'), children: state === 'error' && errorMessage ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ErrorMessage, { message: errorMessage }), helpButton ? (jsxRuntime.jsx(Button, { onClick: helpButton.onClick, size: "md", variant: "tertiary", label: helpButton.label })) : null] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: detailClassName, children: jsxRuntime.jsx(FeeButton, { feeInUsd: feeInUsd, onClick: onFeeButtonClick }) }), jsxRuntime.jsx("div", { className: "tw-flex tw-h-squid-xl tw-w-squid-xxl tw-items-center tw-justify-center", children: state === 'loading' ? (jsxRuntime.jsx(Loader, { size: "32" })) : (jsxRuntime.jsx(Button, { variant: "tertiary", size: "md", onClick: onInvertSwapButtonClick, className: "tw-border-transparent tw-bg-transparent hover:tw-bg-material-light-thin", icon: jsxRuntime.jsx(ChevronLargeDownIcon, {}) })) }), jsxRuntime.jsx("div", { className: detailClassName, children: jsxRuntime.jsx(Boost, { estimatedTime: estimatedTime !== null && estimatedTime !== void 0 ? estimatedTime : '0s', boostMode: boostMode, onToggleBoostMode: onToggleBoostMode, canToggleBoostMode: state === 'loading' ? false : canToggleBoostMode, boostDisabledMessage: boostDisabledMessage }) })] })) }));
|
|
2968
2972
|
}
|
|
2969
|
-
const ErrorMessage = ({ message }) => {
|
|
2970
|
-
return (jsxRuntime.jsxs("div", { className: "tw-flex tw-h-squid-xl tw-flex-1 tw-items-center tw-gap-squid-xxs tw-text-status-negative", children: [jsxRuntime.jsx(EmojiSadIcon, {}), jsxRuntime.jsx(CaptionText, { children: message })] }));
|
|
2971
|
-
};
|
|
2972
2973
|
|
|
2973
2974
|
function DropdownMenuItem({ label, imageUrl, icon, labelClassName, }) {
|
|
2974
2975
|
return (jsxRuntime.jsx("li", { className: "tw-max-h-squid-xl tw-w-full tw-px-squid-xxs", children: jsxRuntime.jsxs("div", { className: "tw-flex tw-h-squid-l tw-cursor-pointer tw-items-center tw-gap-squid-xxs tw-rounded-squid-xs tw-pl-squid-xxs hover:tw-bg-material-light-thin", children: [jsxRuntime.jsx("div", { className: "tw-flex tw-h-squid-m tw-w-squid-m tw-items-center tw-justify-between tw-rounded-squid-xs", children: imageUrl ? (jsxRuntime.jsx("img", { src: imageUrl, className: "tw-h-full tw-w-full tw-rounded-squid-xxs" })) : (icon) }), jsxRuntime.jsx(CaptionText, { className: labelClassName, children: label })] }) }));
|
|
@@ -3047,10 +3048,12 @@ const listItemSizeMap = {
|
|
|
3047
3048
|
large: 'tw-max-w-list-item-large tw-h-list-item-large tw-px-squid-xs',
|
|
3048
3049
|
};
|
|
3049
3050
|
function ListItem(_a) {
|
|
3050
|
-
var { itemTitle, mainImageUrl, subtitle, detail, icon, secondaryImageUrl, size = 'large', mainIcon, className, isSelected } = _a, props = __rest(_a, ["itemTitle", "mainImageUrl", "subtitle", "detail", "icon", "secondaryImageUrl", "size", "mainIcon", "className", "isSelected"]);
|
|
3051
|
-
return (jsxRuntime.jsx("li", Object.assign({}, props, { className: cn('tw-flex tw-bg-grey-900 tw-text-grey-300', listItemSizeMap[size], className), children: jsxRuntime.jsxs("div", { className: cn('tw-flex tw-w-full tw-cursor-pointer tw-items-center tw-justify-start tw-gap-squid-xs tw-rounded-squid-s tw-px-squid-xs tw-py-squid-xxs hover:tw-bg-material-light-thin', isSelected && 'tw-bg-material-light-thin'), children: [size === 'large' ? (jsxRuntime.jsx("div", { className: "tw-h-10 tw-w-10", children: mainIcon ? (mainIcon) : (jsxRuntime.jsx(BadgeImage, { extraMarginForBadge: false, imageUrl: mainImageUrl, badgeUrl: secondaryImageUrl, size: "md", rounded: false })) })) : (jsxRuntime.jsx("div", { className: "tw-flex tw-min-h-[30px] tw-min-w-[30px] tw-items-center tw-justify-center", children: mainIcon ? (mainIcon) : (jsxRuntime.jsx("img", { src: mainImageUrl, className: "tw-h-[30px] tw-w-[30px] tw-rounded-squid-xs" })) })), jsxRuntime.jsxs("div", { className: cn('tw-flex tw-h-[40px] tw-w-full tw-flex-1 tw-flex-col tw-items-start tw-justify-center tw-gap-squid-xs',
|
|
3051
|
+
var { itemTitle, mainImageUrl, subtitle, detail, icon, secondaryImageUrl, size = 'large', mainIcon, className, isSelected, onDetailClick, showDetailOnHoverOnly } = _a, props = __rest(_a, ["itemTitle", "mainImageUrl", "subtitle", "detail", "icon", "secondaryImageUrl", "size", "mainIcon", "className", "isSelected", "onDetailClick", "showDetailOnHoverOnly"]);
|
|
3052
|
+
return (jsxRuntime.jsx("li", Object.assign({}, props, { className: cn('tw-group/list-item tw-flex tw-bg-grey-900 tw-text-grey-300', listItemSizeMap[size], className), children: jsxRuntime.jsxs("div", { className: cn('tw-flex tw-w-full tw-cursor-pointer tw-items-center tw-justify-start tw-gap-squid-xs tw-rounded-squid-s tw-px-squid-xs tw-py-squid-xxs hover:tw-bg-material-light-thin', isSelected && 'tw-bg-material-light-thin'), children: [size === 'large' ? (jsxRuntime.jsx("div", { className: "tw-h-10 tw-w-10", children: mainIcon ? (mainIcon) : (jsxRuntime.jsx(BadgeImage, { extraMarginForBadge: false, imageUrl: mainImageUrl, badgeUrl: secondaryImageUrl, size: "md", rounded: false })) })) : (jsxRuntime.jsx("div", { className: "tw-flex tw-min-h-[30px] tw-min-w-[30px] tw-items-center tw-justify-center", children: mainIcon ? (mainIcon) : (jsxRuntime.jsx("img", { src: mainImageUrl, className: "tw-h-[30px] tw-w-[30px] tw-rounded-squid-xs" })) })), jsxRuntime.jsxs("div", { className: cn('tw-flex tw-h-[40px] tw-w-full tw-flex-1 tw-flex-col tw-items-start tw-justify-center tw-gap-squid-xs',
|
|
3052
3053
|
// 'large' variant has extra padding
|
|
3053
|
-
size === 'large' && 'tw-px-squid-xxs'), children: [typeof itemTitle === 'string' ? (jsxRuntime.jsx(BodyText, { size: "small", className: "tw-truncate !tw-leading-[18px]", children: itemTitle })) : (itemTitle), size === 'large' && subtitle ? (jsxRuntime.jsx(CaptionText, { className: "tw-h-squid-xs !tw-leading-[10px] tw-text-grey-500", children: subtitle })) : null] }), jsxRuntime.jsxs("
|
|
3054
|
+
size === 'large' && 'tw-px-squid-xxs'), children: [typeof itemTitle === 'string' ? (jsxRuntime.jsx(BodyText, { size: "small", className: "tw-truncate !tw-leading-[18px]", children: itemTitle })) : (itemTitle), size === 'large' && subtitle ? (jsxRuntime.jsx(CaptionText, { className: "tw-h-squid-xs !tw-leading-[10px] tw-text-grey-500", children: subtitle })) : null] }), jsxRuntime.jsxs("button", { onClick: onDetailClick, className: cn('tw-cursor-pointer tw-items-center tw-justify-center tw-rounded-squid-xs hover:tw-bg-material-light-thin', size === 'large' ? 'tw-h-squid-xl' : 'tw-h-squid-l', showDetailOnHoverOnly
|
|
3055
|
+
? 'tw-hidden group-hover/list-item:tw-flex'
|
|
3056
|
+
: 'tw-flex'), children: [size === 'large' && detail ? (jsxRuntime.jsx(CaptionText, { className: "min-tw-w-4 min-tw-h-4 tw-px-squid-xxs tw-leading-[10px]", children: detail })) : null, icon ? (jsxRuntime.jsx("span", { className: "tw-flex tw-items-center tw-justify-center tw-px-[3px] tw-py-2", children: icon })) : null] })] }) })));
|
|
3054
3057
|
}
|
|
3055
3058
|
|
|
3056
3059
|
function MenuItem({ label, imageUrl, icon }) {
|
|
@@ -3070,10 +3073,10 @@ function SettingsItem({ icon, label, controls, transparentControls = false, show
|
|
|
3070
3073
|
}
|
|
3071
3074
|
|
|
3072
3075
|
function SwapDetailListItem({ label, detail, icon, isLoading = false, }) {
|
|
3073
|
-
return (jsxRuntime.jsx("li", { className: "tw-swap-detail-list-item-gradient tw-h-squid-l tw-w-full tw-bg-grey-800 tw-px-squid-xs tw-text-grey-300", children: jsxRuntime.jsxs("div", { className: "tw-flex tw-h-squid-l tw-items-center tw-justify-between tw-gap-squid-xs tw-rounded-squid-xs tw-px-squid-xs", children: [jsxRuntime.jsx("div", { className: "tw-h-6 tw-w-6 tw-text-grey-500", children: icon }), jsxRuntime.jsx(CaptionText, { className: "tw-flex-1 tw-text-grey-500", children: label }), isLoading ? (jsxRuntime.jsx(LoadingSkeleton, {})) : typeof detail === 'string' ? (jsxRuntime.jsx(CaptionText, { children: detail })) : (detail)] }) }));
|
|
3076
|
+
return (jsxRuntime.jsx("li", { className: "tw-swap-detail-list-item-gradient tw-h-squid-l tw-w-full tw-bg-grey-800 tw-px-squid-xs tw-text-grey-300", children: jsxRuntime.jsxs("div", { className: "tw-flex tw-h-squid-l tw-items-center tw-justify-between tw-gap-squid-xs tw-rounded-squid-xs tw-px-squid-xs", children: [jsxRuntime.jsx("div", { className: "tw-h-6 tw-w-6 tw-text-grey-500", children: icon }), jsxRuntime.jsx(CaptionText, { className: "tw-flex-1 tw-text-grey-500", children: label }), isLoading ? (jsxRuntime.jsx(LoadingSkeleton, { className: "tw-text-grey-500" })) : typeof detail === 'string' ? (jsxRuntime.jsx(CaptionText, { children: detail })) : (detail)] }) }));
|
|
3074
3077
|
}
|
|
3075
|
-
function LoadingSkeleton() {
|
|
3076
|
-
return (jsxRuntime.jsx("
|
|
3078
|
+
function LoadingSkeleton({ className }) {
|
|
3079
|
+
return (jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100", height: "20", viewBox: "0 0 100 20", fill: "none", className: className, children: [jsxRuntime.jsxs("g", { "clip-path": "url(#clip0_1083_18992)", children: [jsxRuntime.jsx("mask", { id: "mask0_1083_18992", style: { maskType: 'alpha' }, maskUnits: "userSpaceOnUse", x: "0", y: "0", width: "100", height: "20", children: jsxRuntime.jsx("rect", { width: "100", height: "20", fill: "url(#paint0_linear_1083_18992)" }) }), jsxRuntime.jsx("g", { mask: "url(#mask0_1083_18992)", children: jsxRuntime.jsx("rect", { width: "100", height: "20", fill: "currentColor" }) })] }), jsxRuntime.jsxs("defs", { children: [jsxRuntime.jsxs("linearGradient", { id: "paint0_linear_1083_18992", x1: "0", y1: "10", x2: "100", y2: "10", gradientUnits: "userSpaceOnUse", className: "tw-animate-loading-gradient", children: [jsxRuntime.jsx("stop", { "stop-color": "#D9D9D9", "stop-opacity": "0.33" }), jsxRuntime.jsx("stop", { offset: "0.395881", "stop-color": "#737373", "stop-opacity": "0.33" }), jsxRuntime.jsx("stop", { offset: "0.597867", "stop-color": "#737373", "stop-opacity": "0.66" }), jsxRuntime.jsx("stop", { offset: "0.697004", "stop-color": "#737373", "stop-opacity": "0.33" })] }), jsxRuntime.jsx("clipPath", { id: "clip0_1083_18992", children: jsxRuntime.jsx("path", { d: "M0 10C0 4.47715 4.47715 0 10 0H90C95.5228 0 100 4.47715 100 10C100 15.5228 95.5229 20 90 20H10C4.47716 20 0 15.5228 0 10Z", fill: "white" }) })] })] }));
|
|
3077
3080
|
}
|
|
3078
3081
|
|
|
3079
3082
|
function SwapStepSeparator() {
|
|
@@ -3135,7 +3138,7 @@ function SwapInputsIcon() {
|
|
|
3135
3138
|
return (jsxRuntime.jsxs("svg", { width: "20", height: "21", viewBox: "0 0 20 21", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntime.jsx("g", { "clip-path": "url(#clip0_40_7936)", children: jsxRuntime.jsx("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M20 10.5C20 16.0228 15.5228 20.5 10 20.5C4.47715 20.5 0 16.0228 0 10.5C0 4.97715 4.47715 0.5 10 0.5C15.5228 0.5 20 4.97715 20 10.5ZM8.38268 4.57612C8.75636 4.7309 9 5.09554 9 5.5V15.5C9 16.0523 8.55228 16.5 8 16.5C7.44772 16.5 7 16.0523 7 15.5V7.91421L5.70711 9.20711C5.31658 9.59763 4.68342 9.59763 4.29289 9.20711C3.90237 8.81658 3.90237 8.18342 4.29289 7.79289L7.29289 4.79289C7.57889 4.5069 8.00901 4.42134 8.38268 4.57612ZM11 15.5C11 15.9045 11.2436 16.2691 11.6173 16.4239C11.991 16.5787 12.4211 16.4931 12.7071 16.2071L15.7071 13.2071C16.0976 12.8166 16.0976 12.1834 15.7071 11.7929C15.3166 11.4024 14.6834 11.4024 14.2929 11.7929L13 13.0858V5.5C13 4.94771 12.5523 4.5 12 4.5C11.4477 4.5 11 4.94771 11 5.5V15.5Z", fill: "currentColor" }) }), jsxRuntime.jsx("defs", { children: jsxRuntime.jsx("clipPath", { id: "clip0_40_7936", children: jsxRuntime.jsx("rect", { width: "20", height: "20", fill: "white", transform: "translate(0 0.5)" }) }) })] }));
|
|
3136
3139
|
}
|
|
3137
3140
|
|
|
3138
|
-
function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd = '0', balance = '0', isFetching = false, chain, token, direction, onAmountChange, onWalletButtonClick, onAssetsButtonClick, address, }) {
|
|
3141
|
+
function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd = '0', balance = '0', isFetching = false, chain, token, direction, onAmountChange, onWalletButtonClick, onAssetsButtonClick, address, error, }) {
|
|
3139
3142
|
var _a;
|
|
3140
3143
|
const priceImpactClass = ((_a = Number(priceImpactPercentage)) !== null && _a !== void 0 ? _a : 0) > 5
|
|
3141
3144
|
? 'tw-text-status-negative'
|
|
@@ -3143,7 +3146,7 @@ function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd = '0',
|
|
|
3143
3146
|
const isInteractive = direction === 'from';
|
|
3144
3147
|
// improve accessibility
|
|
3145
3148
|
const BalanceButtonTag = isInteractive ? 'button' : 'div';
|
|
3146
|
-
return (jsxRuntime.jsxs("section", { className: "tw-h-[205px] tw-max-h-[205px] tw-bg-grey-900 tw-pb-squid-m", children: [jsxRuntime.jsx("header", { className: "tw-flex tw-items-center tw-gap-1 tw-px-squid-l tw-py-squid-xs tw-leading-5 tw-text-grey-300", children: jsxRuntime.jsxs("button", { onClick: onWalletButtonClick, className: "-tw-ml-squid-xs tw-flex tw-h-squid-l tw-items-center tw-gap-squid-xxs tw-rounded-squid-s tw-px-squid-xs tw-text-grey-600 hover:tw-bg-material-light-thin", children: [jsxRuntime.jsx(BodyText, { className: "tw-text-grey-500", size: "small", children: direction === 'from' ? 'Pay' : 'Receive' }), jsxRuntime.jsx(BodyText, { size: "small", children: ":" }), jsxRuntime.jsxs("div", { className: "tw-flex tw-items-center tw-gap-1", children: [jsxRuntime.jsx(BodyText, { size: "small", className: address ? 'tw-text-grey-300' : 'tw-text-royal-400', children: address ? address : 'Connect wallet' }), jsxRuntime.jsx(ChevronArrowIcon, { className: address ? 'tw-text-grey-600' : 'tw-text-royal-400' })] })] }) }), jsxRuntime.jsx("div", { className: "tw-px-squid-l", children: jsxRuntime.jsx(AssetsButton, { onClick: onAssetsButtonClick, chainImageUrl: chain === null || chain === void 0 ? void 0 : chain.iconUrl, tokenImageUrl: token === null || token === void 0 ? void 0 : token.iconUrl, tokenSymbol: token === null || token === void 0 ? void 0 : token.symbol, chainBgColor: chain === null || chain === void 0 ? void 0 : chain.bgColor, tokenBgColor: token === null || token === void 0 ? void 0 : token.bgColor, tokenTextColor: token === null || token === void 0 ? void 0 : token.textColor }) }), direction === 'from' ? (jsxRuntime.jsx("div", { className: "tw-px-squid-m tw-pb-[15px] tw-pt-[5px]", children: jsxRuntime.jsx("input", { className: "tw-h-[55px] tw-w-full tw-rounded-squid-s tw-bg-transparent tw-px-squid-xs tw-py-squid-s tw-text-heading-small tw-font-heading-regular tw-text-grey-300 placeholder:tw-text-grey-600 hover:tw-bg-material-light-thin focus:tw-bg-material-light-thin focus:tw-text-royal-400 focus:tw-outline-none", placeholder: "0", value: amount, onChange: onAmountChange }) })) : (jsxRuntime.jsx("div", { className: "tw-w-full tw-px-squid-m tw-pb-[15px] tw-pt-[5px]", children: jsxRuntime.jsx("div", { className: "tw-flex tw-h-[55px] tw-w-full tw-items-center tw-rounded-squid-s tw-bg-transparent tw-px-squid-xs tw-py-squid-s tw-text-heading-small tw-font-heading-regular tw-text-grey-300", children: jsxRuntime.jsx("span", { children: amount }) }) })), !(token === null || token === void 0 ? void 0 : token.iconUrl) || isFetching ? null : (jsxRuntime.jsxs("footer", { className: "tw-flex tw-h-squid-m tw-max-h-squid-m tw-items-center tw-justify-between tw-gap-2 tw-px-squid-m tw-text-grey-500", children: [jsxRuntime.jsxs("div", { className: cn('tw-flex tw-h-squid-l tw-items-center tw-gap-1.5 tw-rounded-squid-s tw-px-squid-xs', isInteractive && 'hover:tw-bg-material-light-thin'), children: [jsxRuntime.jsx(SwapInputsIcon, {}), jsxRuntime.jsx(UsdAmount, { usdAmount: swapAmountUsd }), priceImpactPercentage && direction === 'to' ? (jsxRuntime.jsxs("span", { className: clsx('tw-flex tw-items-center', priceImpactClass), children: [jsxRuntime.jsx(ArrowTriangle, {}), jsxRuntime.jsx(CaptionText, { bold: true, children: priceImpactPercentage.toString().concat('%') })] })) : null] }), jsxRuntime.jsxs(BalanceButtonTag, { className: cn('tw-flex tw-h-squid-l tw-items-center tw-gap-1.5 tw-rounded-squid-s tw-px-squid-xs', isInteractive && 'hover:tw-bg-material-light-thin', direction === 'to' && 'tw-pointer-events-none'), children: [jsxRuntime.jsx(CaptionText, { className: "tw-opacity-66", children: "Balance" }), jsxRuntime.jsx(CaptionText, { children: balance }), jsxRuntime.jsx(MaxIcon, {})] })] }))] }));
|
|
3149
|
+
return (jsxRuntime.jsxs("section", { className: "tw-h-[205px] tw-max-h-[205px] tw-bg-grey-900 tw-pb-squid-m", children: [jsxRuntime.jsx("header", { className: "tw-flex tw-items-center tw-gap-1 tw-px-squid-l tw-py-squid-xs tw-leading-5 tw-text-grey-300", children: jsxRuntime.jsxs("button", { onClick: onWalletButtonClick, className: "-tw-ml-squid-xs tw-flex tw-h-squid-l tw-items-center tw-gap-squid-xxs tw-rounded-squid-s tw-px-squid-xs tw-text-grey-600 hover:tw-bg-material-light-thin", children: [jsxRuntime.jsx(BodyText, { className: "tw-text-grey-500", size: "small", children: direction === 'from' ? 'Pay' : 'Receive' }), jsxRuntime.jsx(BodyText, { size: "small", children: ":" }), jsxRuntime.jsxs("div", { className: "tw-flex tw-items-center tw-gap-1", children: [jsxRuntime.jsx(BodyText, { size: "small", className: address ? 'tw-text-grey-300' : 'tw-text-royal-400', children: address ? address : 'Connect wallet' }), jsxRuntime.jsx(ChevronArrowIcon, { className: address ? 'tw-text-grey-600' : 'tw-text-royal-400' })] })] }) }), jsxRuntime.jsx("div", { className: "tw-px-squid-l", children: jsxRuntime.jsx(AssetsButton, { onClick: onAssetsButtonClick, chainImageUrl: chain === null || chain === void 0 ? void 0 : chain.iconUrl, tokenImageUrl: token === null || token === void 0 ? void 0 : token.iconUrl, tokenSymbol: token === null || token === void 0 ? void 0 : token.symbol, chainBgColor: chain === null || chain === void 0 ? void 0 : chain.bgColor, tokenBgColor: token === null || token === void 0 ? void 0 : token.bgColor, tokenTextColor: token === null || token === void 0 ? void 0 : token.textColor }) }), direction === 'from' ? (jsxRuntime.jsx("div", { className: "tw-px-squid-m tw-pb-[15px] tw-pt-[5px]", children: jsxRuntime.jsx("input", { className: "tw-h-[55px] tw-w-full tw-rounded-squid-s tw-bg-transparent tw-px-squid-xs tw-py-squid-s tw-text-heading-small tw-font-heading-regular tw-text-grey-300 placeholder:tw-text-grey-600 hover:tw-bg-material-light-thin focus:tw-bg-material-light-thin focus:tw-text-royal-400 focus:tw-outline-none", placeholder: "0", value: amount, onChange: onAmountChange }) })) : (jsxRuntime.jsx("div", { className: "tw-w-full tw-px-squid-m tw-pb-[15px] tw-pt-[5px]", children: jsxRuntime.jsx("div", { className: "tw-flex tw-h-[55px] tw-w-full tw-items-center tw-rounded-squid-s tw-bg-transparent tw-px-squid-xs tw-py-squid-s tw-text-heading-small tw-font-heading-regular tw-text-grey-300", children: jsxRuntime.jsx("span", { children: amount }) }) })), !(token === null || token === void 0 ? void 0 : token.iconUrl) || isFetching ? null : (jsxRuntime.jsxs("footer", { className: "tw-flex tw-h-squid-m tw-max-h-squid-m tw-items-center tw-justify-between tw-gap-2 tw-px-squid-m tw-text-grey-500", children: [error ? (jsxRuntime.jsx("div", { className: "tw-px-squid-xs", children: jsxRuntime.jsx(ErrorMessage, { message: error.message }) })) : (jsxRuntime.jsxs("div", { className: cn('tw-flex tw-h-squid-l tw-items-center tw-gap-1.5 tw-rounded-squid-s tw-px-squid-xs', isInteractive && 'hover:tw-bg-material-light-thin'), children: [jsxRuntime.jsx(SwapInputsIcon, {}), jsxRuntime.jsx(UsdAmount, { usdAmount: swapAmountUsd }), priceImpactPercentage && direction === 'to' ? (jsxRuntime.jsxs("span", { className: clsx('tw-flex tw-items-center', priceImpactClass), children: [jsxRuntime.jsx(ArrowTriangle, {}), jsxRuntime.jsx(CaptionText, { bold: true, children: priceImpactPercentage.toString().concat('%') })] })) : null] })), jsxRuntime.jsxs(BalanceButtonTag, { className: cn('tw-flex tw-h-squid-l tw-items-center tw-gap-1.5 tw-rounded-squid-s tw-px-squid-xs', isInteractive && 'hover:tw-bg-material-light-thin', direction === 'to' && 'tw-pointer-events-none'), children: [jsxRuntime.jsx(CaptionText, { className: "tw-opacity-66", children: "Balance" }), jsxRuntime.jsx(CaptionText, { children: balance }), jsxRuntime.jsx(MaxIcon, {})] })] }))] }));
|
|
3147
3150
|
}
|
|
3148
3151
|
|
|
3149
3152
|
function SwapProgressViewHeader({ title, description, }) {
|
|
@@ -3260,6 +3263,7 @@ exports.Chip = Chip;
|
|
|
3260
3263
|
exports.DetailsToolbar = DetailsToolbar;
|
|
3261
3264
|
exports.DropdownMenu = DropdownMenu;
|
|
3262
3265
|
exports.DropdownMenuItem = DropdownMenuItem;
|
|
3266
|
+
exports.ErrorMessage = ErrorMessage;
|
|
3263
3267
|
exports.FeeButton = FeeButton;
|
|
3264
3268
|
exports.HeadingText = HeadingText;
|
|
3265
3269
|
exports.HistoryItem = HistoryItem;
|
|
@@ -7,5 +7,5 @@ interface BoostButtonProps {
|
|
|
7
7
|
}) => void;
|
|
8
8
|
boostDisabledMessage?: string;
|
|
9
9
|
}
|
|
10
|
-
export declare function BoostButton({ boostMode
|
|
10
|
+
export declare function BoostButton({ boostMode, onToggleBoostMode, canToggleBoostMode, boostDisabledMessage, }: BoostButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
export {};
|
|
@@ -3,6 +3,7 @@ interface SwitchProps {
|
|
|
3
3
|
checked?: boolean;
|
|
4
4
|
onChange?: (checked: boolean) => void;
|
|
5
5
|
size: SwitchSize;
|
|
6
|
+
disabled?: boolean;
|
|
6
7
|
}
|
|
7
|
-
export declare function Switch({ checked, onChange, size }: SwitchProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function Switch({ checked, onChange, size, disabled, }: SwitchProps): import("react/jsx-runtime").JSX.Element;
|
|
8
9
|
export {};
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
export declare function EmptyHeartIcon(
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export declare function EmptyHeartIcon({ className }: {
|
|
2
|
+
className?: string;
|
|
3
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare function FilledHeartIcon({ className }: {
|
|
5
|
+
className?: string;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function BrokenHeartIcon({ className }: {
|
|
8
|
+
className?: string;
|
|
9
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
4
10
|
export declare function HeartSmallIcon(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BoostMode, DetailsToolbarState } from '../../types/components';
|
|
2
2
|
interface DetailsToolbarProps {
|
|
3
3
|
state?: DetailsToolbarState;
|
|
4
|
-
errorMessage
|
|
4
|
+
errorMessage?: string;
|
|
5
5
|
boostMode?: BoostMode;
|
|
6
6
|
onToggleBoostMode?: ({ boostMode }: {
|
|
7
7
|
boostMode: BoostMode;
|
|
@@ -12,6 +12,10 @@ interface DetailsToolbarProps {
|
|
|
12
12
|
estimatedTime?: string;
|
|
13
13
|
canToggleBoostMode?: boolean;
|
|
14
14
|
boostDisabledMessage?: string;
|
|
15
|
+
helpButton?: {
|
|
16
|
+
label: string;
|
|
17
|
+
onClick: () => void;
|
|
18
|
+
};
|
|
15
19
|
}
|
|
16
|
-
export declare function DetailsToolbar({ state, errorMessage, boostMode, onToggleBoostMode, onInvertSwapButtonClick, onFeeButtonClick, feeInUsd, estimatedTime, canToggleBoostMode, boostDisabledMessage, }: DetailsToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare function DetailsToolbar({ state, errorMessage, boostMode, onToggleBoostMode, onInvertSwapButtonClick, onFeeButtonClick, feeInUsd, estimatedTime, canToggleBoostMode, boostDisabledMessage, helpButton, }: DetailsToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
17
21
|
export {};
|
|
@@ -1,6 +1,2 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
3
|
-
children?: React.ReactNode;
|
|
4
|
-
}
|
|
5
|
-
export declare function ProductCard({ children }: ProductCardProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
export {};
|
|
2
|
+
export declare function ProductCard({ children }: React.PropsWithChildren): import("react/jsx-runtime").JSX.Element;
|
|
@@ -21,6 +21,9 @@ interface SwapConfigurationProps {
|
|
|
21
21
|
onAmountChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
22
22
|
onWalletButtonClick?: () => void;
|
|
23
23
|
onAssetsButtonClick?: () => void;
|
|
24
|
+
error?: {
|
|
25
|
+
message: string;
|
|
26
|
+
};
|
|
24
27
|
}
|
|
25
|
-
export declare function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd, balance, isFetching, chain, token, direction, onAmountChange, onWalletButtonClick, onAssetsButtonClick, address, }: SwapConfigurationProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd, balance, isFetching, chain, token, direction, onAmountChange, onWalletButtonClick, onAssetsButtonClick, address, error, }: SwapConfigurationProps): import("react/jsx-runtime").JSX.Element;
|
|
26
29
|
export {};
|
|
@@ -10,7 +10,9 @@ interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
|
|
|
10
10
|
mainIcon?: React.ReactNode;
|
|
11
11
|
isSelected?: boolean;
|
|
12
12
|
className?: string;
|
|
13
|
+
onDetailClick?: () => void;
|
|
14
|
+
showDetailOnHoverOnly?: boolean;
|
|
13
15
|
}
|
|
14
16
|
type ListItemSize = 'small' | 'large';
|
|
15
|
-
export declare function ListItem({ itemTitle, mainImageUrl, subtitle, detail, icon, secondaryImageUrl, size, mainIcon, className, isSelected, ...props }: ListItemProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function ListItem({ itemTitle, mainImageUrl, subtitle, detail, icon, secondaryImageUrl, size, mainIcon, className, isSelected, onDetailClick, showDetailOnHoverOnly, ...props }: ListItemProps): import("react/jsx-runtime").JSX.Element;
|
|
16
18
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React from 'react';
|
|
2
2
|
interface AssetsViewProps {
|
|
3
3
|
chains: {
|
|
4
4
|
name: string;
|
|
@@ -25,9 +25,5 @@ interface AssetsViewProps {
|
|
|
25
25
|
}[];
|
|
26
26
|
}
|
|
27
27
|
export declare function AssetsView({ chains, favoriteTokens, popularTokens, userTokens, }: AssetsViewProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
-
export declare const List: ({ children }:
|
|
29
|
-
children: ReactNode;
|
|
30
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
31
|
-
export declare const AddFavoriteToken: () => import("react/jsx-runtime").JSX.Element;
|
|
32
|
-
export declare const RemoveFavoriteToken: () => import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare const List: ({ children }: React.PropsWithChildren) => import("react/jsx-runtime").JSX.Element;
|
|
33
29
|
export {};
|
|
@@ -5,5 +5,7 @@ export default meta;
|
|
|
5
5
|
type Story = StoryObj<typeof meta>;
|
|
6
6
|
export declare const LargeChecked: Story;
|
|
7
7
|
export declare const LargeUnchecked: Story;
|
|
8
|
+
export declare const LargeDisabled: Story;
|
|
8
9
|
export declare const SmallChecked: Story;
|
|
9
10
|
export declare const SmallUnchecked: Story;
|
|
11
|
+
export declare const SmallDisabled: Story;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { ErrorMessage } from '../../components/layout/ErrorMessage';
|
|
3
|
+
declare const meta: Meta<typeof ErrorMessage>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
@@ -7,10 +7,13 @@ export declare const Large: Story;
|
|
|
7
7
|
export declare const LargeWithSubtitle: Story;
|
|
8
8
|
export declare const LargeWithDetail: Story;
|
|
9
9
|
export declare const LargeWithIcon: Story;
|
|
10
|
+
export declare const LargeWithDetailAndIcon: Story;
|
|
11
|
+
export declare const LargeShowDetailOnHoverOnly: Story;
|
|
10
12
|
export declare const LargeWithSecondaryImage: Story;
|
|
11
13
|
export declare const LargeSelected: Story;
|
|
12
14
|
export declare const LargeWithCustomIconAsImage: Story;
|
|
13
15
|
export declare const Small: Story;
|
|
14
16
|
export declare const SmallWithIcon: Story;
|
|
17
|
+
export declare const SmallShowDetailOnHoverOnly: Story;
|
|
15
18
|
export declare const SmallSelected: Story;
|
|
16
19
|
export declare const SmallWithCustomIconAsImage: Story;
|
package/dist/esm/index.js
CHANGED
|
@@ -2817,14 +2817,16 @@ const switchCircleSizeClassMap = {
|
|
|
2817
2817
|
small: 'tw-w-4 tw-h-4',
|
|
2818
2818
|
large: 'tw-w-6 tw-h-6',
|
|
2819
2819
|
};
|
|
2820
|
-
function Switch({ checked = false, onChange, size }) {
|
|
2820
|
+
function Switch({ checked = false, onChange, size, disabled = false, }) {
|
|
2821
2821
|
return (
|
|
2822
2822
|
// Switch container
|
|
2823
|
-
jsxs("label", { className: clsx('tw-relative tw-inline-flex tw-
|
|
2823
|
+
jsxs("label", { className: clsx('tw-relative tw-inline-flex tw-items-center tw-justify-end tw-overflow-hidden tw-rounded-squid-m tw-border tw-border-material-light-thin tw-transition-colors',
|
|
2824
2824
|
// size styles
|
|
2825
2825
|
switchSizeClassMap[size],
|
|
2826
2826
|
// checked styles
|
|
2827
|
-
checked ? 'tw-bg-status-positive' : 'tw-bg-grey-800'
|
|
2827
|
+
checked ? 'tw-bg-status-positive' : 'tw-bg-grey-800',
|
|
2828
|
+
// disabled styles
|
|
2829
|
+
disabled ? 'tw-cursor-not-allowed' : 'tw-cursor-pointer'), children: [jsx("input", { disabled: disabled, checked: checked, onChange: disabled ? undefined : (e) => onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked), type: "checkbox", className: "tw-peer tw-sr-only" }), jsx("span", { style: {
|
|
2828
2830
|
filter: 'drop-shadow(0px 5px 20px rgba(0, 0, 0, 0.33)) drop-shadow(0px 2px 5px rgba(0, 0, 0, 0.20))',
|
|
2829
2831
|
}, className: clsx('tw-absolute tw-rounded-full tw-border tw-border-material-light-thin tw-transition-all',
|
|
2830
2832
|
// size styles
|
|
@@ -2862,10 +2864,8 @@ function Tooltip({ children, tooltipContent, tooltipWidth = 'container', thresho
|
|
|
2862
2864
|
}
|
|
2863
2865
|
|
|
2864
2866
|
const animationDuration = '500ms';
|
|
2865
|
-
function BoostButton({ boostMode
|
|
2867
|
+
function BoostButton({ boostMode, onToggleBoostMode, canToggleBoostMode = true, boostDisabledMessage = 'Boost disabled', }) {
|
|
2866
2868
|
const boostIndicatorRef = useRef(null);
|
|
2867
|
-
// force normal mode if canToggleBoostMode is false
|
|
2868
|
-
const boostMode = canToggleBoostMode ? _boostMode : 'normal';
|
|
2869
2869
|
function handleToggleBoostMode() {
|
|
2870
2870
|
if (!boostIndicatorRef.current || !canToggleBoostMode)
|
|
2871
2871
|
return;
|
|
@@ -2954,19 +2954,20 @@ function EmojiSadIcon() {
|
|
|
2954
2954
|
return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", children: jsx("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M10 20C15.5228 20 20 15.5228 20 10C20 4.47715 15.5228 0 10 0C4.47715 0 0 4.47715 0 10C0 15.5228 4.47715 20 10 20ZM13.5341 12.4645C11.5815 10.5118 8.41568 10.5118 6.46306 12.4645C6.07254 12.855 6.07254 13.4882 6.46306 13.8787C6.85358 14.2692 7.48675 14.2692 7.87727 13.8787C9.04885 12.7071 10.9483 12.7071 12.1199 13.8787C12.5104 14.2692 13.1436 14.2692 13.5341 13.8787C13.9247 13.4882 13.9247 12.855 13.5341 12.4645ZM8.5 7.5C8.5 8.32843 7.94036 9 7.25 9C6.55964 9 6 8.32843 6 7.5C6 6.67157 6.55964 6 7.25 6C7.94036 6 8.5 6.67157 8.5 7.5ZM12.75 9C13.4404 9 14 8.32843 14 7.5C14 6.67157 13.4404 6 12.75 6C12.0596 6 11.5 6.67157 11.5 7.5C11.5 8.32843 12.0596 9 12.75 9Z", fill: "currentColor" }) }));
|
|
2955
2955
|
}
|
|
2956
2956
|
|
|
2957
|
+
function ErrorMessage({ message }) {
|
|
2958
|
+
return (jsxs("div", { className: "tw-flex tw-h-squid-xl tw-flex-1 tw-items-center tw-gap-squid-xxs tw-text-status-negative", children: [jsx(EmojiSadIcon, {}), jsx(CaptionText, { children: message })] }));
|
|
2959
|
+
}
|
|
2960
|
+
|
|
2957
2961
|
const detailStateClassMap = {
|
|
2958
2962
|
loading: 'tw-opacity-33 tw-pointer-events-none',
|
|
2959
2963
|
empty: 'tw-pointer-events-none tw-hidden',
|
|
2960
2964
|
error: 'tw-opacity-33 tw-pointer-events-none',
|
|
2961
2965
|
full: '',
|
|
2962
2966
|
};
|
|
2963
|
-
function DetailsToolbar({ state = 'full', errorMessage, boostMode = 'normal', onToggleBoostMode, onInvertSwapButtonClick, onFeeButtonClick, feeInUsd, estimatedTime, canToggleBoostMode, boostDisabledMessage, }) {
|
|
2967
|
+
function DetailsToolbar({ state = 'full', errorMessage = 'Something went wrong', boostMode = 'normal', onToggleBoostMode, onInvertSwapButtonClick, onFeeButtonClick, feeInUsd, estimatedTime, canToggleBoostMode, boostDisabledMessage, helpButton, }) {
|
|
2964
2968
|
const detailClassName = cn('tw-w-[190px]', detailStateClassMap[state]);
|
|
2965
|
-
return (jsx("aside", { className:
|
|
2969
|
+
return (jsx("aside", { className: cn('tw-h-squid-[50px] tw-flex tw-w-[480px] tw-items-center tw-justify-around tw-bg-grey-900 tw-py-squid-xxs tw-text-grey-500', state === 'error' ? 'tw-px-squid-l' : 'tw-px-squid-m'), children: state === 'error' && errorMessage ? (jsxs(Fragment, { children: [jsx(ErrorMessage, { message: errorMessage }), helpButton ? (jsx(Button, { onClick: helpButton.onClick, size: "md", variant: "tertiary", label: helpButton.label })) : null] })) : (jsxs(Fragment, { children: [jsx("div", { className: detailClassName, children: jsx(FeeButton, { feeInUsd: feeInUsd, onClick: onFeeButtonClick }) }), jsx("div", { className: "tw-flex tw-h-squid-xl tw-w-squid-xxl tw-items-center tw-justify-center", children: state === 'loading' ? (jsx(Loader, { size: "32" })) : (jsx(Button, { variant: "tertiary", size: "md", onClick: onInvertSwapButtonClick, className: "tw-border-transparent tw-bg-transparent hover:tw-bg-material-light-thin", icon: jsx(ChevronLargeDownIcon, {}) })) }), jsx("div", { className: detailClassName, children: jsx(Boost, { estimatedTime: estimatedTime !== null && estimatedTime !== void 0 ? estimatedTime : '0s', boostMode: boostMode, onToggleBoostMode: onToggleBoostMode, canToggleBoostMode: state === 'loading' ? false : canToggleBoostMode, boostDisabledMessage: boostDisabledMessage }) })] })) }));
|
|
2966
2970
|
}
|
|
2967
|
-
const ErrorMessage = ({ message }) => {
|
|
2968
|
-
return (jsxs("div", { className: "tw-flex tw-h-squid-xl tw-flex-1 tw-items-center tw-gap-squid-xxs tw-text-status-negative", children: [jsx(EmojiSadIcon, {}), jsx(CaptionText, { children: message })] }));
|
|
2969
|
-
};
|
|
2970
2971
|
|
|
2971
2972
|
function DropdownMenuItem({ label, imageUrl, icon, labelClassName, }) {
|
|
2972
2973
|
return (jsx("li", { className: "tw-max-h-squid-xl tw-w-full tw-px-squid-xxs", children: jsxs("div", { className: "tw-flex tw-h-squid-l tw-cursor-pointer tw-items-center tw-gap-squid-xxs tw-rounded-squid-xs tw-pl-squid-xxs hover:tw-bg-material-light-thin", children: [jsx("div", { className: "tw-flex tw-h-squid-m tw-w-squid-m tw-items-center tw-justify-between tw-rounded-squid-xs", children: imageUrl ? (jsx("img", { src: imageUrl, className: "tw-h-full tw-w-full tw-rounded-squid-xxs" })) : (icon) }), jsx(CaptionText, { className: labelClassName, children: label })] }) }));
|
|
@@ -3045,10 +3046,12 @@ const listItemSizeMap = {
|
|
|
3045
3046
|
large: 'tw-max-w-list-item-large tw-h-list-item-large tw-px-squid-xs',
|
|
3046
3047
|
};
|
|
3047
3048
|
function ListItem(_a) {
|
|
3048
|
-
var { itemTitle, mainImageUrl, subtitle, detail, icon, secondaryImageUrl, size = 'large', mainIcon, className, isSelected } = _a, props = __rest(_a, ["itemTitle", "mainImageUrl", "subtitle", "detail", "icon", "secondaryImageUrl", "size", "mainIcon", "className", "isSelected"]);
|
|
3049
|
-
return (jsx("li", Object.assign({}, props, { className: cn('tw-flex tw-bg-grey-900 tw-text-grey-300', listItemSizeMap[size], className), children: jsxs("div", { className: cn('tw-flex tw-w-full tw-cursor-pointer tw-items-center tw-justify-start tw-gap-squid-xs tw-rounded-squid-s tw-px-squid-xs tw-py-squid-xxs hover:tw-bg-material-light-thin', isSelected && 'tw-bg-material-light-thin'), children: [size === 'large' ? (jsx("div", { className: "tw-h-10 tw-w-10", children: mainIcon ? (mainIcon) : (jsx(BadgeImage, { extraMarginForBadge: false, imageUrl: mainImageUrl, badgeUrl: secondaryImageUrl, size: "md", rounded: false })) })) : (jsx("div", { className: "tw-flex tw-min-h-[30px] tw-min-w-[30px] tw-items-center tw-justify-center", children: mainIcon ? (mainIcon) : (jsx("img", { src: mainImageUrl, className: "tw-h-[30px] tw-w-[30px] tw-rounded-squid-xs" })) })), jsxs("div", { className: cn('tw-flex tw-h-[40px] tw-w-full tw-flex-1 tw-flex-col tw-items-start tw-justify-center tw-gap-squid-xs',
|
|
3049
|
+
var { itemTitle, mainImageUrl, subtitle, detail, icon, secondaryImageUrl, size = 'large', mainIcon, className, isSelected, onDetailClick, showDetailOnHoverOnly } = _a, props = __rest(_a, ["itemTitle", "mainImageUrl", "subtitle", "detail", "icon", "secondaryImageUrl", "size", "mainIcon", "className", "isSelected", "onDetailClick", "showDetailOnHoverOnly"]);
|
|
3050
|
+
return (jsx("li", Object.assign({}, props, { className: cn('tw-group/list-item tw-flex tw-bg-grey-900 tw-text-grey-300', listItemSizeMap[size], className), children: jsxs("div", { className: cn('tw-flex tw-w-full tw-cursor-pointer tw-items-center tw-justify-start tw-gap-squid-xs tw-rounded-squid-s tw-px-squid-xs tw-py-squid-xxs hover:tw-bg-material-light-thin', isSelected && 'tw-bg-material-light-thin'), children: [size === 'large' ? (jsx("div", { className: "tw-h-10 tw-w-10", children: mainIcon ? (mainIcon) : (jsx(BadgeImage, { extraMarginForBadge: false, imageUrl: mainImageUrl, badgeUrl: secondaryImageUrl, size: "md", rounded: false })) })) : (jsx("div", { className: "tw-flex tw-min-h-[30px] tw-min-w-[30px] tw-items-center tw-justify-center", children: mainIcon ? (mainIcon) : (jsx("img", { src: mainImageUrl, className: "tw-h-[30px] tw-w-[30px] tw-rounded-squid-xs" })) })), jsxs("div", { className: cn('tw-flex tw-h-[40px] tw-w-full tw-flex-1 tw-flex-col tw-items-start tw-justify-center tw-gap-squid-xs',
|
|
3050
3051
|
// 'large' variant has extra padding
|
|
3051
|
-
size === 'large' && 'tw-px-squid-xxs'), children: [typeof itemTitle === 'string' ? (jsx(BodyText, { size: "small", className: "tw-truncate !tw-leading-[18px]", children: itemTitle })) : (itemTitle), size === 'large' && subtitle ? (jsx(CaptionText, { className: "tw-h-squid-xs !tw-leading-[10px] tw-text-grey-500", children: subtitle })) : null] }), jsxs("
|
|
3052
|
+
size === 'large' && 'tw-px-squid-xxs'), children: [typeof itemTitle === 'string' ? (jsx(BodyText, { size: "small", className: "tw-truncate !tw-leading-[18px]", children: itemTitle })) : (itemTitle), size === 'large' && subtitle ? (jsx(CaptionText, { className: "tw-h-squid-xs !tw-leading-[10px] tw-text-grey-500", children: subtitle })) : null] }), jsxs("button", { onClick: onDetailClick, className: cn('tw-cursor-pointer tw-items-center tw-justify-center tw-rounded-squid-xs hover:tw-bg-material-light-thin', size === 'large' ? 'tw-h-squid-xl' : 'tw-h-squid-l', showDetailOnHoverOnly
|
|
3053
|
+
? 'tw-hidden group-hover/list-item:tw-flex'
|
|
3054
|
+
: 'tw-flex'), children: [size === 'large' && detail ? (jsx(CaptionText, { className: "min-tw-w-4 min-tw-h-4 tw-px-squid-xxs tw-leading-[10px]", children: detail })) : null, icon ? (jsx("span", { className: "tw-flex tw-items-center tw-justify-center tw-px-[3px] tw-py-2", children: icon })) : null] })] }) })));
|
|
3052
3055
|
}
|
|
3053
3056
|
|
|
3054
3057
|
function MenuItem({ label, imageUrl, icon }) {
|
|
@@ -3068,10 +3071,10 @@ function SettingsItem({ icon, label, controls, transparentControls = false, show
|
|
|
3068
3071
|
}
|
|
3069
3072
|
|
|
3070
3073
|
function SwapDetailListItem({ label, detail, icon, isLoading = false, }) {
|
|
3071
|
-
return (jsx("li", { className: "tw-swap-detail-list-item-gradient tw-h-squid-l tw-w-full tw-bg-grey-800 tw-px-squid-xs tw-text-grey-300", children: jsxs("div", { className: "tw-flex tw-h-squid-l tw-items-center tw-justify-between tw-gap-squid-xs tw-rounded-squid-xs tw-px-squid-xs", children: [jsx("div", { className: "tw-h-6 tw-w-6 tw-text-grey-500", children: icon }), jsx(CaptionText, { className: "tw-flex-1 tw-text-grey-500", children: label }), isLoading ? (jsx(LoadingSkeleton, {})) : typeof detail === 'string' ? (jsx(CaptionText, { children: detail })) : (detail)] }) }));
|
|
3074
|
+
return (jsx("li", { className: "tw-swap-detail-list-item-gradient tw-h-squid-l tw-w-full tw-bg-grey-800 tw-px-squid-xs tw-text-grey-300", children: jsxs("div", { className: "tw-flex tw-h-squid-l tw-items-center tw-justify-between tw-gap-squid-xs tw-rounded-squid-xs tw-px-squid-xs", children: [jsx("div", { className: "tw-h-6 tw-w-6 tw-text-grey-500", children: icon }), jsx(CaptionText, { className: "tw-flex-1 tw-text-grey-500", children: label }), isLoading ? (jsx(LoadingSkeleton, { className: "tw-text-grey-500" })) : typeof detail === 'string' ? (jsx(CaptionText, { children: detail })) : (detail)] }) }));
|
|
3072
3075
|
}
|
|
3073
|
-
function LoadingSkeleton() {
|
|
3074
|
-
return (jsx("
|
|
3076
|
+
function LoadingSkeleton({ className }) {
|
|
3077
|
+
return (jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100", height: "20", viewBox: "0 0 100 20", fill: "none", className: className, children: [jsxs("g", { "clip-path": "url(#clip0_1083_18992)", children: [jsx("mask", { id: "mask0_1083_18992", style: { maskType: 'alpha' }, maskUnits: "userSpaceOnUse", x: "0", y: "0", width: "100", height: "20", children: jsx("rect", { width: "100", height: "20", fill: "url(#paint0_linear_1083_18992)" }) }), jsx("g", { mask: "url(#mask0_1083_18992)", children: jsx("rect", { width: "100", height: "20", fill: "currentColor" }) })] }), jsxs("defs", { children: [jsxs("linearGradient", { id: "paint0_linear_1083_18992", x1: "0", y1: "10", x2: "100", y2: "10", gradientUnits: "userSpaceOnUse", className: "tw-animate-loading-gradient", children: [jsx("stop", { "stop-color": "#D9D9D9", "stop-opacity": "0.33" }), jsx("stop", { offset: "0.395881", "stop-color": "#737373", "stop-opacity": "0.33" }), jsx("stop", { offset: "0.597867", "stop-color": "#737373", "stop-opacity": "0.66" }), jsx("stop", { offset: "0.697004", "stop-color": "#737373", "stop-opacity": "0.33" })] }), jsx("clipPath", { id: "clip0_1083_18992", children: jsx("path", { d: "M0 10C0 4.47715 4.47715 0 10 0H90C95.5228 0 100 4.47715 100 10C100 15.5228 95.5229 20 90 20H10C4.47716 20 0 15.5228 0 10Z", fill: "white" }) })] })] }));
|
|
3075
3078
|
}
|
|
3076
3079
|
|
|
3077
3080
|
function SwapStepSeparator() {
|
|
@@ -3133,7 +3136,7 @@ function SwapInputsIcon() {
|
|
|
3133
3136
|
return (jsxs("svg", { width: "20", height: "21", viewBox: "0 0 20 21", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("g", { "clip-path": "url(#clip0_40_7936)", children: jsx("path", { "fill-rule": "evenodd", "clip-rule": "evenodd", d: "M20 10.5C20 16.0228 15.5228 20.5 10 20.5C4.47715 20.5 0 16.0228 0 10.5C0 4.97715 4.47715 0.5 10 0.5C15.5228 0.5 20 4.97715 20 10.5ZM8.38268 4.57612C8.75636 4.7309 9 5.09554 9 5.5V15.5C9 16.0523 8.55228 16.5 8 16.5C7.44772 16.5 7 16.0523 7 15.5V7.91421L5.70711 9.20711C5.31658 9.59763 4.68342 9.59763 4.29289 9.20711C3.90237 8.81658 3.90237 8.18342 4.29289 7.79289L7.29289 4.79289C7.57889 4.5069 8.00901 4.42134 8.38268 4.57612ZM11 15.5C11 15.9045 11.2436 16.2691 11.6173 16.4239C11.991 16.5787 12.4211 16.4931 12.7071 16.2071L15.7071 13.2071C16.0976 12.8166 16.0976 12.1834 15.7071 11.7929C15.3166 11.4024 14.6834 11.4024 14.2929 11.7929L13 13.0858V5.5C13 4.94771 12.5523 4.5 12 4.5C11.4477 4.5 11 4.94771 11 5.5V15.5Z", fill: "currentColor" }) }), jsx("defs", { children: jsx("clipPath", { id: "clip0_40_7936", children: jsx("rect", { width: "20", height: "20", fill: "white", transform: "translate(0 0.5)" }) }) })] }));
|
|
3134
3137
|
}
|
|
3135
3138
|
|
|
3136
|
-
function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd = '0', balance = '0', isFetching = false, chain, token, direction, onAmountChange, onWalletButtonClick, onAssetsButtonClick, address, }) {
|
|
3139
|
+
function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd = '0', balance = '0', isFetching = false, chain, token, direction, onAmountChange, onWalletButtonClick, onAssetsButtonClick, address, error, }) {
|
|
3137
3140
|
var _a;
|
|
3138
3141
|
const priceImpactClass = ((_a = Number(priceImpactPercentage)) !== null && _a !== void 0 ? _a : 0) > 5
|
|
3139
3142
|
? 'tw-text-status-negative'
|
|
@@ -3141,7 +3144,7 @@ function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd = '0',
|
|
|
3141
3144
|
const isInteractive = direction === 'from';
|
|
3142
3145
|
// improve accessibility
|
|
3143
3146
|
const BalanceButtonTag = isInteractive ? 'button' : 'div';
|
|
3144
|
-
return (jsxs("section", { className: "tw-h-[205px] tw-max-h-[205px] tw-bg-grey-900 tw-pb-squid-m", children: [jsx("header", { className: "tw-flex tw-items-center tw-gap-1 tw-px-squid-l tw-py-squid-xs tw-leading-5 tw-text-grey-300", children: jsxs("button", { onClick: onWalletButtonClick, className: "-tw-ml-squid-xs tw-flex tw-h-squid-l tw-items-center tw-gap-squid-xxs tw-rounded-squid-s tw-px-squid-xs tw-text-grey-600 hover:tw-bg-material-light-thin", children: [jsx(BodyText, { className: "tw-text-grey-500", size: "small", children: direction === 'from' ? 'Pay' : 'Receive' }), jsx(BodyText, { size: "small", children: ":" }), jsxs("div", { className: "tw-flex tw-items-center tw-gap-1", children: [jsx(BodyText, { size: "small", className: address ? 'tw-text-grey-300' : 'tw-text-royal-400', children: address ? address : 'Connect wallet' }), jsx(ChevronArrowIcon, { className: address ? 'tw-text-grey-600' : 'tw-text-royal-400' })] })] }) }), jsx("div", { className: "tw-px-squid-l", children: jsx(AssetsButton, { onClick: onAssetsButtonClick, chainImageUrl: chain === null || chain === void 0 ? void 0 : chain.iconUrl, tokenImageUrl: token === null || token === void 0 ? void 0 : token.iconUrl, tokenSymbol: token === null || token === void 0 ? void 0 : token.symbol, chainBgColor: chain === null || chain === void 0 ? void 0 : chain.bgColor, tokenBgColor: token === null || token === void 0 ? void 0 : token.bgColor, tokenTextColor: token === null || token === void 0 ? void 0 : token.textColor }) }), direction === 'from' ? (jsx("div", { className: "tw-px-squid-m tw-pb-[15px] tw-pt-[5px]", children: jsx("input", { className: "tw-h-[55px] tw-w-full tw-rounded-squid-s tw-bg-transparent tw-px-squid-xs tw-py-squid-s tw-text-heading-small tw-font-heading-regular tw-text-grey-300 placeholder:tw-text-grey-600 hover:tw-bg-material-light-thin focus:tw-bg-material-light-thin focus:tw-text-royal-400 focus:tw-outline-none", placeholder: "0", value: amount, onChange: onAmountChange }) })) : (jsx("div", { className: "tw-w-full tw-px-squid-m tw-pb-[15px] tw-pt-[5px]", children: jsx("div", { className: "tw-flex tw-h-[55px] tw-w-full tw-items-center tw-rounded-squid-s tw-bg-transparent tw-px-squid-xs tw-py-squid-s tw-text-heading-small tw-font-heading-regular tw-text-grey-300", children: jsx("span", { children: amount }) }) })), !(token === null || token === void 0 ? void 0 : token.iconUrl) || isFetching ? null : (jsxs("footer", { className: "tw-flex tw-h-squid-m tw-max-h-squid-m tw-items-center tw-justify-between tw-gap-2 tw-px-squid-m tw-text-grey-500", children: [jsxs("div", { className: cn('tw-flex tw-h-squid-l tw-items-center tw-gap-1.5 tw-rounded-squid-s tw-px-squid-xs', isInteractive && 'hover:tw-bg-material-light-thin'), children: [jsx(SwapInputsIcon, {}), jsx(UsdAmount, { usdAmount: swapAmountUsd }), priceImpactPercentage && direction === 'to' ? (jsxs("span", { className: clsx('tw-flex tw-items-center', priceImpactClass), children: [jsx(ArrowTriangle, {}), jsx(CaptionText, { bold: true, children: priceImpactPercentage.toString().concat('%') })] })) : null] }), jsxs(BalanceButtonTag, { className: cn('tw-flex tw-h-squid-l tw-items-center tw-gap-1.5 tw-rounded-squid-s tw-px-squid-xs', isInteractive && 'hover:tw-bg-material-light-thin', direction === 'to' && 'tw-pointer-events-none'), children: [jsx(CaptionText, { className: "tw-opacity-66", children: "Balance" }), jsx(CaptionText, { children: balance }), jsx(MaxIcon, {})] })] }))] }));
|
|
3147
|
+
return (jsxs("section", { className: "tw-h-[205px] tw-max-h-[205px] tw-bg-grey-900 tw-pb-squid-m", children: [jsx("header", { className: "tw-flex tw-items-center tw-gap-1 tw-px-squid-l tw-py-squid-xs tw-leading-5 tw-text-grey-300", children: jsxs("button", { onClick: onWalletButtonClick, className: "-tw-ml-squid-xs tw-flex tw-h-squid-l tw-items-center tw-gap-squid-xxs tw-rounded-squid-s tw-px-squid-xs tw-text-grey-600 hover:tw-bg-material-light-thin", children: [jsx(BodyText, { className: "tw-text-grey-500", size: "small", children: direction === 'from' ? 'Pay' : 'Receive' }), jsx(BodyText, { size: "small", children: ":" }), jsxs("div", { className: "tw-flex tw-items-center tw-gap-1", children: [jsx(BodyText, { size: "small", className: address ? 'tw-text-grey-300' : 'tw-text-royal-400', children: address ? address : 'Connect wallet' }), jsx(ChevronArrowIcon, { className: address ? 'tw-text-grey-600' : 'tw-text-royal-400' })] })] }) }), jsx("div", { className: "tw-px-squid-l", children: jsx(AssetsButton, { onClick: onAssetsButtonClick, chainImageUrl: chain === null || chain === void 0 ? void 0 : chain.iconUrl, tokenImageUrl: token === null || token === void 0 ? void 0 : token.iconUrl, tokenSymbol: token === null || token === void 0 ? void 0 : token.symbol, chainBgColor: chain === null || chain === void 0 ? void 0 : chain.bgColor, tokenBgColor: token === null || token === void 0 ? void 0 : token.bgColor, tokenTextColor: token === null || token === void 0 ? void 0 : token.textColor }) }), direction === 'from' ? (jsx("div", { className: "tw-px-squid-m tw-pb-[15px] tw-pt-[5px]", children: jsx("input", { className: "tw-h-[55px] tw-w-full tw-rounded-squid-s tw-bg-transparent tw-px-squid-xs tw-py-squid-s tw-text-heading-small tw-font-heading-regular tw-text-grey-300 placeholder:tw-text-grey-600 hover:tw-bg-material-light-thin focus:tw-bg-material-light-thin focus:tw-text-royal-400 focus:tw-outline-none", placeholder: "0", value: amount, onChange: onAmountChange }) })) : (jsx("div", { className: "tw-w-full tw-px-squid-m tw-pb-[15px] tw-pt-[5px]", children: jsx("div", { className: "tw-flex tw-h-[55px] tw-w-full tw-items-center tw-rounded-squid-s tw-bg-transparent tw-px-squid-xs tw-py-squid-s tw-text-heading-small tw-font-heading-regular tw-text-grey-300", children: jsx("span", { children: amount }) }) })), !(token === null || token === void 0 ? void 0 : token.iconUrl) || isFetching ? null : (jsxs("footer", { className: "tw-flex tw-h-squid-m tw-max-h-squid-m tw-items-center tw-justify-between tw-gap-2 tw-px-squid-m tw-text-grey-500", children: [error ? (jsx("div", { className: "tw-px-squid-xs", children: jsx(ErrorMessage, { message: error.message }) })) : (jsxs("div", { className: cn('tw-flex tw-h-squid-l tw-items-center tw-gap-1.5 tw-rounded-squid-s tw-px-squid-xs', isInteractive && 'hover:tw-bg-material-light-thin'), children: [jsx(SwapInputsIcon, {}), jsx(UsdAmount, { usdAmount: swapAmountUsd }), priceImpactPercentage && direction === 'to' ? (jsxs("span", { className: clsx('tw-flex tw-items-center', priceImpactClass), children: [jsx(ArrowTriangle, {}), jsx(CaptionText, { bold: true, children: priceImpactPercentage.toString().concat('%') })] })) : null] })), jsxs(BalanceButtonTag, { className: cn('tw-flex tw-h-squid-l tw-items-center tw-gap-1.5 tw-rounded-squid-s tw-px-squid-xs', isInteractive && 'hover:tw-bg-material-light-thin', direction === 'to' && 'tw-pointer-events-none'), children: [jsx(CaptionText, { className: "tw-opacity-66", children: "Balance" }), jsx(CaptionText, { children: balance }), jsx(MaxIcon, {})] })] }))] }));
|
|
3145
3148
|
}
|
|
3146
3149
|
|
|
3147
3150
|
function SwapProgressViewHeader({ title, description, }) {
|
|
@@ -3245,4 +3248,4 @@ function SquidConfigProvider({ theme, children, themeType = 'light', }) {
|
|
|
3245
3248
|
return (jsx("div", { style: parsedStyle, "data-squid-theme-type": themeType, className: clsx('tw-text-base-content tw-group tw-relative tw-font-geist'), children: children }));
|
|
3246
3249
|
}
|
|
3247
3250
|
|
|
3248
|
-
export { AddressButton, ArrowButton, AssetsButton, BadgeImage, BodyText, Boost, BoostButton, Button, CaptionText, Chip, DetailsToolbar, DropdownMenu, DropdownMenuItem, FeeButton, HeadingText, HistoryItem, Input, ListItem, Menu, MenuItem, Modal, NavigationBar, ProductCard, SectionTitle, SettingsButton, SettingsItem, SettingsSlider, SquidConfigProvider, SwapConfiguration, SwapDetailListItem, SwapProgressViewHeader, SwapStepItem, SwapStepsCollapsed, Switch, TokenPair, Tooltip, UsdAmount, useModal };
|
|
3251
|
+
export { AddressButton, ArrowButton, AssetsButton, BadgeImage, BodyText, Boost, BoostButton, Button, CaptionText, Chip, DetailsToolbar, DropdownMenu, DropdownMenuItem, ErrorMessage, FeeButton, HeadingText, HistoryItem, Input, ListItem, Menu, MenuItem, Modal, NavigationBar, ProductCard, SectionTitle, SettingsButton, SettingsItem, SettingsSlider, SquidConfigProvider, SwapConfiguration, SwapDetailListItem, SwapProgressViewHeader, SwapStepItem, SwapStepsCollapsed, Switch, TokenPair, Tooltip, UsdAmount, useModal };
|
|
@@ -7,5 +7,5 @@ interface BoostButtonProps {
|
|
|
7
7
|
}) => void;
|
|
8
8
|
boostDisabledMessage?: string;
|
|
9
9
|
}
|
|
10
|
-
export declare function BoostButton({ boostMode
|
|
10
|
+
export declare function BoostButton({ boostMode, onToggleBoostMode, canToggleBoostMode, boostDisabledMessage, }: BoostButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
export {};
|
|
@@ -3,6 +3,7 @@ interface SwitchProps {
|
|
|
3
3
|
checked?: boolean;
|
|
4
4
|
onChange?: (checked: boolean) => void;
|
|
5
5
|
size: SwitchSize;
|
|
6
|
+
disabled?: boolean;
|
|
6
7
|
}
|
|
7
|
-
export declare function Switch({ checked, onChange, size }: SwitchProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function Switch({ checked, onChange, size, disabled, }: SwitchProps): import("react/jsx-runtime").JSX.Element;
|
|
8
9
|
export {};
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
export declare function EmptyHeartIcon(
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export declare function EmptyHeartIcon({ className }: {
|
|
2
|
+
className?: string;
|
|
3
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare function FilledHeartIcon({ className }: {
|
|
5
|
+
className?: string;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function BrokenHeartIcon({ className }: {
|
|
8
|
+
className?: string;
|
|
9
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
4
10
|
export declare function HeartSmallIcon(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BoostMode, DetailsToolbarState } from '../../types/components';
|
|
2
2
|
interface DetailsToolbarProps {
|
|
3
3
|
state?: DetailsToolbarState;
|
|
4
|
-
errorMessage
|
|
4
|
+
errorMessage?: string;
|
|
5
5
|
boostMode?: BoostMode;
|
|
6
6
|
onToggleBoostMode?: ({ boostMode }: {
|
|
7
7
|
boostMode: BoostMode;
|
|
@@ -12,6 +12,10 @@ interface DetailsToolbarProps {
|
|
|
12
12
|
estimatedTime?: string;
|
|
13
13
|
canToggleBoostMode?: boolean;
|
|
14
14
|
boostDisabledMessage?: string;
|
|
15
|
+
helpButton?: {
|
|
16
|
+
label: string;
|
|
17
|
+
onClick: () => void;
|
|
18
|
+
};
|
|
15
19
|
}
|
|
16
|
-
export declare function DetailsToolbar({ state, errorMessage, boostMode, onToggleBoostMode, onInvertSwapButtonClick, onFeeButtonClick, feeInUsd, estimatedTime, canToggleBoostMode, boostDisabledMessage, }: DetailsToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare function DetailsToolbar({ state, errorMessage, boostMode, onToggleBoostMode, onInvertSwapButtonClick, onFeeButtonClick, feeInUsd, estimatedTime, canToggleBoostMode, boostDisabledMessage, helpButton, }: DetailsToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
17
21
|
export {};
|
|
@@ -1,6 +1,2 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
3
|
-
children?: React.ReactNode;
|
|
4
|
-
}
|
|
5
|
-
export declare function ProductCard({ children }: ProductCardProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
export {};
|
|
2
|
+
export declare function ProductCard({ children }: React.PropsWithChildren): import("react/jsx-runtime").JSX.Element;
|
|
@@ -21,6 +21,9 @@ interface SwapConfigurationProps {
|
|
|
21
21
|
onAmountChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
22
22
|
onWalletButtonClick?: () => void;
|
|
23
23
|
onAssetsButtonClick?: () => void;
|
|
24
|
+
error?: {
|
|
25
|
+
message: string;
|
|
26
|
+
};
|
|
24
27
|
}
|
|
25
|
-
export declare function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd, balance, isFetching, chain, token, direction, onAmountChange, onWalletButtonClick, onAssetsButtonClick, address, }: SwapConfigurationProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd, balance, isFetching, chain, token, direction, onAmountChange, onWalletButtonClick, onAssetsButtonClick, address, error, }: SwapConfigurationProps): import("react/jsx-runtime").JSX.Element;
|
|
26
29
|
export {};
|
|
@@ -10,7 +10,9 @@ interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
|
|
|
10
10
|
mainIcon?: React.ReactNode;
|
|
11
11
|
isSelected?: boolean;
|
|
12
12
|
className?: string;
|
|
13
|
+
onDetailClick?: () => void;
|
|
14
|
+
showDetailOnHoverOnly?: boolean;
|
|
13
15
|
}
|
|
14
16
|
type ListItemSize = 'small' | 'large';
|
|
15
|
-
export declare function ListItem({ itemTitle, mainImageUrl, subtitle, detail, icon, secondaryImageUrl, size, mainIcon, className, isSelected, ...props }: ListItemProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare function ListItem({ itemTitle, mainImageUrl, subtitle, detail, icon, secondaryImageUrl, size, mainIcon, className, isSelected, onDetailClick, showDetailOnHoverOnly, ...props }: ListItemProps): import("react/jsx-runtime").JSX.Element;
|
|
16
18
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React from 'react';
|
|
2
2
|
interface AssetsViewProps {
|
|
3
3
|
chains: {
|
|
4
4
|
name: string;
|
|
@@ -25,9 +25,5 @@ interface AssetsViewProps {
|
|
|
25
25
|
}[];
|
|
26
26
|
}
|
|
27
27
|
export declare function AssetsView({ chains, favoriteTokens, popularTokens, userTokens, }: AssetsViewProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
-
export declare const List: ({ children }:
|
|
29
|
-
children: ReactNode;
|
|
30
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
31
|
-
export declare const AddFavoriteToken: () => import("react/jsx-runtime").JSX.Element;
|
|
32
|
-
export declare const RemoveFavoriteToken: () => import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare const List: ({ children }: React.PropsWithChildren) => import("react/jsx-runtime").JSX.Element;
|
|
33
29
|
export {};
|
|
@@ -5,5 +5,7 @@ export default meta;
|
|
|
5
5
|
type Story = StoryObj<typeof meta>;
|
|
6
6
|
export declare const LargeChecked: Story;
|
|
7
7
|
export declare const LargeUnchecked: Story;
|
|
8
|
+
export declare const LargeDisabled: Story;
|
|
8
9
|
export declare const SmallChecked: Story;
|
|
9
10
|
export declare const SmallUnchecked: Story;
|
|
11
|
+
export declare const SmallDisabled: Story;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { ErrorMessage } from '../../components/layout/ErrorMessage';
|
|
3
|
+
declare const meta: Meta<typeof ErrorMessage>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
@@ -7,10 +7,13 @@ export declare const Large: Story;
|
|
|
7
7
|
export declare const LargeWithSubtitle: Story;
|
|
8
8
|
export declare const LargeWithDetail: Story;
|
|
9
9
|
export declare const LargeWithIcon: Story;
|
|
10
|
+
export declare const LargeWithDetailAndIcon: Story;
|
|
11
|
+
export declare const LargeShowDetailOnHoverOnly: Story;
|
|
10
12
|
export declare const LargeWithSecondaryImage: Story;
|
|
11
13
|
export declare const LargeSelected: Story;
|
|
12
14
|
export declare const LargeWithCustomIconAsImage: Story;
|
|
13
15
|
export declare const Small: Story;
|
|
14
16
|
export declare const SmallWithIcon: Story;
|
|
17
|
+
export declare const SmallShowDetailOnHoverOnly: Story;
|
|
15
18
|
export declare const SmallSelected: Story;
|
|
16
19
|
export declare const SmallWithCustomIconAsImage: Story;
|
package/dist/index.css
CHANGED
|
@@ -787,10 +787,6 @@ video {
|
|
|
787
787
|
margin-top: 0.25rem;
|
|
788
788
|
}
|
|
789
789
|
|
|
790
|
-
.tw-block {
|
|
791
|
-
display: block;
|
|
792
|
-
}
|
|
793
|
-
|
|
794
790
|
.tw-inline-block {
|
|
795
791
|
display: inline-block;
|
|
796
792
|
}
|
|
@@ -967,10 +963,6 @@ video {
|
|
|
967
963
|
height: 3.75rem;
|
|
968
964
|
}
|
|
969
965
|
|
|
970
|
-
.tw-max-h-4 {
|
|
971
|
-
max-height: 1rem;
|
|
972
|
-
}
|
|
973
|
-
|
|
974
966
|
.tw-max-h-\[120px\] {
|
|
975
967
|
max-height: 120px;
|
|
976
968
|
}
|
|
@@ -1051,10 +1043,6 @@ video {
|
|
|
1051
1043
|
width: 3rem;
|
|
1052
1044
|
}
|
|
1053
1045
|
|
|
1054
|
-
.tw-w-16 {
|
|
1055
|
-
width: 4rem;
|
|
1056
|
-
}
|
|
1057
|
-
|
|
1058
1046
|
.tw-w-36 {
|
|
1059
1047
|
width: 9rem;
|
|
1060
1048
|
}
|
|
@@ -1344,14 +1332,24 @@ video {
|
|
|
1344
1332
|
animation: tw-fade-out 0.2s ease-out both;
|
|
1345
1333
|
}
|
|
1346
1334
|
|
|
1347
|
-
@keyframes tw-
|
|
1335
|
+
@keyframes tw-loading-gradient {
|
|
1336
|
+
0% {
|
|
1337
|
+
transform: translateX(-70%);
|
|
1338
|
+
opacity: 0;
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1348
1341
|
50% {
|
|
1349
|
-
opacity:
|
|
1342
|
+
opacity: 1;
|
|
1343
|
+
}
|
|
1344
|
+
|
|
1345
|
+
100% {
|
|
1346
|
+
opacity: 0;
|
|
1347
|
+
transform: translateX(70%);
|
|
1350
1348
|
}
|
|
1351
1349
|
}
|
|
1352
1350
|
|
|
1353
|
-
.tw-animate-
|
|
1354
|
-
animation: tw-
|
|
1351
|
+
.tw-animate-loading-gradient {
|
|
1352
|
+
animation: tw-loading-gradient 1s ease-in-out both infinite;
|
|
1355
1353
|
}
|
|
1356
1354
|
|
|
1357
1355
|
@keyframes tw-slide-to-bottom {
|
|
@@ -1386,6 +1384,10 @@ video {
|
|
|
1386
1384
|
animation: tw-slide-to-top 0.35s ease-out both;
|
|
1387
1385
|
}
|
|
1388
1386
|
|
|
1387
|
+
.tw-cursor-not-allowed {
|
|
1388
|
+
cursor: not-allowed;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1389
1391
|
.tw-cursor-pointer {
|
|
1390
1392
|
cursor: pointer;
|
|
1391
1393
|
}
|
|
@@ -1700,10 +1702,6 @@ video {
|
|
|
1700
1702
|
background-color: var(--squid-theme-grey-500);
|
|
1701
1703
|
}
|
|
1702
1704
|
|
|
1703
|
-
.tw-bg-grey-700 {
|
|
1704
|
-
background-color: var(--squid-theme-grey-700);
|
|
1705
|
-
}
|
|
1706
|
-
|
|
1707
1705
|
.tw-bg-grey-800 {
|
|
1708
1706
|
background-color: var(--squid-theme-grey-800);
|
|
1709
1707
|
}
|
|
@@ -1879,6 +1877,11 @@ video {
|
|
|
1879
1877
|
padding-right: 1.25rem;
|
|
1880
1878
|
}
|
|
1881
1879
|
|
|
1880
|
+
.tw-px-\[3px\] {
|
|
1881
|
+
padding-left: 3px;
|
|
1882
|
+
padding-right: 3px;
|
|
1883
|
+
}
|
|
1884
|
+
|
|
1882
1885
|
.tw-px-\[70px\] {
|
|
1883
1886
|
padding-left: 70px;
|
|
1884
1887
|
padding-right: 70px;
|
|
@@ -1919,6 +1922,11 @@ video {
|
|
|
1919
1922
|
padding-bottom: 0.125rem;
|
|
1920
1923
|
}
|
|
1921
1924
|
|
|
1925
|
+
.tw-py-2 {
|
|
1926
|
+
padding-top: 0.5rem;
|
|
1927
|
+
padding-bottom: 0.5rem;
|
|
1928
|
+
}
|
|
1929
|
+
|
|
1922
1930
|
.tw-py-squid-s {
|
|
1923
1931
|
padding-top: 0.9375rem;
|
|
1924
1932
|
padding-bottom: 0.9375rem;
|
|
@@ -2470,20 +2478,8 @@ li {
|
|
|
2470
2478
|
color: var(--squid-theme-grey-600);
|
|
2471
2479
|
}
|
|
2472
2480
|
|
|
2473
|
-
.tw-group\/
|
|
2474
|
-
display:
|
|
2475
|
-
}
|
|
2476
|
-
|
|
2477
|
-
.tw-group\/token-action-remove:hover .group-hover\/token-action-remove\:tw-block {
|
|
2478
|
-
display: block;
|
|
2479
|
-
}
|
|
2480
|
-
|
|
2481
|
-
.tw-group\/token-action-add:hover .group-hover\/token-action-add\:tw-hidden {
|
|
2482
|
-
display: none;
|
|
2483
|
-
}
|
|
2484
|
-
|
|
2485
|
-
.tw-group\/token-action-remove:hover .group-hover\/token-action-remove\:tw-hidden {
|
|
2486
|
-
display: none;
|
|
2481
|
+
.tw-group\/list-item:hover .group-hover\/list-item\:tw-flex {
|
|
2482
|
+
display: flex;
|
|
2487
2483
|
}
|
|
2488
2484
|
|
|
2489
2485
|
.tw-group\/history-item:hover .group-hover\/history-item\:tw-opacity-0 {
|
package/dist/index.d.ts
CHANGED
|
@@ -67,7 +67,7 @@ interface BoostButtonProps {
|
|
|
67
67
|
}) => void;
|
|
68
68
|
boostDisabledMessage?: string;
|
|
69
69
|
}
|
|
70
|
-
declare function BoostButton({ boostMode
|
|
70
|
+
declare function BoostButton({ boostMode, onToggleBoostMode, canToggleBoostMode, boostDisabledMessage, }: BoostButtonProps): react_jsx_runtime.JSX.Element;
|
|
71
71
|
|
|
72
72
|
interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement> {
|
|
73
73
|
label?: string;
|
|
@@ -113,8 +113,9 @@ interface SwitchProps {
|
|
|
113
113
|
checked?: boolean;
|
|
114
114
|
onChange?: (checked: boolean) => void;
|
|
115
115
|
size: SwitchSize;
|
|
116
|
+
disabled?: boolean;
|
|
116
117
|
}
|
|
117
|
-
declare function Switch({ checked, onChange, size }: SwitchProps): react_jsx_runtime.JSX.Element;
|
|
118
|
+
declare function Switch({ checked, onChange, size, disabled, }: SwitchProps): react_jsx_runtime.JSX.Element;
|
|
118
119
|
|
|
119
120
|
type TooltipWidth = 'max' | 'container';
|
|
120
121
|
type TooltipThreshold = 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl';
|
|
@@ -142,7 +143,7 @@ declare function Boost({ boostMode, onToggleBoostMode, estimatedTime, boostDisab
|
|
|
142
143
|
|
|
143
144
|
interface DetailsToolbarProps {
|
|
144
145
|
state?: DetailsToolbarState;
|
|
145
|
-
errorMessage
|
|
146
|
+
errorMessage?: string;
|
|
146
147
|
boostMode?: BoostMode;
|
|
147
148
|
onToggleBoostMode?: ({ boostMode }: {
|
|
148
149
|
boostMode: BoostMode;
|
|
@@ -153,8 +154,12 @@ interface DetailsToolbarProps {
|
|
|
153
154
|
estimatedTime?: string;
|
|
154
155
|
canToggleBoostMode?: boolean;
|
|
155
156
|
boostDisabledMessage?: string;
|
|
157
|
+
helpButton?: {
|
|
158
|
+
label: string;
|
|
159
|
+
onClick: () => void;
|
|
160
|
+
};
|
|
156
161
|
}
|
|
157
|
-
declare function DetailsToolbar({ state, errorMessage, boostMode, onToggleBoostMode, onInvertSwapButtonClick, onFeeButtonClick, feeInUsd, estimatedTime, canToggleBoostMode, boostDisabledMessage, }: DetailsToolbarProps): react_jsx_runtime.JSX.Element;
|
|
162
|
+
declare function DetailsToolbar({ state, errorMessage, boostMode, onToggleBoostMode, onInvertSwapButtonClick, onFeeButtonClick, feeInUsd, estimatedTime, canToggleBoostMode, boostDisabledMessage, helpButton, }: DetailsToolbarProps): react_jsx_runtime.JSX.Element;
|
|
158
163
|
|
|
159
164
|
interface DropdownMenuItemProps {
|
|
160
165
|
label: string;
|
|
@@ -188,9 +193,11 @@ interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
|
|
|
188
193
|
mainIcon?: React.ReactNode;
|
|
189
194
|
isSelected?: boolean;
|
|
190
195
|
className?: string;
|
|
196
|
+
onDetailClick?: () => void;
|
|
197
|
+
showDetailOnHoverOnly?: boolean;
|
|
191
198
|
}
|
|
192
199
|
type ListItemSize = 'small' | 'large';
|
|
193
|
-
declare function ListItem({ itemTitle, mainImageUrl, subtitle, detail, icon, secondaryImageUrl, size, mainIcon, className, isSelected, ...props }: ListItemProps): react_jsx_runtime.JSX.Element;
|
|
200
|
+
declare function ListItem({ itemTitle, mainImageUrl, subtitle, detail, icon, secondaryImageUrl, size, mainIcon, className, isSelected, onDetailClick, showDetailOnHoverOnly, ...props }: ListItemProps): react_jsx_runtime.JSX.Element;
|
|
194
201
|
|
|
195
202
|
interface MenuItemProps {
|
|
196
203
|
label: string;
|
|
@@ -239,6 +246,10 @@ interface DropdownMenuProps {
|
|
|
239
246
|
}
|
|
240
247
|
declare function DropdownMenu({ dropdownRef, items, className, }: DropdownMenuProps): react_jsx_runtime.JSX.Element;
|
|
241
248
|
|
|
249
|
+
declare function ErrorMessage({ message }: {
|
|
250
|
+
message: string;
|
|
251
|
+
}): react_jsx_runtime.JSX.Element;
|
|
252
|
+
|
|
242
253
|
type Rounded = 'sm' | 'lg';
|
|
243
254
|
interface MenuProps extends React$1.ComponentProps<'div'> {
|
|
244
255
|
containerClassName?: string;
|
|
@@ -269,10 +280,7 @@ interface NavigationBarProps {
|
|
|
269
280
|
}
|
|
270
281
|
declare function NavigationBar({ title, displayBackButton, logoUrl, transparent, displayButtonShadows, onBackButtonClick, label, onAddressButtonClick, isLoading, }: NavigationBarProps): react_jsx_runtime.JSX.Element;
|
|
271
282
|
|
|
272
|
-
|
|
273
|
-
children?: React.ReactNode;
|
|
274
|
-
}
|
|
275
|
-
declare function ProductCard({ children }: ProductCardProps): react_jsx_runtime.JSX.Element;
|
|
283
|
+
declare function ProductCard({ children }: React.PropsWithChildren): react_jsx_runtime.JSX.Element;
|
|
276
284
|
|
|
277
285
|
interface SwapConfigurationProps {
|
|
278
286
|
direction: SwapDirection;
|
|
@@ -295,8 +303,11 @@ interface SwapConfigurationProps {
|
|
|
295
303
|
onAmountChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
296
304
|
onWalletButtonClick?: () => void;
|
|
297
305
|
onAssetsButtonClick?: () => void;
|
|
306
|
+
error?: {
|
|
307
|
+
message: string;
|
|
308
|
+
};
|
|
298
309
|
}
|
|
299
|
-
declare function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd, balance, isFetching, chain, token, direction, onAmountChange, onWalletButtonClick, onAssetsButtonClick, address, }: SwapConfigurationProps): react_jsx_runtime.JSX.Element;
|
|
310
|
+
declare function SwapConfiguration({ priceImpactPercentage, amount, swapAmountUsd, balance, isFetching, chain, token, direction, onAmountChange, onWalletButtonClick, onAssetsButtonClick, address, error, }: SwapConfigurationProps): react_jsx_runtime.JSX.Element;
|
|
300
311
|
|
|
301
312
|
interface SwapProgressViewHeaderProps {
|
|
302
313
|
title: string;
|
|
@@ -392,4 +403,4 @@ declare function useModal(props?: {
|
|
|
392
403
|
openModalButtonRef: React.RefObject<HTMLButtonElement>;
|
|
393
404
|
};
|
|
394
405
|
|
|
395
|
-
export { AddressButton, ArrowButton, AssetsButton, BadgeImage, BodyText, Boost, BoostButton, Button, CaptionText, Chip, DetailsToolbar, DropdownMenu, DropdownMenuItem, type DropdownMenuItemProps, FeeButton, HeadingText, HistoryItem, Input, ListItem, Menu, MenuItem, Modal, NavigationBar, ProductCard, SectionTitle, SettingsButton, type SettingsButtonProps, SettingsItem, type SettingsItemProps, SettingsSlider, type SettingsSliderProps, SquidConfigProvider, SwapConfiguration, SwapDetailListItem, SwapProgressViewHeader, SwapStepItem, SwapStepsCollapsed, Switch, TokenPair, Tooltip, type TooltipThreshold, type TooltipWidth, UsdAmount, useModal };
|
|
406
|
+
export { AddressButton, ArrowButton, AssetsButton, BadgeImage, BodyText, Boost, BoostButton, Button, CaptionText, Chip, DetailsToolbar, DropdownMenu, DropdownMenuItem, type DropdownMenuItemProps, ErrorMessage, FeeButton, HeadingText, HistoryItem, Input, ListItem, Menu, MenuItem, Modal, NavigationBar, ProductCard, SectionTitle, SettingsButton, type SettingsButtonProps, SettingsItem, type SettingsItemProps, SettingsSlider, type SettingsSliderProps, SquidConfigProvider, SwapConfiguration, SwapDetailListItem, SwapProgressViewHeader, SwapStepItem, SwapStepsCollapsed, Switch, TokenPair, Tooltip, type TooltipThreshold, type TooltipWidth, UsdAmount, useModal };
|