@dugyu/luna-core
v0.4.0
Published
Core constants, types, and utilities for the L.U.N.A project
Downloads
1,594
Maintainers
Readme
luna-core
The foundational types package for the LUNA theming system. It provides theme types, color ID/key constants and conversion utilities, and theme resolution (resolver) APIs.
This package does not ship any concrete color values. Color values live in @dugyu/luna-tokens as the single source of truth.
Installation
pnpm add @dugyu/luna-coreWhat’s Inside
- Theme keys:
LunaThemeKey/LunaThemeVariant/LunaThemeMode, plus extensible custom space viaLunaCustomThemeKey - Theme token types:
LunaThemeTokens/LunaCustomThemeTokens/LunaCustomThemeMeta - Color system:
LunaColorId(kebab-case),LunaColorKey(camelCase),LUNA_COLOR_IDS/LUNA_COLOR_KEYS, andcolorIdToColorKey/colorKeyToColorId - Theme resolver:
resolveThemeKeyFromList/resolveThemeObjectFromList/inferThemeMode
Usage
Pair With Tokens (Get Concrete Color Values)
import type { LunaThemeTokens } from '@dugyu/luna-core';
import { lunarisDarkTokens } from '@dugyu/luna-tokens';
const theme: LunaThemeTokens = lunarisDarkTokens;
const primary = theme.colors['primary'];
const contentMuted = theme.colors['content-muted'];ColorId / ColorKey
LunaColorId is the color id used in tokens (kebab-case), e.g. primary-content. LunaColorKey is the camelCase variant intended for runtime components/hooks, e.g. primaryContent.
import {
LUNA_COLOR_IDS,
LUNA_COLOR_KEYS,
colorIdToColorKey,
colorKeyToColorId,
createEmptyLunaColors,
} from '@dugyu/luna-core';
const firstId = LUNA_COLOR_IDS[0];
const key = colorIdToColorKey('primary-content');
const id = colorKeyToColorId('primaryContent');
const emptyColors = createEmptyLunaColors();
emptyColors.primary = '#ff8ab5';Theme Resolver (Pick the Best Match From an Allowlist)
import { resolveThemeKeyFromList } from '@dugyu/luna-core';
const allowed = ['luna-light', 'lunaris-dark'] as const;
const resolved1 = resolveThemeKeyFromList(allowed, 'lunaris-light');
const resolved2 = resolveThemeKeyFromList(allowed, 'luna-dark');LUNA Packages
@dugyu/luna-tokens— source of truth for token values@dugyu/luna-core— token and theme type definitions (this package)@dugyu/luna-styles— CSS variables output@dugyu/luna-tailwind— Tailwind utilities output@dugyu/luna-reactlynx— ReactLynx runtime integration
