Theming
Theming

Theming

Ledger UI uses a token-driven theming system built on Ant Design's ConfigProvider. All visual styling flows from design tokens — consuming applications customize their look by overriding tokens, not writing CSS.

How It Works

@gtcx/tokens (primitives + semantic)

@gtcx/theme (createAntdTheme → Ant Design ConfigProvider)

Your App (GtcxConfigProvider wraps everything)

Basic Usage

import { GtcxConfigProvider } from '@gtcx/theme';
 
function App() {
  return (
    <GtcxConfigProvider>
      {/* All components inherit the theme */}
    </GtcxConfigProvider>
  );
}

Custom Theme

Override any token to create a platform-specific visual identity:

import { GtcxConfigProvider, createAntdTheme } from '@gtcx/theme';
 
const myTheme = createAntdTheme({
  colorPrimary: '#0284c7',     // Sky blue primary
  colorBgBase: '#ffffff',       // White background
  borderRadius: 8,              // Rounded corners
});
 
function App() {
  return (
    <GtcxConfigProvider theme={myTheme}>
      {/* Components use your custom tokens */}
    </GtcxConfigProvider>
  );
}

Available Token Overrides

createAntdTheme() accepts all Ant Design seed tokens:

TokenDefaultDescription
colorPrimary#0ea5e9Primary brand color
colorBgBase#ffffffBase background
colorTextBase#0f172aBase text color
borderRadius6Default border radius
fontSize14Base font size
fontFamilyInter, sans-serifFont stack

Theme Modes

// Light mode (default)
<GtcxConfigProvider mode="light" />
 
// Dark mode
<GtcxConfigProvider mode="dark" />
 
// Compact density
<GtcxConfigProvider density="compact" />
 
// Dark + Compact
<GtcxConfigProvider mode="dark" density="compact" />

Component-Level Tokens

The theme maps ~80% of Ant Design's component tokens including Layout, Menu, Button, Card, Input, Table, Modal, Form, Typography, and Tag.

See Tokens for the full token reference.