Skip to content

Repository files navigation

@pmxt/components

Embeddable prediction market UI components built with React and Tailwind CSS. Drop a full trading interface into any React app with a few imports.

Built on @pmxt/sdk for data fetching and order management.

Install

npm install @pmxt/components

Peer dependencies

Required:

  • react >= 18
  • react-dom >= 18
  • lightweight-charts ^5

Optional (only needed if you use wallet or framework-specific components):

  • wagmi ^2
  • @rainbow-me/rainbowkit ^2
  • next >= 14
  • canvas-confetti ^1

Setup

Tailwind CSS

Add the @source directive to your CSS entry file so Tailwind can detect the classes used by these components:

@import"tailwindcss";
@source"node_modules/@pmxt/components/dist";

Theming

All components are themed through CSS custom properties. Define them on :root (or any ancestor element) to match your brand:

:root {
/* Brand */--brand-primary:#00a36c;
--brand-primary-hover:#008f5d;
/* Backgrounds */--bg-main:#ffffff;
--bg-surface:#ffffff;
--bg-surface-hover:#f3f4f6;
--bg-header:#ffffff;
--bg-input:#f4f4f5;
/* Text */--text-primary:#111827;
--text-secondary:#6b7280;
--text-muted:#9ca3af;
--text-inverse:#ffffff;
/* Borders */--border-subtle:rgba(0,0,0,0.06);
--border-strong:rgba(0,0,0,0.12);
/* Status */--color-live:#ef4444;
--color-yes:#00a36c;
--color-no:#ef4444;
/* Shape */--radius-full:9999px;
--radius-card:16px;
--radius-btn:9999px;
--shadow-sm: none;
--shadow-card: none;
/* Typography */--font-primary:"Plus Jakarta Sans", sans-serif;
--font-secondary:"Plus Jakarta Sans", sans-serif;
}

Override any variable and every component picks up the changes automatically.

Quick Example

import{EventCard}from"@pmxt/components";functionApp(){return(<EventCardtitle="Will BTC exceed $100k by July 2026?"imageUrl="/btc.png"outcomes={[{label: "Yes",probability: 0.72},{label: "No",probability: 0.28},]}/>);}

Components

Market Display

ComponentDescription
EventCardCard with market image, title, and outcome sliders
MarketCardCompact card for a single binary market
MarketRowRow layout for market lists
EventTableSortable table of events with columns for price, volume, and change
FeaturedCarouselHorizontally scrollable featured events

Trading

ComponentDescription
TradingWidgetFull trading interface (chart + order panel)
TradePanelStandalone order entry panel (buy/sell with amount input)
OrderDrawerSlide-up order signing drawer (requires wagmi)
FundsModalDeposit / withdraw modal (requires wagmi)

Outcomes

ComponentDescription
OutcomeRowInteractive outcome row with price and probability
OutcomeSliderDraggable probability slider for an outcome
OutcomeSidebarItemCompact outcome display for sidebars

Charts

ComponentDescription
LightweightChartTradingView Lightweight Charts wrapper with time-range controls
SparklineInline sparkline for price history
ChartActionsTime range selector (1H, 6H, 1D, 1W, 1M, ALL)

Layout & Navigation

ComponentDescription
ProfileButtonWallet connection button (requires RainbowKit)
SidebarSectionCollapsible sidebar section
SidebarBannerListSidebar banner display
ConnectionStatusWebSocket connection indicator

See COMPONENTS.md for the full visual catalog with props and usage examples.

Storybook

Browse and interact with all components locally:

npm run storybook

Opens at http://localhost:6006.

Related

About

Embeddable prediction market UI components built with React and Tailwind CSS

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages