AIKit uses CSS variables for theming, in the --g-aikit-* namespace. Values fall back to Gravity UI's --g-color-* system so AIKit picks up your existing uikit theme automatically.
Always import common.css, plus the matching theme variant:
import '@gravity-ui/aikit/themes/common';
import '@gravity-ui/aikit/themes/light'; // or '/dark'Switching between themes is done via @gravity-ui/uikit's <ThemeProvider>, which writes data-theme="light" or data-theme="dark" onto a root element:
import {ThemeProvider} from '@gravity-ui/uikit';
<ThemeProvider theme="dark">
<ChatContainer …/>
</ThemeProvider>;variables.css is deprecated — keep importing common.css only.
Defined under .g-root, applied regardless of theme.
| Variable | Default | Description |
|---|---|---|
--g-aikit-color-bg-primary |
var(--g-aikit-bg-primary, var(--g-color-base-float)) |
Primary background |
--g-aikit-color-bg-secondary |
#f5f5f5 |
Secondary background |
--g-aikit-color-bg-message-user |
#0077ff |
User message bubble background |
--g-aikit-color-bg-message-assistant |
#f0f0f0 |
Assistant message bubble background |
| Variable | Default | Description |
|---|---|---|
--g-aikit-layout-base-padding-m |
12px |
Base medium padding |
| Variable | Default | Description |
|---|---|---|
--g-aikit-disclaimer-gap |
10px |
Gap inside Disclaimer |
--g-aikit-suggestions-box-shadow |
0 3px 10px rgba(198,172,255,.52) |
Shadow on Suggestions items |
--g-aikit-header-background |
none |
Header background |
| Variable | Default | Description |
|---|---|---|
--g-aikit-ci-color-progress-1 |
green | Low-usage segment |
--g-aikit-ci-color-progress-2 |
orange | Mid-usage segment |
--g-aikit-ci-color-progress-3 |
red | High-usage segment |
| Variable | Default | Description |
|---|---|---|
--g-aikit-shimmer-color-from |
rgba(0,0,0,.35) |
Shimmer gradient start |
--g-aikit-shimmer-color-to |
rgba(0,0,0,.85) |
Shimmer gradient end |
--g-aikit-shimmer-duration |
2.5s |
Animation duration |
--g-aikit-shimmer-gradient-size |
200% |
Gradient size |
| Variable | Default | Description |
|---|---|---|
--g-aikit-history-width |
360px |
History popup width |
--g-aikit-history-max-height |
605px |
History popup max height |
--g-aikit-history-item-height |
24px |
Row height |
| Variable | Default | Description |
|---|---|---|
--g-aikit-prompt-input-panel-max-height |
500px |
Max height of expandable panel |
| Variable | Default | Description |
|---|---|---|
--g-aikit-empty-container-background |
var(--g-color-base-background) |
Empty-state background |
--g-aikit-empty-container-content-gap |
48px |
Gap between content blocks |
--g-aikit-empty-container-padding |
48px 32px |
Empty-state padding |
| Variable | Default | Description |
|---|---|---|
--g-aikit-chat-content-background |
var(--g-color-base-background) |
Content area background |
--g-aikit-chat-content-padding |
derived | Content area padding |
--g-aikit-chat-container-background |
var(--g-color-base-background) |
Container background |
--g-aikit-chat-container-header-background |
var(--g-color-base-background) |
Header band background |
--g-aikit-chat-container-content-background |
var(--g-color-base-background) |
Content band background |
--g-aikit-chat-container-footer-background |
var(--g-color-base-background) |
Footer band background |
--g-aikit-chat-container-content-empty-background |
var(--g-color-base-background) |
Empty-state content background |
--g-aikit-chat-container-content-chat-background |
var(--g-color-base-background) |
Active-chat content background |
--g-aikit-chat-container-footer-empty-background |
var(--g-color-base-background) |
Empty-state footer background |
--g-aikit-chat-container-footer-chat-background |
var(--g-color-base-background) |
Active-chat footer background |
Applied under [data-theme='light']:
| Variable | Value |
|---|---|
--g-aikit-bg-secondary |
#f5f5f5 |
--g-aikit-bg-message-user |
#0077ff |
--g-aikit-bg-message-assistant |
#f0f0f0 |
--g-aikit-text-primary |
#000000 |
--g-aikit-text-secondary |
#666666 |
--g-aikit-text-message-user |
#ffffff |
--g-aikit-text-message-assistant |
#000000 |
--g-aikit-border-color |
#e0e0e0 |
--g-aikit-accent-color |
#0077ff |
--g-aikit-line-brand |
var(--g-aikit-accent-color) |
Applied under [data-theme='dark']:
| Variable | Value |
|---|---|
--g-aikit-bg-secondary |
#2a2a2a |
--g-aikit-bg-message-user |
#0066cc |
--g-aikit-bg-message-assistant |
#2a2a2a |
--g-aikit-text-primary |
#ffffff |
--g-aikit-text-secondary |
#999999 |
--g-aikit-text-message-user |
#ffffff |
--g-aikit-text-message-assistant |
#ffffff |
--g-aikit-border-color |
#404040 |
--g-aikit-accent-color |
#0077ff |
--g-aikit-line-brand |
var(--g-aikit-accent-color) |
--g-aikit-shimmer-color-from |
rgba(255,255,255,.35) |
--g-aikit-shimmer-color-to |
rgba(255,255,255,.85) |
Override at any selector level. Per-component scope is preferred:
.my-chat .g-root {
--g-aikit-color-bg-message-user: #6c5ce7;
--g-aikit-color-bg-message-assistant: #2d3436;
}For one-off overrides inline:
<ChatContainer
className="my-chat"
style={{'--g-aikit-history-width': '480px'} as React.CSSProperties}
…
/>Each --g-aikit-color-* variable falls back to a --g-aikit-* "raw" variable, then to a --g-color-* variable from Gravity UI:
--g-aikit-color-bg-primary
→ var(--g-aikit-bg-primary,
var(--g-color-base-float))
This means: if you already set --g-color-base-float via @gravity-ui/uikit's theming, AIKit picks it up automatically.