Trade Box
solanaui/trade-boxFreeComponent
A perpetual trading form with long/short toggle, token input, leverage slider, detail rows, and submit action.
Live preview
live · rendered by the registry
Rendered by solanaui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://www.solanaui.dev/r/trade-box.jsonSource
1"use client";23import { LeverageSlider } from "@/registry/sol/leverage-slider";4import { TokenInput } from "@/registry/sol/token-input";5import { TradeButtons } from "@/registry/sol/trade-buttons";6import { Button } from "@/components/ui/button";7import { Separator } from "@/components/ui/separator";8import type { DetailRow } from "@/registry/lib/types";9import { cn } from "@/lib/utils";1011type TradeBoxDetail = DetailRow;1213interface TradeBoxProps {14 tokens: { icon: string; symbol: string }[];15 defaultToken?: string;16 balance?: string;17 labels?: [string, string];18 defaultSide?: string;19 leverageMin?: number;20 leverageMax?: number;21 leverageDefault?: number;22 leverageStep?: number;23 details?: TradeBoxDetail[];24 submitLabel?: string;25 onSubmit?: () => void;26 className?: string;27}2829const TradeBox = ({30 tokens,31 defaultToken,32 balance,33 labels = ["Long", "Short"],34 defaultSide = "long",35 leverageMin = 1,36 leverageMax = 50,37 leverageDefault = 5,38 leverageStep = 1,39 details,40 submitLabel = "Open Long",41 onSubmit,42 className,43}: TradeBoxProps) => {44 return (45 <div className={cn("flex flex-col gap-4 border rounded-lg p-4", className)}>46 <TradeButtons defaultValue={defaultSide} labels={labels} />47 <Separator />48 <div className="flex flex-col gap-2">49 <TokenInput50 tokens={tokens}51 defaultToken={defaultToken}52 balance={balance}53 />54 </div>55 <LeverageSlider56 min={leverageMin}57 max={leverageMax}58 defaultValue={[leverageDefault]}59 step={leverageStep}60 />61 {details && details.length > 0 && (62 <>63 <Separator />64 <div className="flex flex-col gap-1.5 text-sm">65 {details.map((detail) => (66 <div key={detail.label} className="flex justify-between">67 <span className="text-muted-foreground">{detail.label}</span>68 <span className={detail.className}>{detail.value}</span>69 </div>70 ))}71 </div>72 </>73 )}74 <Button className="w-full" size="lg" onClick={onSubmit}>75 {submitLabel}76 </Button>77 </div>78 );79};8081export type { TradeBoxProps, TradeBoxDetail };82export { TradeBox };
What it pulls in
Other registry items
Files it writes
More from solanaui
All 31 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Action Boxaction-box | solanaui | Components | Free | no deps | |
| Activity Feedactivity-feed | solanaui | Components | Free | 1 dep | |
| Address Displayaddress-display | solanaui | Components | Free | 1 dep | |
| Auth Cardauth-card | solanaui | Components | Free | no deps | |
| Health Barhealth-bar | solanaui | Components | Free | no deps | |
| Leverage Sliderleverage-slider | solanaui | Components | Free | no deps | |
| NFT Cardnft-card | solanaui | Components | Free | no deps | |
| Order Bookorder-book | solanaui | Components | Free | no deps |
