diff --git a/.changeset/happy-trees-doubt.md b/.changeset/happy-trees-doubt.md new file mode 100644 index 00000000000..d7830375566 --- /dev/null +++ b/.changeset/happy-trees-doubt.md @@ -0,0 +1,5 @@ +--- +"thirdweb": patch +--- + +autofocus token search input when token selector modal opens in `BuyWidget`, `SwapWidget` and `BridgeWidget` components diff --git a/packages/thirdweb/src/react/web/ui/Bridge/FundWallet.tsx b/packages/thirdweb/src/react/web/ui/Bridge/FundWallet.tsx index e710a165f88..780c8c03133 100644 --- a/packages/thirdweb/src/react/web/ui/Bridge/FundWallet.tsx +++ b/packages/thirdweb/src/react/web/ui/Bridge/FundWallet.tsx @@ -205,6 +205,7 @@ export function FundWallet(props: FundWalletProps) { transform: "none", }} setOpen={(v) => setIsTokenSelectionOpen(v)} + autoFocusCrossIcon={false} > void; placeholder: string; + autoFocus?: boolean; }) { return (
props.onChange(e.target.value)} + autoFocus={props.autoFocus} />
); diff --git a/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/select-token-ui.tsx b/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/select-token-ui.tsx index 4d1fda7ba62..fe78747bab9 100644 --- a/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/select-token-ui.tsx +++ b/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/select-token-ui.tsx @@ -496,6 +496,7 @@ function TokenSelectionScreen(props: { value={props.search} onChange={props.setSearch} placeholder="Search by token or address" + autoFocus={!props.isMobile} /> diff --git a/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/swap-ui.tsx b/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/swap-ui.tsx index 40fc45c1af4..41abf1945f9 100644 --- a/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/swap-ui.tsx +++ b/packages/thirdweb/src/react/web/ui/Bridge/swap-widget/swap-ui.tsx @@ -204,6 +204,7 @@ export function SwapUI(props: SwapUIProps) { = (props) => { const [open, setOpen] = useState(props.open); const contentRef = useRef(null); @@ -143,7 +144,15 @@ export const Modal: React.FC<{ }} > - + = { title: "Bridge/BridgeWidgetScript", - parameters: { - layout: "centered", - }, - decorators: [ - (Story) => { - return ( -
- -
- ); - }, - ], }; export default meta; export function BasicUsage() { return ( - @@ -30,7 +21,7 @@ export function BasicUsage() { export function LightTheme() { return ( - ); } + +function Variant(props: BridgeWidgetScriptProps) { + return ( +
+ + +
+ ); +} diff --git a/packages/thirdweb/src/stories/Bridge/Swap/SwapWidget.Prefill.stories.tsx b/packages/thirdweb/src/stories/Bridge/Swap/SwapWidget.Prefill.stories.tsx index bf2e071fc58..59bd46e3dd2 100644 --- a/packages/thirdweb/src/stories/Bridge/Swap/SwapWidget.Prefill.stories.tsx +++ b/packages/thirdweb/src/stories/Bridge/Swap/SwapWidget.Prefill.stories.tsx @@ -1,19 +1,19 @@ import type { Meta } from "@storybook/react-vite"; import { NATIVE_TOKEN_ADDRESS } from "../../../constants/addresses.js"; -import { SwapWidget } from "../../../react/web/ui/Bridge/swap-widget/SwapWidget.js"; +import { + SwapWidget, + type SwapWidgetProps, +} from "../../../react/web/ui/Bridge/swap-widget/SwapWidget.js"; import { storyClient } from "../../utils.js"; const meta = { - parameters: { - layout: "centered", - }, title: "Bridge/Swap/SwapWidget/Prefill", } satisfies Meta; export default meta; export function Buy_NativeToken() { return ( - ); } + +function Variant(props: SwapWidgetProps) { + return ( +
+ + +
+ ); +} diff --git a/packages/thirdweb/src/stories/Bridge/Swap/SwapWidget.stories.tsx b/packages/thirdweb/src/stories/Bridge/Swap/SwapWidget.stories.tsx index 8f7381a2698..d8726b05cbb 100644 --- a/packages/thirdweb/src/stories/Bridge/Swap/SwapWidget.stories.tsx +++ b/packages/thirdweb/src/stories/Bridge/Swap/SwapWidget.stories.tsx @@ -1,22 +1,13 @@ import type { Meta } from "@storybook/react"; import { lightTheme } from "../../../react/core/design-system/index.js"; -import { SwapWidget } from "../../../react/web/ui/Bridge/swap-widget/SwapWidget.js"; +import { + SwapWidget, + type SwapWidgetProps, +} from "../../../react/web/ui/Bridge/swap-widget/SwapWidget.js"; import { storyClient } from "../../utils.js"; const meta: Meta = { - parameters: { - layout: "centered", - }, title: "Bridge/Swap/SwapWidget", - decorators: [ - (Story) => { - return ( -
- -
- ); - }, - ], }; export default meta; @@ -26,7 +17,7 @@ export function BasicUsage() { export function CurrencySet() { return ( - ); } + +function Variant(props: SwapWidgetProps) { + return ( +
+ + +
+ ); +} diff --git a/packages/thirdweb/src/stories/BuyWidget.stories.tsx b/packages/thirdweb/src/stories/BuyWidget.stories.tsx index be11f5f4f0d..a6cb7f0d376 100644 --- a/packages/thirdweb/src/stories/BuyWidget.stories.tsx +++ b/packages/thirdweb/src/stories/BuyWidget.stories.tsx @@ -9,9 +9,6 @@ import { import { storyClient } from "./utils.js"; const meta = { - parameters: { - layout: "centered", - }, title: "Bridge/Buy/BuyWidget", } satisfies Meta; export default meta; @@ -143,7 +140,14 @@ export function LargeAmount() { function Variant(props: BuyWidgetProps) { return ( -
+