MERXI
Shared UI. Brand-specific identity.
All web projects use shadcn/ui by default, with their own brand tokens and fonts. This is the live MERXI component implementation.
MERXI Core · v2.6 · 10 Sep 2026
System architecture
A product-first standard for a premium prediction, sports, and games platform. Bright by default, exact with data, mobile-first in use, and expressive only where the message earns it.
#145BFFArchitecture
MERXI owns the visual language.
shadcn/ui · Base Nova
Shared web components
Product repositories
Product integration layer
Product teams
Domain patterns
Brand + Product
Documentation & QA
Base UI + locally adopted shadcn source
Product repositories should use Base UI for accessible behavior. When a selected shadcn pattern is useful, copy it into that product, rename it by job, and bind it to MERXI semantic tokens. No component implementation ships from the Brand Book.
Radix or React Aria
Adopt a primitive only when it solves a measured behavior or accessibility gap. Wrap it before application teams use it.
Material, Ant, Carbon
Their visual assumptions are too complete for MERXI. They may inform a one-off enterprise tool, but they do not define product or campaign appearance.
Typography
Editorial voice. Trading-floor precision.
Geist
Brand, product, editorial, navigation
Read the market.IBM Plex Sans Condensed
Odds, probability, balance, score, P&L
1.86 62.4% −640.00Geist + IBM Plex Sans Condensed
Final production authority for narrative and changing data.
--font-display · --font-text · --font-dataMiSans · MiSans TC · Pretendard
简体中文、繁體中文、한국어 · 字体与换行均按语言切换
读懂市场,做出判断。| Role | Desktop px | Mobile px | Weight | Tracking |
|---|---|---|---|---|
| Hero | 96/92 | 52/52 | 700 | −3.5% / −2.5% |
| Display | 72/72 | 44/48 | 700 | −3% / −2% |
| H1 | 56/60 | 36/40 | 700 | −2.5% |
| H2 | 40/44 | 30/34 | 600–700 | −2% |
| H3 | 28/32 | 24/30 | 600 | −1.5% |
| Market title | 20/28 | 18/24 | 600 | −1% |
| Body | 16/24 | 16/24 | 400 | 0 |
| Control | 15/20 | 15/20 | 500–600 | 0 |
| Metadata | 14/20 | 14/20 | 400–500 | 0 |
| Caption | 12/16 | 12/16 | 500–700 | +6% max |
Color
Color has a job—not a product territory.
#FCFAF4Default canvas
Text on fill: Ink#145BFFPrimary mark, action, selection, core curve
Text on fill: White#0A3FB8Depth, dense data, focus
Text on fill: White#D79B18Value, reward, VIP, balance emphasis
Text on fill: Ink#FF6A1AEvent time, urgency, movement alert
Text on fill: Ink#11BED0Live state and realtime marker only
Text on fill: Ink#10233DPrimary content; never a large dark environment
Text on fill: Warm WhiteEditorial and product copy
Dense, high-contrast fields
Primary action and selection
Fail for normal text; use Ink on their fills
Components never choose Cloud, Pearl, Mist, or White directly.
Text roles stay independent from borders and decorative color.
Each state defines background, border, solid, and text values.
Financial color convention is explicit: use data-financial-convention="red-up" when selected. Language alone never changes gain or loss colors. Keep signs and labels.
105° · OKLab · one field
Text stays on a solid semantic surface or measured scrim. Never use a brand gradient as a numeric scale. Add neutral noise only to large raster exports when banding is visible.
Product language
One user map. Precise internal taxonomy.
My Bets lives inside Sports or Markets activity. Account uses the avatar entry. Every tab keeps the same order across mobile and web.
Search spans Sports, Markets, Live, and Games.
Use in data models, reports, filters, and editorial metadata.
Never collapse the content edge below the approved gutter.
Bet, deposit, confirm, and other high-value mobile actions.
Absolute minimum for every interactive control.
Admin density first; user market readability second.
Choose by density and never invent an in-between value.
Controls, cards, and expressive containers respectively.
Name the state, explain impact, and provide the next action.
Name the state, explain impact, and provide the next action.
Replace stale price with — and name the state.
Name the state, explain impact, and provide the next action.
Name the state, explain impact, and provide the next action.
Name the state, explain impact, and provide the next action.
Data visualization
One contract. Two engines. One table layer.
Lightweight Charts
Fast probability, contract price, and OHLCV exploration with TradingView attribution and an exact-value table fallback.
Open user reference Admin analysisECharts
Multi-series operational analysis, small multiples, zoom, risk, settlement, and accessible descriptions.
Open Admin reference Recommended operational-data targetTanStack Table v9 (target)
Product repositories should use it for sortable, filterable, unit-aware grids. This Brand Book ships semantic native-table references only; it does not install TanStack Table.
Read the matrix Recommended marketing export targetECharts SSR + MERXI templates (target)
Implementation contract for reproducible chart exports with an editorial wrapper. This Brand Book does not run or ship the SSR export pipeline.
Open curve rulesGovernance
Small team. Maintained references. Clear release gates.
DTCG JSON + CSS
`public/brand/merxi-tokens.json` and the CSS token files are maintained manually. The build checker verifies their shared color, type, interaction, version, and date subset; it does not claim full code generation.
Brand defines. Product proves.
Brand owns identity and semantic decisions. Product owns real states and usability. Engineering owns implementation quality.
Feedback, never theatre.
Motion confirms state change, preserves orientation, and respects reduced-motion. MERXI does not maintain a decorative motion demo.
Release check
Definition of ready
Every required line is verified before a pattern is approved.- Uses semantic tokens; no private brand hex values
- Works at 320, 375, 390, and 430 px without page-level clipping
- Primary mobile controls are 48 px; every target is at least 44 × 44 px
- Keyboard focus is visible and state is never communicated by color alone
- Odds, probability, money, time, source, and freshness are explicitly labeled
- Loading, empty, suspended, offline, settled, error, and long-copy states exist
- Figma name, code token, documentation, and downloadable source agree