This document provides a comprehensive guide to the Glass Mode (Transparent) theme implementation in KanaDojo. This "Special" theme uses a wallpaper-based background with semi-transparent, blurred UI layers to create a premium, modern aesthetic inspired by high-end gaming and chess platforms.
The Glass Mode theme deviates from traditional "flat" or "solid color" themes by:
- Transparency: Using alpha-channel OKLCH colors for UI surfaces.
- Depth: Leveraging
backdrop-filter: blur()to create separation from the background. - Immersion: Applying a fixed-position wallpaper that stays steady while content scrolls.
The theme is defined in features/Preferences/data/themes.ts under the Special group.
Theme Object:
{
id: 'neon-city-glass',
backgroundColor: 'oklch(0% 0 0 / 0)', // Fully transparent base
mainColor: 'oklch(100% 0 0)', // High contrast white
secondaryColor: 'oklch(85% 0 0)', // Muted light gray
}Because standard theme generation assumes solid colors, glass themes require specialized overrides to ensure card and border transparency.
In themes.ts, we use helper functions:
getModifiedCardColor(themeId, cardColor): Returns a semi-transparent OKLCH for theneon-city-glasstheme.getModifiedBorderColor(themeId, borderColor): Returns a subtle, thin white border with low opacity.
The wallpaper is managed at the layout level in app/ClientLayout.tsx.
style={{
...(effectiveTheme === 'neon-city-glass' ? {
backgroundImage: "url('/wallpapers/neonretrocarcity.jpg')",
backgroundSize: 'cover',
backgroundPosition: 'center',
backgroundAttachment: 'fixed'
} : {})
}}To maintain readability on top of a photographic background, we apply backdrop-blur-xl to main containers. This is implemented in components like MainMenu/index.tsx:
<div className={clsx(
'rounded-2xl bg-[var(--card-color)]',
'backdrop-blur-xl',
// ... other classes
)}>- Wallpaper Directory:
/public/wallpapers/ - Source Images:
data/wallpapers-source/(excluded from git) - Manifest:
features/Preferences/data/wallpapers.generated.ts(auto-generated) - Formats: AVIF (primary) + WebP (fallback)
- Sizes: 1920w, 2560w, 3840w per wallpaper
- Processing: Run
npm run images:processto regenerate - Caching: 1-year immutable cache headers via
next.config.tsandvercel.json - Dynamic: Premium themes are auto-generated from available wallpapers — no code changes needed
When testing variations of this theme:
- Transparency Check: Ensure the wallpaper is visible through the cards.
- Blur Check: Verify that elements behind the cards are blurred, providing focus.
- Readability Check: Verify that
mainColor(White) remains legible against the blurred background. - Scroll Stability: The
background-attachment: fixedproperty ensures the car and city background don't move when the user scrolls the character grid.
- Button Styling: Classic buttons using solid
--main-colormay appear opaque. If a more glassy look is desired for buttons, consider using abg-opacitymodifier or custom glass variables. - Performance: High blur values (
backdrop-blur-xl) and fixed backgrounds can be heavy on mobile devices. Monitor rendering performance if more complex wallpapers are added.
Last Updated: February 2026