Dark Mode
Ledger UI includes complete dark mode support at the token, theme, and component levels.
Enabling Dark Mode
import { GtcxConfigProvider } from '@gtcx/theme';
function App() {
return (
<GtcxConfigProvider mode="dark">
{/* All components render in dark mode */}
</GtcxConfigProvider>
);
}How It Works
When mode="dark" is set:
- Token layer:
darkSemanticColorsoverrides are merged into the base semantic colors - Theme layer: Ant Design's
darkAlgorithmis applied to the theme config - Component layer: All Ant Design components automatically use dark variants
Dark Token Values
| Token | Light | Dark |
|---|---|---|
| Text primary | neutral[900] | neutral[50] |
| Text secondary | neutral[600] | neutral[300] |
| Background | neutral[50] | neutral[950] |
| Surface | white | neutral[900] |
| Surface hover | neutral[100] | neutral[800] |
| Border | neutral[200] | neutral[700] |
| Brand primary | primary[500] | primary[400] |
Dark + Compact
Combine dark mode with compact density:
<GtcxConfigProvider mode="dark" density="compact" />MetronicLayout Dark Sidebar
The MetronicLayout component has its own dark sidebar variant:
<MetronicLayout
variant="dark-sidebar"
sidebarTheme="dark"
// ... other props
/>This renders a zinc-950 dark sidebar regardless of the global theme mode. The content area follows the global theme.
Custom Dark Theme
Override dark mode tokens:
import { createAntdTheme } from '@gtcx/theme';
const darkTheme = createAntdTheme({
mode: 'dark',
colorPrimary: '#38bdf8', // Lighter blue for dark backgrounds
colorBgBase: '#0a0a0a', // Near-black base
});