orderly-sdk-ui-components
Reference guide for UI components in the Orderly Network SDK.
Install
mkdir -p .claude/skills/orderly-sdk-ui-components && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/15179" && unzip -o skill.zip -d .claude/skills/orderly-sdk-ui-components && rm skill.zipInstalls to .claude/skills/orderly-sdk-ui-components
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
A comprehensive guide to all UI components available in the Orderly Network SDK for building decentralized exchange applications.Key capabilities
- →Install base UI components for decentralized exchange applications
- →Install domain-specific UI components like order entry and positions management
- →Set up the OrderlyThemeProvider for consistent styling
- →Utilize layout components like Box, Flex, and Grid
- →Implement form components such as Button, Input, and Select
- →Apply custom theming to UI components
How it works
The skill provides guidance on installing, setting up, and using UI components from the Orderly SDK, which are built with React, Radix UI, and Tailwind CSS, for decentralized exchange applications.
Inputs & outputs
When to use orderly-sdk-ui-components
- →Building a decentralized trading UI
- →Implementing an order entry widget
- →Setting up the Orderly ThemeProvider
About this skill
Orderly SDK UI Components
A comprehensive guide to all UI components available in the Orderly Network SDK for building decentralized exchange applications.
Overview
The Orderly SDK provides a complete UI component library built with React, Radix UI primitives, and Tailwind CSS. Components are organized into two main categories:
- Base UI Components (
@orderly.network/ui) - Foundational UI primitives like buttons, inputs, dialogs, tables - Domain-Specific Components (
@orderly.network/ui-*) - Trading-specific widgets like order entry, positions, charts
Installation
Base UI Package
npm install @orderly.network/ui
# or
yarn add @orderly.network/ui
# or
pnpm add @orderly.network/ui
Domain-Specific Packages
# Order Entry
npm install @orderly.network/ui-order-entry
# Positions Management
npm install @orderly.network/ui-positions
# Orders Management
npm install @orderly.network/ui-orders
# Leverage Controls
npm install @orderly.network/ui-leverage
# Take-Profit/Stop-Loss
npm install @orderly.network/ui-tpsl
# Deposit/Withdraw/Transfer
npm install @orderly.network/ui-transfer
# Wallet Connection
npm install @orderly.network/ui-connector
# Chain Selection
npm install @orderly.network/ui-chain-selector
# TradingView Integration
npm install @orderly.network/ui-tradingview
# Share PnL
npm install @orderly.network/ui-share
# App Scaffolding
npm install @orderly.network/ui-scaffold
Setup
Import Styles
import "@orderly.network/ui/dist/styles.css";
Theme Provider
import { OrderlyThemeProvider } from "@orderly.network/ui";
function App() {
return (
<OrderlyThemeProvider>
<YourApp />
</OrderlyThemeProvider>
);
}
Base UI Components (@orderly.network/ui)
Layout Components
Box
A polymorphic container component with flexbox utilities.
import { Box } from "@orderly.network/ui";
<Box p={4} m={2} r="lg" className="custom-class">
Content
</Box>
Props:
| Prop | Type | Description |
|---|---|---|
p | number | string | Padding |
px, py | number | string | Horizontal/vertical padding |
m | number | string | Margin |
r | "sm" | "md" | "lg" | "xl" | Border radius |
intensity | number | Background intensity |
Flex
Flexbox layout container.
import { Flex } from "@orderly.network/ui";
<Flex direction="row" gap={2} justify="between" align="center">
<div>Item 1</div>
<div>Item 2</div>
</Flex>
Props:
| Prop | Type | Description |
|---|---|---|
direction | "row" | "column" | Flex direction |
gap | number | Gap between items |
justify | "start" | "center" | "end" | "between" | "around" | Justify content |
align | "start" | "center" | "end" | "stretch" | Align items |
wrap | boolean | Flex wrap |
Grid
CSS Grid layout container.
import { Grid } from "@orderly.network/ui";
<Grid cols={3} gap={4}>
<div>Cell 1</div>
<div>Cell 2</div>
<div>Cell 3</div>
</Grid>
Form Components
Button
Customizable button with multiple variants and colors.
import { Button } from "@orderly.network/ui";
<Button
variant="contained"
color="primary"
size="md"
fullWidth
loading={isLoading}
disabled={isDisabled}
onClick={handleClick}
>
Submit Order
</Button>
Props:
| Prop | Type | Description |
|---|---|---|
variant | "text" | "outlined" | "contained" | "gradient" | Button style variant |
color | "primary" | "secondary" | "success" | "danger" | "warning" | "buy" | "sell" | "gray" | Button color |
size | "xs" | "sm" | "md" | "lg" | "xl" | Button size |
fullWidth | boolean | Full width button |
loading | boolean | Show loading spinner |
disabled | boolean | Disable button |
asChild | boolean | Render as child element |
Size Reference:
xs: 24px heightsm: 28px heightmd: 32px heightlg: 40px heightxl: 54px height
Input
Text input with formatting and validation support.
import { Input, TextField, inputFormatter } from "@orderly.network/ui";
// Basic Input
<Input
placeholder="Enter amount"
size="md"
color="default"
disabled={false}
/>
// With Formatter (numeric input)
<Input
placeholder="0.00"
formatters={[inputFormatter.numberFormatter]}
onValueChange={(value) => setValue(value)}
/>
// TextField with Label
<TextField
label="Price"
placeholder="Enter price"
suffix="USDC"
error="Invalid price"
/>
Props:
| Prop | Type | Description |
|---|---|---|
size | "xs" | "sm" | "md" | "lg" | "xl" | Input size |
color | "default" | "success" | "danger" | "warning" | Input color state |
disabled | boolean | Disable input |
prefix | ReactNode | Prefix element |
suffix | ReactNode | Suffix element |
formatters | InputFormatter[] | Value formatters |
onValueChange | (value: string) => void | Value change handler |
Built-in Formatters:
import { inputFormatter } from "@orderly.network/ui";
inputFormatter.numberFormatter // Numeric values only
inputFormatter.currencyFormatter // Currency formatting
inputFormatter.dpFormatter(2) // Decimal places limiter
Select
Dropdown select component.
import { Select, SelectItem } from "@orderly.network/ui";
<Select
value={selected}
onValueChange={setSelected}
placeholder="Select option"
size="md"
>
<SelectItem value="option1">Option 1</SelectItem>
<SelectItem value="option2">Option 2</SelectItem>
<SelectItem value="option3">Option 3</SelectItem>
</Select>
Props:
| Prop | Type | Description |
|---|---|---|
value | string | Selected value |
defaultValue | string | Default value |
onValueChange | (value: string) => void | Change handler |
placeholder | string | Placeholder text |
size | "xs" | "sm" | "md" | "lg" | Select size |
error | boolean | Error state |
showCaret | boolean | Show dropdown arrow |
maxHeight | number | Max dropdown height |
Checkbox
Checkbox input component.
import { Checkbox } from "@orderly.network/ui";
<Checkbox
checked={isChecked}
onCheckedChange={setIsChecked}
id="terms"
>
Accept terms and conditions
</Checkbox>
Switch
Toggle switch component.
import { Switch } from "@orderly.network/ui";
<Switch
checked={isEnabled}
onCheckedChange={setIsEnabled}
size="default"
/>
Slider
Range slider with marks and custom styling.
import { Slider } from "@orderly.network/ui";
<Slider
value={[50]}
onValueChange={(values) => setValue(values[0])}
min={0}
max={100}
step={1}
color="primary"
marks={[
{ value: 0, label: "0%" },
{ value: 25, label: "25%" },
{ value: 50, label: "50%" },
{ value: 75, label: "75%" },
{ value: 100, label: "100%" },
]}
/>
Props:
| Prop | Type | Description |
|---|---|---|
value | number[] | Current value(s) |
onValueChange | (values: number[]) => void | Change handler |
min | number | Minimum value |
max | number | Maximum value |
step | number | Step increment |
color | "primary" | "primaryLight" | "buy" | "sell" | Slider color |
marks | SliderMarks[] | Mark points |
disabled | boolean | Disable slider |
Typography
Text
Flexible text component with styling variants.
import { Text } from "@orderly.network/ui";
<Text
size="sm"
weight="semibold"
color="primary"
intensity={80}
as="span"
>
Account Balance
</Text>
Props:
| Prop | Type | Description |
|---|---|---|
size | "3xs" | "2xs" | "xs" | "sm" | "base" | "lg" | "xl" | "2xl" | "3xl" | Font size |
weight | "regular" | "semibold" | "bold" | Font weight |
color | "inherit" | "neutral" | "primary" | "secondary" | "warning" | "danger" | "success" | "buy" | "sell" | Text color |
intensity | 12 | 20 | 36 | 54 | 80 | 98 | Opacity intensity |
as | "span" | "div" | "p" | "label" | HTML element |
copyable | boolean | Enable copy on click |
Numeral
Formatted numeric display.
import { Numeral } from "@orderly.network/ui";
<Numeral value={12345.67} dp={2} prefix="$" />
// Renders: $12,345.67
<Numeral
value={0.0534}
dp={4}
suffix="%"
coloring // Green for positive, red for negative
/>
Overlay Components
Dialog
Modal dialog component.
import {
Dialog,
DialogContent,
DialogHeader,
DialogTitle,
DialogBody,
DialogFooter,
DialogClose
} from "@orderly.network/ui";
<Dialog open={isOpen} onOpenChange={setIsOpen}>
<DialogContent>
<DialogHeader>
<DialogTitle>Confirm Order</DialogTitle>
</DialogHeader>
<DialogBody>
Are you sure you want to place this order?
</DialogBody>
<DialogFooter>
<DialogClose asChild>
<Button variant="outlined">Cancel</Button>
</DialogClose>
<Button color="primary" onClick={handleConfirm}>
Confirm
</Button>
</DialogFooter>
</DialogContent>
</Dialog>
DialogContent Props:
| Prop | Type | Description |
|---|---|---|
size | "sm" | "md" | "lg" | Dialog size |
closable | boolean | Show close button |
onCloseAutoFocus | (e: Event) => void | Close focus handler |
Sheet
Bottom/side sheet component.
import {
Sheet,
SheetContent,
SheetHeader,
SheetTitle,
SheetTrigger
} from "@orderly.network/ui";
<Sheet>
<SheetTrigger asChild>
<Button>Open Menu</Button>
</SheetTrigger>
<SheetContent side="bottom">
<SheetHeader>
<SheetTitle>Options</SheetTitle>
</SheetHeader>
{/* Content */}
</SheetContent>
</Sheet>
Content truncated.
When not to use it
- →When building a UI that does not require decentralized exchange specific components
- →When not using React, Radix UI, or Tailwind CSS
- →When not building an application for the Orderly Network
Limitations
- →Requires React version ^18.0.0
- →Requires Tailwind CSS version ^3.4.x
- →Requires Radix UI ^1.x versions
How it compares
This skill offers a specialized library of UI components tailored for decentralized exchange applications, providing pre-built trading widgets and theming capabilities that generic UI libraries lack.
Compared to similar skills
orderly-sdk-ui-components side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| orderly-sdk-ui-components (this skill) | 0 | 5mo | Review | Intermediate |
| ai-model-web | 1 | 2mo | Review | Intermediate |
| flowglad-pricing-ui | 1 | 5mo | No flags | Beginner |
| podcast-generation | 1 | 3mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
ai-model-web
TencentCloudBase
Use this skill when developing browser/Web applications (React/Vue/Angular, static websites, SPAs) that need AI capabilities. Features text generation (generateText) and streaming (streamText) via @cloudbase/js-sdk. Built-in models include Hunyuan (hunyuan-2.0-instruct-20251111 recommended) and DeepSeek (deepseek-v3.2 recommended). NOT for Node.js backend (use ai-model-nodejs), WeChat Mini Program (use ai-model-wechat), or image generation (Node SDK only).
flowglad-pricing-ui
flowglad
Build pricing pages, pricing cards, and plan displays with Flowglad. Use this skill when creating pricing tables, displaying subscription options, or building plan comparison interfaces.
podcast-generation
microsoft
Generate AI-powered podcast-style audio narratives using Azure OpenAI's GPT Realtime Mini model via WebSocket. Use when building text-to-speech features, audio narrative generation, podcast creation from content, or integrating with Azure OpenAI Realtime API for real audio output. Covers full-stack implementation from React frontend to Python FastAPI backend with WebSocket streaming.
convex-realtime
waynesutton
Patterns for building reactive apps including subscription management, optimistic updates, cache behavior, and paginated queries with cursor-based loading
wagmi-development
wevm
Creates Wagmi features across all layers - core actions, query options, framework bindings. Use when adding new actions, hooks, or working across packages/core, packages/react, packages/vue.
query-layer
EpicenterHQ
Query layer patterns for consuming services with TanStack Query, error transformation, and runtime dependency injection. Use when implementing queries/mutations, transforming service errors for UI, or adding reactive data management.