diff --git a/.env b/.env
index 123de951118..dacbf5ca7c3 100644
--- a/.env
+++ b/.env
@@ -104,7 +104,7 @@ VITE_FEATURE_ABSTRACT=false
VITE_FEATURE_HEMI=false
VITE_FEATURE_SONIC=false
VITE_FEATURE_UNICHAIN=false
-VITE_FEATURE_BOB=false
+VITE_FEATURE_BOB=true
VITE_FEATURE_MODE=false
VITE_FEATURE_SONEIUM=false
VITE_FEATURE_SEI=false
@@ -116,7 +116,7 @@ VITE_FEATURE_TON=true
VITE_FEATURE_EARN_TAB=true
VITE_FEATURE_ACROSS_SWAP=true
VITE_FEATURE_DEBRIDGE_SWAP=true
-VITE_FEATURE_BOB_GATEWAY_SWAP=false
+VITE_FEATURE_BOB_GATEWAY_SWAP=true
VITE_FEATURE_USERBACK=true
VITE_FEATURE_AGENTIC_CHAT=false
VITE_FEATURE_MM_NATIVE_MULTICHAIN=false
diff --git a/.env.development b/.env.development
index e887b88a788..c6399c767d6 100644
--- a/.env.development
+++ b/.env.development
@@ -27,8 +27,6 @@ VITE_FEATURE_WORLDCHAIN=true
VITE_FEATURE_HEMI=true
VITE_FEATURE_SONIC=true
VITE_FEATURE_UNICHAIN=true
-VITE_FEATURE_BOB=true
-VITE_FEATURE_BOB_GATEWAY_SWAP=true
VITE_FEATURE_MODE=true
VITE_FEATURE_SONEIUM=true
VITE_FEATURE_TON=true
diff --git a/packages/swap-widget/package.json b/packages/swap-widget/package.json
index 0eb45951e08..757e641b7cc 100644
--- a/packages/swap-widget/package.json
+++ b/packages/swap-widget/package.json
@@ -1,6 +1,6 @@
{
"name": "@shapeshiftoss/swap-widget",
- "version": "0.3.0",
+ "version": "0.4.0",
"description": "Embeddable swap widget using ShapeShift API",
"repository": "https://github.com/shapeshift/web",
"license": "MIT",
diff --git a/packages/swap-widget/src/components/InputStep.tsx b/packages/swap-widget/src/components/InputStep.tsx
index 84a5f3e2515..3aa4ed248bf 100644
--- a/packages/swap-widget/src/components/InputStep.tsx
+++ b/packages/swap-widget/src/components/InputStep.tsx
@@ -11,7 +11,8 @@ import { ReceiveAddressRow } from './ReceiveAddressRow'
type InputStepProps = {
displayValues: SwapDisplayValues
onOpenTokenModal: (type: 'sell' | 'buy') => void
- onSellAmountChange: (value: string) => void
+ onSellAmountChange: (value: string, sellAssetUsdPrice?: string) => void
+ onToggleSellFiat: (sellAssetUsdPrice?: string) => void
onSwapTokens: () => void
onSelectRate: (rate: TradeRate) => void
onButtonClick: () => void
@@ -23,6 +24,7 @@ export const InputStep = ({
displayValues,
onOpenTokenModal,
onSellAmountChange,
+ onToggleSellFiat,
onSwapTokens,
onSelectRate,
onButtonClick,
@@ -41,6 +43,7 @@ export const InputStep = ({
isSellBalanceLoading,
isBuyBalanceLoading,
sellUsdValue,
+ sellAssetUsdPrice,
buyUsdValue,
sellChainInfo,
buyChainInfo,
@@ -67,6 +70,8 @@ export const InputStep = ({
selectedRate,
sellAmount,
sellAmountBaseUnit,
+ isSellAmountFiat,
+ sellAmountFiat,
isSellAssetEvm,
isSellAssetUtxo,
isSellAssetSolana,
@@ -114,16 +119,17 @@ export const InputStep = ({
+ {isSellAmountFiat &&
$}
{
const raw = e.target.value.replace(/[^0-9.]/g, '')
const parts = raw.split('.')
const sanitized = parts.length > 2 ? parts[0] + '.' + parts.slice(1).join('') : raw
- onSellAmountChange(sanitized)
+ onSellAmountChange(sanitized, sellAssetUsdPrice)
}}
/>