Interactive Components

Rich interactive experiences — chat interfaces, floating panels, AI tool displays, and calculators.

OroChatMessage + OroChatInput Custom

Chat interface components ported from nuxt-claude-devtools-pro. Messages are role-styled: user gets an amber gradient bubble (right-aligned), assistant gets a subtle glass bubble (left-aligned), system is centered and minimal. The input supports drag-drop file attachments, textarea auto-grow, and Enter-to-send with Shift+Enter for newlines.

Hello! I'm the ORO assistant. I can help you manage nodes, check earnings, and deploy workloads.

Invalid Date

Show me my node status

Invalid Date

Your node "Alpha" is online with 4 cores and 16GB RAM. Current earnings today: $3.82. CPU utilization is at 45%.

Invalid Date
Enter to send, Shift+Enter for newline
OroChatMessage — rich variants Custom

Full showcase of OroChatMessage props: timestamp (shown on hover), senderNickname + senderColor (multi-user chats), modelLabel (which model responded), avatar (custom icon), and system role for meta messages. The default slot is used here so markdown renders inline.

OroChatInput — states Custom

Input with disabled state, @mention autocomplete, processing state with stop button, and attachmentsEnabled toggle. Drag-drop and file picker are built-in when attachments are enabled.

Disabled

Enter to send, Shift+Enter for newline

With @mention (type @cl)

Enter to send, Shift+Enter for newline

No attachments

Enter to send, Shift+Enter for newline

Toggle disabled (off)

Enter to send, Shift+Enter for newline
OroToolCallBlock Custom

Displays AI tool/function calls with expandable args and results. Four status states: pending (waiting), running (spinner), success (green check), error (red X). Click to expand and inspect the call details.

OroThinkingBlock Custom

Collapsible "thinking" disclosure for AI reasoning transparency. Defaults to collapsed — users click to inspect the AI's thought process. Essential for building trust in AI-powered interfaces.

Step 1 — load the node inventory from the registry. Step 2 — filter out maintenance and offline nodes. Step 3 — compute per-region latency from the operator's IP geolocation. Step 4 — rank candidates by (latency * 0.4 + cost * 0.3 + reliability * 0.3). Step 5 — surface the top 5 options with a short rationale for each.

OroEarningsCalculator Custom

Interactive earnings estimator from oro-cli. Three sliders for CPU, RAM, and GPU with real-time calculation. Configurable rates and defaults via props. The result area supports a scoped slot for custom display.

Estimate your earnings

8
16
0
Estimated earnings
~173 $/mo

Custom rates + default slot override

Premium tier ($/month)

16
64
2
Projected monthly revenue
$2742
Paid out weekly in USDC
OroFloatingPanel — drag + resize Custom

Draggable and resizable floating panel from nuxt-claude-devtools-pro. Uses usePanelInteraction composable for drag/resize. Header slot receives startDrag function. Resize from any edge. Mobile: becomes full-width bottom sheet.

Floating Panel

Drag the header to reposition. Resize from any edge or corner.

Supports: drag, 8-directional resize, minimized state, mobile bottom sheet, layout change events.

OroFloatingPanel — multi-panel + focus Custom

Three panels competing for focus. Click any panel — its @focus event fires and it jumps to the top of the z-stack.

Panel 1

Click me to focus. Last layout: —

Panel 2

Click me to focus. Last layout: —

Panel 3

Click me to focus. Last layout: —

OroFloatingPanel — minimized + mobile sheet Custom

Minimized hides the body, keeping only the header — useful for dock-style toggles. isMobile forces the panel into a full-width bottom sheet, which is what the component switches to automatically on small screens.

Dockable panel
Body is hidden when minimized — the header stays draggable.
Mobile bottom sheet
Forces isMobile: true — ignores initialPosition and fills the viewport bottom.