@orkid-labs/widget 0.1.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/README.md +212 -0
- package/dist/index.d.mts +155 -0
- package/dist/index.d.ts +155 -0
- package/dist/index.js +1042 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1022 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +207 -0
- package/package.json +63 -0
package/README.md
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
# @orkid/widget
|
|
2
|
+
|
|
3
|
+
White-label React swap widget for the Orkid gasless swap API. Supports Base, Ethereum, Arbitrum, and Polygon.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Drop-in React component (`<OrkidSwapWidget />`).
|
|
8
|
+
- Iframe embed (`<OrkidSwapIframe />`) and script embed (`mountOrkidSwap`).
|
|
9
|
+
- Built-in wallet (MetaMask / injected) with optional WalletConnect.
|
|
10
|
+
- External `wagmi` config mode for host apps already using wagmi.
|
|
11
|
+
- Configurable API endpoint — direct Orkid, sandbox, or partner proxy.
|
|
12
|
+
- Full theming via CSS custom properties and a `theme` prop.
|
|
13
|
+
- All four chains live: Base, Ethereum, Arbitrum, Polygon.
|
|
14
|
+
- Gasless execution with user-pays-gas fallback.
|
|
15
|
+
- Sandbox support via `SANDBOX_BASE_URL`.
|
|
16
|
+
|
|
17
|
+
## Install
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @orkid/widget @orkid/sdk wagmi viem @tanstack/react-query
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
`wagmi`, `viem`, `@tanstack/react-query`, and `@orkid/sdk` are peer dependencies.
|
|
24
|
+
|
|
25
|
+
## Quick start
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { OrkidSwapProvider, OrkidSwapWidget } from '@orkid/widget'
|
|
29
|
+
|
|
30
|
+
function App() {
|
|
31
|
+
return (
|
|
32
|
+
<OrkidSwapProvider
|
|
33
|
+
apiKey={process.env.NEXT_PUBLIC_ORKID_API_KEY}
|
|
34
|
+
partnerId="alternate-futures"
|
|
35
|
+
brandName="Alternate Futures"
|
|
36
|
+
showPoweredBy={false}
|
|
37
|
+
walletMode="built-in"
|
|
38
|
+
defaultFromToken={{
|
|
39
|
+
address: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
|
|
40
|
+
symbol: 'USDC',
|
|
41
|
+
decimals: 6,
|
|
42
|
+
chain: 'base',
|
|
43
|
+
}}
|
|
44
|
+
defaultToToken={{
|
|
45
|
+
address: '0x4200000000000000000000000000000000000006',
|
|
46
|
+
symbol: 'WETH',
|
|
47
|
+
decimals: 18,
|
|
48
|
+
chain: 'base',
|
|
49
|
+
}}
|
|
50
|
+
>
|
|
51
|
+
<OrkidSwapWidget />
|
|
52
|
+
</OrkidSwapProvider>
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Sandbox mode
|
|
58
|
+
|
|
59
|
+
To point the widget at the sandbox (dry-run only, never submits):
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
import { OrkidSwapProvider, OrkidSwapWidget } from '@orkid/widget'
|
|
63
|
+
import { SANDBOX_BASE_URL } from '@orkid/sdk'
|
|
64
|
+
|
|
65
|
+
function App() {
|
|
66
|
+
return (
|
|
67
|
+
<OrkidSwapProvider
|
|
68
|
+
apiKey={process.env.ORKID_SANDBOX_KEY}
|
|
69
|
+
apiBaseUrl={SANDBOX_BASE_URL}
|
|
70
|
+
>
|
|
71
|
+
<OrkidSwapWidget />
|
|
72
|
+
</OrkidSwapProvider>
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Iframe embed
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
import { OrkidSwapIframe } from '@orkid/widget'
|
|
81
|
+
|
|
82
|
+
<OrkidSwapIframe
|
|
83
|
+
src="https://widget.orkidlabs.xyz"
|
|
84
|
+
partner="alternate-futures"
|
|
85
|
+
brandName="Alternate Futures"
|
|
86
|
+
theme={{ primary: '#0052FF' }}
|
|
87
|
+
fromToken="0x833589fcd6edb6e08f4c7c32d4f71b54bda02913:USDC:6"
|
|
88
|
+
toToken="0x4200000000000000000000000000000000000006:WETH:18"
|
|
89
|
+
amount="25"
|
|
90
|
+
showPoweredBy={false}
|
|
91
|
+
/>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The hosted page reads the query parameters and forwards them to `OrkidSwapProvider`.
|
|
95
|
+
|
|
96
|
+
## Script embed
|
|
97
|
+
|
|
98
|
+
```html
|
|
99
|
+
<script type="module">
|
|
100
|
+
import { mountOrkidSwap } from 'https://cdn.orkidlabs.xyz/widget.js'
|
|
101
|
+
mountOrkidSwap({
|
|
102
|
+
target: '#swap-widget',
|
|
103
|
+
partnerId: 'alternate-futures',
|
|
104
|
+
apiBaseUrl: 'https://partner.com',
|
|
105
|
+
})
|
|
106
|
+
</script>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## External wagmi config
|
|
110
|
+
|
|
111
|
+
If your app already sets up `wagmi`, pass the `wagmiConfig` and set `walletMode="external"`:
|
|
112
|
+
|
|
113
|
+
```tsx
|
|
114
|
+
import { OrkidSwapProvider, OrkidSwapWidget } from '@orkid/widget'
|
|
115
|
+
import { wagmiConfig } from './wagmi'
|
|
116
|
+
|
|
117
|
+
function App() {
|
|
118
|
+
return (
|
|
119
|
+
<WagmiProvider config={wagmiConfig}>
|
|
120
|
+
<QueryClientProvider client={queryClient}>
|
|
121
|
+
<OrkidSwapProvider walletMode="external" wagmiConfig={wagmiConfig} apiKey="...">
|
|
122
|
+
<OrkidSwapWidget />
|
|
123
|
+
</OrkidSwapProvider>
|
|
124
|
+
</QueryClientProvider>
|
|
125
|
+
</WagmiProvider>
|
|
126
|
+
)
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Proxy mode
|
|
131
|
+
|
|
132
|
+
To avoid exposing an Orkid API key in the browser, set `apiBaseUrl` to your own backend and omit `apiKey`. Your backend must forward the request with the `X-ORKID-API-Key` header.
|
|
133
|
+
|
|
134
|
+
```tsx
|
|
135
|
+
<OrkidSwapProvider apiBaseUrl="https://partner.com" apiKey={undefined}>
|
|
136
|
+
<OrkidSwapWidget />
|
|
137
|
+
</OrkidSwapProvider>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Theming
|
|
141
|
+
|
|
142
|
+
Pass a `theme` object or override CSS variables:
|
|
143
|
+
|
|
144
|
+
```tsx
|
|
145
|
+
<OrkidSwapProvider
|
|
146
|
+
theme={{
|
|
147
|
+
primary: '#0052FF',
|
|
148
|
+
background: '#ffffff',
|
|
149
|
+
card: '#f8fafc',
|
|
150
|
+
radius: '0.75rem',
|
|
151
|
+
}}
|
|
152
|
+
>
|
|
153
|
+
<OrkidSwapWidget />
|
|
154
|
+
</OrkidSwapProvider>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Available CSS variables: `--orkid-widget-bg`, `--orkid-widget-card`, `--orkid-widget-primary`, `--orkid-widget-text`, etc. See `src/styles.css`.
|
|
158
|
+
|
|
159
|
+
## Props
|
|
160
|
+
|
|
161
|
+
### OrkidSwapProvider
|
|
162
|
+
|
|
163
|
+
| Prop | Type | Default | Description |
|
|
164
|
+
|---|---|---|---|
|
|
165
|
+
| `apiKey` | `string` | `undefined` | Orkid API key. Optional in proxy mode. |
|
|
166
|
+
| `apiBaseUrl` | `string` | `https://orkidlabs.xyz` | API base URL. Use `SANDBOX_BASE_URL` for sandbox. |
|
|
167
|
+
| `partnerId` | `string` | `undefined` | Partner identifier. |
|
|
168
|
+
| `walletMode` | `'built-in' \| 'external'` | `'built-in'` | Wallet connection mode. |
|
|
169
|
+
| `walletConnectProjectId` | `string` | `undefined` | WalletConnect project ID. |
|
|
170
|
+
| `wagmiConfig` | `Config` | `undefined` | External wagmi config. |
|
|
171
|
+
| `theme` | `OrkidWidgetTheme` | `defaultLightTheme` | Theme overrides. |
|
|
172
|
+
| `logoUrl` | `string` | `undefined` | Partner logo URL. |
|
|
173
|
+
| `brandName` | `string` | `'Swap'` | Brand name. |
|
|
174
|
+
| `showPoweredBy` | `boolean` | `true` | Show "Powered by Orkid" footer. |
|
|
175
|
+
| `supportedChains` | `number[]` | `[8453, 1, 42161, 137]` | Chain IDs to show. |
|
|
176
|
+
| `defaultFromToken` | `OrkidWidgetToken` | `undefined` | Default input token. |
|
|
177
|
+
| `defaultToToken` | `OrkidWidgetToken` | `undefined` | Default output token. |
|
|
178
|
+
| `defaultAmount` | `string` | `undefined` | Default input amount. |
|
|
179
|
+
| `defaultSlippageBps` | `number` | `50` | Default slippage in basis points. |
|
|
180
|
+
| `tokenList` | `OrkidWidgetToken[]` | `undefined` | Restrict token list. |
|
|
181
|
+
| `gasless` | `boolean` | `true` | Try gasless solve first. |
|
|
182
|
+
| `onQuote` | `(res) => void` | `undefined` | Quote callback. |
|
|
183
|
+
| `onSolve` | `(res) => void` | `undefined` | Solve success callback. |
|
|
184
|
+
| `onError` | `(err) => void` | `undefined` | Error callback. |
|
|
185
|
+
|
|
186
|
+
### OrkidSwapWidget
|
|
187
|
+
|
|
188
|
+
| Prop | Type | Default | Description |
|
|
189
|
+
|---|---|---|---|
|
|
190
|
+
| `className` | `string` | `undefined` | Additional class on the widget root. |
|
|
191
|
+
|
|
192
|
+
## Chain support
|
|
193
|
+
|
|
194
|
+
| Chain | ID | Status |
|
|
195
|
+
|---|---|---|
|
|
196
|
+
| Base | 8453 | Live |
|
|
197
|
+
| Ethereum | 1 | Live |
|
|
198
|
+
| Arbitrum | 42161 | Live |
|
|
199
|
+
| Polygon | 137 | Live |
|
|
200
|
+
|
|
201
|
+
## Development
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
cd orkid-widget
|
|
205
|
+
npm install
|
|
206
|
+
npm run typecheck
|
|
207
|
+
npm run build
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## License
|
|
211
|
+
|
|
212
|
+
MIT
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { CSSProperties } from 'react';
|
|
3
|
+
import { Config } from 'wagmi';
|
|
4
|
+
import { OrkidResponse, OrkidClient } from '@orkid/sdk';
|
|
5
|
+
|
|
6
|
+
interface OrkidWidgetToken {
|
|
7
|
+
address: string;
|
|
8
|
+
symbol: string;
|
|
9
|
+
decimals: number;
|
|
10
|
+
chain: string;
|
|
11
|
+
}
|
|
12
|
+
interface OrkidWidgetTheme {
|
|
13
|
+
background?: string;
|
|
14
|
+
card?: string;
|
|
15
|
+
cardForeground?: string;
|
|
16
|
+
primary?: string;
|
|
17
|
+
primaryForeground?: string;
|
|
18
|
+
text?: string;
|
|
19
|
+
muted?: string;
|
|
20
|
+
mutedForeground?: string;
|
|
21
|
+
border?: string;
|
|
22
|
+
success?: string;
|
|
23
|
+
warning?: string;
|
|
24
|
+
danger?: string;
|
|
25
|
+
radius?: string;
|
|
26
|
+
fontFamily?: string;
|
|
27
|
+
accent?: string;
|
|
28
|
+
accentForeground?: string;
|
|
29
|
+
popover?: string;
|
|
30
|
+
popoverForeground?: string;
|
|
31
|
+
input?: string;
|
|
32
|
+
ring?: string;
|
|
33
|
+
}
|
|
34
|
+
type OrkidWalletMode = 'built-in' | 'external';
|
|
35
|
+
interface OrkidSwapProviderProps {
|
|
36
|
+
/** Orkid API key. Required for direct Orkid API mode. */
|
|
37
|
+
apiKey?: string;
|
|
38
|
+
/** API base URL. Defaults to https://orkidlabs.xyz. Use a partner proxy in production. */
|
|
39
|
+
apiBaseUrl?: string;
|
|
40
|
+
/** Partner identifier. Used for analytics, config lookup, and iframe mode. */
|
|
41
|
+
partnerId?: string;
|
|
42
|
+
/** Wallet connection mode. */
|
|
43
|
+
walletMode?: OrkidWalletMode;
|
|
44
|
+
/** WalletConnect project ID for built-in wallet mode. */
|
|
45
|
+
walletConnectProjectId?: string;
|
|
46
|
+
/** External wagmi config. Required when walletMode is 'external'. */
|
|
47
|
+
wagmiConfig?: Config;
|
|
48
|
+
/** Theme overrides. */
|
|
49
|
+
theme?: OrkidWidgetTheme;
|
|
50
|
+
/** Partner logo URL. */
|
|
51
|
+
logoUrl?: string;
|
|
52
|
+
/** Partner brand name shown in the widget. */
|
|
53
|
+
brandName?: string;
|
|
54
|
+
/** Show "Powered by Orkid" footer. */
|
|
55
|
+
showPoweredBy?: boolean;
|
|
56
|
+
/** Chain IDs to show. Defaults to [8453, 1, 42161, 137]. Non-live chains are disabled. */
|
|
57
|
+
supportedChains?: number[];
|
|
58
|
+
/** Default token to sell. */
|
|
59
|
+
defaultFromToken?: OrkidWidgetToken;
|
|
60
|
+
/** Default token to buy. */
|
|
61
|
+
defaultToToken?: OrkidWidgetToken;
|
|
62
|
+
/** Default input amount. */
|
|
63
|
+
defaultAmount?: string;
|
|
64
|
+
/** Default slippage in basis points. */
|
|
65
|
+
defaultSlippageBps?: number;
|
|
66
|
+
/** Restrict token list. If omitted, tokens are fetched from the API. */
|
|
67
|
+
tokenList?: OrkidWidgetToken[];
|
|
68
|
+
/** Enable gasless solve. If false, the widget will always fall back to user-pays-gas. */
|
|
69
|
+
gasless?: boolean;
|
|
70
|
+
/** Called when a quote is returned. */
|
|
71
|
+
onQuote?: (res: OrkidResponse) => void;
|
|
72
|
+
/** Called when a solve succeeds (gasless or user-pays). */
|
|
73
|
+
onSolve?: (res: OrkidResponse) => void;
|
|
74
|
+
/** Called on errors. */
|
|
75
|
+
onError?: (error: string) => void;
|
|
76
|
+
children: React.ReactNode;
|
|
77
|
+
}
|
|
78
|
+
interface OrkidSwapWidgetProps {
|
|
79
|
+
/** Additional CSS class on the widget root. */
|
|
80
|
+
className?: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
declare function OrkidSwapProvider({ apiKey, apiBaseUrl, partnerId, walletMode, walletConnectProjectId, wagmiConfig, theme, logoUrl, brandName, showPoweredBy, supportedChains, defaultFromToken, defaultToToken, defaultAmount, defaultSlippageBps, tokenList, gasless, onQuote, onSolve, onError, children, }: OrkidSwapProviderProps): react.JSX.Element;
|
|
84
|
+
|
|
85
|
+
declare function OrkidSwapWidget({ className }: {
|
|
86
|
+
className?: string;
|
|
87
|
+
}): react.JSX.Element;
|
|
88
|
+
|
|
89
|
+
interface OrkidSwapIframeProps {
|
|
90
|
+
/** Base URL of the hosted widget page, e.g. https://widget.orkidlabs.xyz */
|
|
91
|
+
src?: string;
|
|
92
|
+
/** Partner identifier */
|
|
93
|
+
partner?: string;
|
|
94
|
+
/** Brand name to show */
|
|
95
|
+
brandName?: string;
|
|
96
|
+
/** Logo URL */
|
|
97
|
+
logoUrl?: string;
|
|
98
|
+
/** Theme overrides */
|
|
99
|
+
theme?: OrkidWidgetTheme;
|
|
100
|
+
/** Default input token */
|
|
101
|
+
fromToken?: string;
|
|
102
|
+
/** Default output token */
|
|
103
|
+
toToken?: string;
|
|
104
|
+
/** Default amount */
|
|
105
|
+
amount?: string;
|
|
106
|
+
/** Whether to show "Powered by Orkid" */
|
|
107
|
+
showPoweredBy?: boolean;
|
|
108
|
+
/** Allow iframe to go fullscreen */
|
|
109
|
+
allowFullScreen?: boolean;
|
|
110
|
+
/** Additional class name */
|
|
111
|
+
className?: string;
|
|
112
|
+
/** Additional style */
|
|
113
|
+
style?: CSSProperties;
|
|
114
|
+
}
|
|
115
|
+
declare function OrkidSwapIframe({ src, partner, brandName, logoUrl, theme, fromToken, toToken, amount, showPoweredBy, allowFullScreen, className, style, }: OrkidSwapIframeProps): react.JSX.Element;
|
|
116
|
+
|
|
117
|
+
interface OrkidSwapEmbedOptions extends OrkidSwapProviderProps {
|
|
118
|
+
/** The DOM element or selector to mount the widget into. */
|
|
119
|
+
target: HTMLElement | string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Mounts the Orkid swap widget into a DOM element.
|
|
123
|
+
* Useful for script embeds or non-React hosts.
|
|
124
|
+
*/
|
|
125
|
+
declare function mountOrkidSwap(options: OrkidSwapEmbedOptions): () => void;
|
|
126
|
+
|
|
127
|
+
interface OrkidSwapContextValue {
|
|
128
|
+
client: OrkidClient;
|
|
129
|
+
wagmiConfig?: Config;
|
|
130
|
+
walletMode: OrkidWalletMode;
|
|
131
|
+
theme: Required<OrkidWidgetTheme>;
|
|
132
|
+
logoUrl?: string;
|
|
133
|
+
brandName?: string;
|
|
134
|
+
showPoweredBy: boolean;
|
|
135
|
+
supportedChains: number[];
|
|
136
|
+
defaultFromToken?: OrkidWidgetToken;
|
|
137
|
+
defaultToToken?: OrkidWidgetToken;
|
|
138
|
+
defaultAmount?: string;
|
|
139
|
+
defaultSlippageBps: number;
|
|
140
|
+
tokenList?: OrkidWidgetToken[];
|
|
141
|
+
gasless: boolean;
|
|
142
|
+
partnerId?: string;
|
|
143
|
+
onQuote?: (res: OrkidResponse) => void;
|
|
144
|
+
onSolve?: (res: OrkidResponse) => void;
|
|
145
|
+
onError?: (error: string) => void;
|
|
146
|
+
}
|
|
147
|
+
declare const OrkidSwapContext: react.Context<OrkidSwapContextValue | undefined>;
|
|
148
|
+
declare function useOrkidSwapContext(): OrkidSwapContextValue;
|
|
149
|
+
|
|
150
|
+
declare const defaultLightTheme: Required<OrkidWidgetTheme>;
|
|
151
|
+
declare const defaultDarkTheme: Required<OrkidWidgetTheme>;
|
|
152
|
+
declare function resolveTheme(partial?: OrkidWidgetTheme): Required<OrkidWidgetTheme>;
|
|
153
|
+
declare function themeToCssVariables(theme: Required<OrkidWidgetTheme>): Record<string, string>;
|
|
154
|
+
|
|
155
|
+
export { OrkidSwapContext, OrkidSwapIframe, OrkidSwapProvider, type OrkidSwapProviderProps, OrkidSwapWidget, type OrkidSwapWidgetProps, type OrkidWalletMode, type OrkidWidgetTheme, type OrkidWidgetToken, defaultDarkTheme, defaultLightTheme, mountOrkidSwap, resolveTheme, themeToCssVariables, useOrkidSwapContext };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { CSSProperties } from 'react';
|
|
3
|
+
import { Config } from 'wagmi';
|
|
4
|
+
import { OrkidResponse, OrkidClient } from '@orkid/sdk';
|
|
5
|
+
|
|
6
|
+
interface OrkidWidgetToken {
|
|
7
|
+
address: string;
|
|
8
|
+
symbol: string;
|
|
9
|
+
decimals: number;
|
|
10
|
+
chain: string;
|
|
11
|
+
}
|
|
12
|
+
interface OrkidWidgetTheme {
|
|
13
|
+
background?: string;
|
|
14
|
+
card?: string;
|
|
15
|
+
cardForeground?: string;
|
|
16
|
+
primary?: string;
|
|
17
|
+
primaryForeground?: string;
|
|
18
|
+
text?: string;
|
|
19
|
+
muted?: string;
|
|
20
|
+
mutedForeground?: string;
|
|
21
|
+
border?: string;
|
|
22
|
+
success?: string;
|
|
23
|
+
warning?: string;
|
|
24
|
+
danger?: string;
|
|
25
|
+
radius?: string;
|
|
26
|
+
fontFamily?: string;
|
|
27
|
+
accent?: string;
|
|
28
|
+
accentForeground?: string;
|
|
29
|
+
popover?: string;
|
|
30
|
+
popoverForeground?: string;
|
|
31
|
+
input?: string;
|
|
32
|
+
ring?: string;
|
|
33
|
+
}
|
|
34
|
+
type OrkidWalletMode = 'built-in' | 'external';
|
|
35
|
+
interface OrkidSwapProviderProps {
|
|
36
|
+
/** Orkid API key. Required for direct Orkid API mode. */
|
|
37
|
+
apiKey?: string;
|
|
38
|
+
/** API base URL. Defaults to https://orkidlabs.xyz. Use a partner proxy in production. */
|
|
39
|
+
apiBaseUrl?: string;
|
|
40
|
+
/** Partner identifier. Used for analytics, config lookup, and iframe mode. */
|
|
41
|
+
partnerId?: string;
|
|
42
|
+
/** Wallet connection mode. */
|
|
43
|
+
walletMode?: OrkidWalletMode;
|
|
44
|
+
/** WalletConnect project ID for built-in wallet mode. */
|
|
45
|
+
walletConnectProjectId?: string;
|
|
46
|
+
/** External wagmi config. Required when walletMode is 'external'. */
|
|
47
|
+
wagmiConfig?: Config;
|
|
48
|
+
/** Theme overrides. */
|
|
49
|
+
theme?: OrkidWidgetTheme;
|
|
50
|
+
/** Partner logo URL. */
|
|
51
|
+
logoUrl?: string;
|
|
52
|
+
/** Partner brand name shown in the widget. */
|
|
53
|
+
brandName?: string;
|
|
54
|
+
/** Show "Powered by Orkid" footer. */
|
|
55
|
+
showPoweredBy?: boolean;
|
|
56
|
+
/** Chain IDs to show. Defaults to [8453, 1, 42161, 137]. Non-live chains are disabled. */
|
|
57
|
+
supportedChains?: number[];
|
|
58
|
+
/** Default token to sell. */
|
|
59
|
+
defaultFromToken?: OrkidWidgetToken;
|
|
60
|
+
/** Default token to buy. */
|
|
61
|
+
defaultToToken?: OrkidWidgetToken;
|
|
62
|
+
/** Default input amount. */
|
|
63
|
+
defaultAmount?: string;
|
|
64
|
+
/** Default slippage in basis points. */
|
|
65
|
+
defaultSlippageBps?: number;
|
|
66
|
+
/** Restrict token list. If omitted, tokens are fetched from the API. */
|
|
67
|
+
tokenList?: OrkidWidgetToken[];
|
|
68
|
+
/** Enable gasless solve. If false, the widget will always fall back to user-pays-gas. */
|
|
69
|
+
gasless?: boolean;
|
|
70
|
+
/** Called when a quote is returned. */
|
|
71
|
+
onQuote?: (res: OrkidResponse) => void;
|
|
72
|
+
/** Called when a solve succeeds (gasless or user-pays). */
|
|
73
|
+
onSolve?: (res: OrkidResponse) => void;
|
|
74
|
+
/** Called on errors. */
|
|
75
|
+
onError?: (error: string) => void;
|
|
76
|
+
children: React.ReactNode;
|
|
77
|
+
}
|
|
78
|
+
interface OrkidSwapWidgetProps {
|
|
79
|
+
/** Additional CSS class on the widget root. */
|
|
80
|
+
className?: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
declare function OrkidSwapProvider({ apiKey, apiBaseUrl, partnerId, walletMode, walletConnectProjectId, wagmiConfig, theme, logoUrl, brandName, showPoweredBy, supportedChains, defaultFromToken, defaultToToken, defaultAmount, defaultSlippageBps, tokenList, gasless, onQuote, onSolve, onError, children, }: OrkidSwapProviderProps): react.JSX.Element;
|
|
84
|
+
|
|
85
|
+
declare function OrkidSwapWidget({ className }: {
|
|
86
|
+
className?: string;
|
|
87
|
+
}): react.JSX.Element;
|
|
88
|
+
|
|
89
|
+
interface OrkidSwapIframeProps {
|
|
90
|
+
/** Base URL of the hosted widget page, e.g. https://widget.orkidlabs.xyz */
|
|
91
|
+
src?: string;
|
|
92
|
+
/** Partner identifier */
|
|
93
|
+
partner?: string;
|
|
94
|
+
/** Brand name to show */
|
|
95
|
+
brandName?: string;
|
|
96
|
+
/** Logo URL */
|
|
97
|
+
logoUrl?: string;
|
|
98
|
+
/** Theme overrides */
|
|
99
|
+
theme?: OrkidWidgetTheme;
|
|
100
|
+
/** Default input token */
|
|
101
|
+
fromToken?: string;
|
|
102
|
+
/** Default output token */
|
|
103
|
+
toToken?: string;
|
|
104
|
+
/** Default amount */
|
|
105
|
+
amount?: string;
|
|
106
|
+
/** Whether to show "Powered by Orkid" */
|
|
107
|
+
showPoweredBy?: boolean;
|
|
108
|
+
/** Allow iframe to go fullscreen */
|
|
109
|
+
allowFullScreen?: boolean;
|
|
110
|
+
/** Additional class name */
|
|
111
|
+
className?: string;
|
|
112
|
+
/** Additional style */
|
|
113
|
+
style?: CSSProperties;
|
|
114
|
+
}
|
|
115
|
+
declare function OrkidSwapIframe({ src, partner, brandName, logoUrl, theme, fromToken, toToken, amount, showPoweredBy, allowFullScreen, className, style, }: OrkidSwapIframeProps): react.JSX.Element;
|
|
116
|
+
|
|
117
|
+
interface OrkidSwapEmbedOptions extends OrkidSwapProviderProps {
|
|
118
|
+
/** The DOM element or selector to mount the widget into. */
|
|
119
|
+
target: HTMLElement | string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Mounts the Orkid swap widget into a DOM element.
|
|
123
|
+
* Useful for script embeds or non-React hosts.
|
|
124
|
+
*/
|
|
125
|
+
declare function mountOrkidSwap(options: OrkidSwapEmbedOptions): () => void;
|
|
126
|
+
|
|
127
|
+
interface OrkidSwapContextValue {
|
|
128
|
+
client: OrkidClient;
|
|
129
|
+
wagmiConfig?: Config;
|
|
130
|
+
walletMode: OrkidWalletMode;
|
|
131
|
+
theme: Required<OrkidWidgetTheme>;
|
|
132
|
+
logoUrl?: string;
|
|
133
|
+
brandName?: string;
|
|
134
|
+
showPoweredBy: boolean;
|
|
135
|
+
supportedChains: number[];
|
|
136
|
+
defaultFromToken?: OrkidWidgetToken;
|
|
137
|
+
defaultToToken?: OrkidWidgetToken;
|
|
138
|
+
defaultAmount?: string;
|
|
139
|
+
defaultSlippageBps: number;
|
|
140
|
+
tokenList?: OrkidWidgetToken[];
|
|
141
|
+
gasless: boolean;
|
|
142
|
+
partnerId?: string;
|
|
143
|
+
onQuote?: (res: OrkidResponse) => void;
|
|
144
|
+
onSolve?: (res: OrkidResponse) => void;
|
|
145
|
+
onError?: (error: string) => void;
|
|
146
|
+
}
|
|
147
|
+
declare const OrkidSwapContext: react.Context<OrkidSwapContextValue | undefined>;
|
|
148
|
+
declare function useOrkidSwapContext(): OrkidSwapContextValue;
|
|
149
|
+
|
|
150
|
+
declare const defaultLightTheme: Required<OrkidWidgetTheme>;
|
|
151
|
+
declare const defaultDarkTheme: Required<OrkidWidgetTheme>;
|
|
152
|
+
declare function resolveTheme(partial?: OrkidWidgetTheme): Required<OrkidWidgetTheme>;
|
|
153
|
+
declare function themeToCssVariables(theme: Required<OrkidWidgetTheme>): Record<string, string>;
|
|
154
|
+
|
|
155
|
+
export { OrkidSwapContext, OrkidSwapIframe, OrkidSwapProvider, type OrkidSwapProviderProps, OrkidSwapWidget, type OrkidSwapWidgetProps, type OrkidWalletMode, type OrkidWidgetTheme, type OrkidWidgetToken, defaultDarkTheme, defaultLightTheme, mountOrkidSwap, resolveTheme, themeToCssVariables, useOrkidSwapContext };
|