// Copyright (c) Meta Platforms, Inc. and affiliates.

'use client';

/**
 * Astryx Theme System
 *
 * Exports:
 * - Theme: Provider component that applies theme
 * - defineTheme: Create themes with token + component overrides
 * - Token exports for direct use in StyleX
 *
 * Themes are in separate packages:
 *   import { neutralTheme } from '@astryxdesign/theme-neutral';
 *   import { neutralTheme } from '@astryxdesign/theme-neutral';
 */
export { Theme } from "./Theme.js";
export { MediaTheme } from "./MediaTheme.js";
export { defineTheme, generateThemeCSS, generateOnMediaCSS, generateThemeRules, generateThemeRulesSplit, isDefinedTheme, tokenDefaults } from "./defineTheme.js";
export { registerTheme, getRegisteredTheme, getRegisteredThemes, resetThemes } from "./themeRegistry.js";
export { syntaxTokenDefaults, domainTokenDefaults, dataTokenDefaults } from "./domainTokens/index.js";

// Syntax theme API
export { defineSyntaxTheme } from "./syntax/index.js";
// SyntaxTheme provider
export { SyntaxTheme, useSyntaxTheme } from "./syntax/index.js";
export { expandTypeScale, generateTypeScaleComponents } from "./expandTypeScale.js";
export { expandRadiusScale } from "./expandRadiusScale.js";
export { expandColorScale } from "./expandColorScale.js";
export { expandMotionScale } from "./expandMotionScale.js";
// Export token defaults and vars for use in custom components and themes
export { colorDefaults, spacingDefaults, sizeDefaults, borderDefaults, focusDefaults, radiusDefaults, shadowDefaults, durationDefaults, easeDefaults, typographyDefaults, textSizeDefaults, fontWeightDefaults, typeScaleDefaults, colorVars, spacingVars, sizeVars, borderVars, focusVars, radiusVars, shadowVars, durationVars, easeVars, typographyVars, textSizeVars, fontWeightVars, typeScaleVars } from "./tokens.stylex.js";

// Export token key types for theme authoring

export { useTheme, useThemeName, ThemeContext } from "./useTheme.js";
export { resolveThemeToken, resolveThemeTokens, tokenVar, tokenVars } from "./tokens.js";