import React from "react";
import { OrderlyProvider, OrderlyConfigProvider } from "@orderly.network/react";
import { useOrderbook, useOrderEntry, useAccount } from "@orderly.network/hooks";
// 1. Root configuration wrapper
export function App({ children }) {
return (
<OrderlyConfigProvider brokerId="your_broker_id" networkId="testnet">
<OrderlyProvider>{children}</OrderlyProvider>
</OrderlyConfigProvider>
);
}
// 2. Custom Trading Component using Headless Hooks
export function CustomTradingConsole() {
const { state } = useAccount();
const [orderbook] = useOrderbook("PERP_ETH_USDC");
const { onSubmit } = useOrderEntry({
symbol: "PERP_ETH_USDC",
side: "BUY",
order_type: "LIMIT"
});
const handlePlaceOrder = async () => {
try {
const result = await onSubmit({
order_price: "3000",
order_quantity: "0.1"
});
console.log("Order submitted successfully:", result);
} catch (err) {
console.error("Order submission failed:", err);
}
};
return (
<div className="trading-console">
<h3>Account Status: {state.status}</h3>
<div className="orderbook-preview">
<h4>Orderbook (Bids)</h4>
{orderbook.bids?.slice(0, 5).map((bid, i) => (
<div key={i}>
{bid.price} - {bid.quantity}
</div>
))}
</div>
<button onClick={handlePlaceOrder} disabled={state.status !== "authenticated"}>
Place Buy Limit Order (0.1 ETH @ 3000)
</button>
</div>
);
}