import type { Component } from 'vue'; /** * Built-in style preset names provided by the base package. * Business domains can extend this via `ExtendedStylePreset`. */ export type StylePresetName = 'business' | 'education' | string; /** * CSS variable map for a style preset. * Keys are CSS custom property names (without `--` prefix), * values are CSS values. * * @example * { 'biz-bg-base': '#09090B', 'biz-text-primary': '#F4F4F5' } */ export type CSSVariableMap = Record; /** * Base style preset definition provided by the base package. * Contains only theme-level resources (CSS variables) * without any business component overrides. * * For SCSS-based presets (recommended), darkVariables/lightVariables * can be omitted — the CSS variables are defined via SCSS files * in `styles/themes/presets/` and activated through CSS class selectors. */ export interface BaseStylePreset { /** Unique identifier for this preset */ name: StylePresetName; /** Human-readable label */ label?: string; /** CSS variables for dark theme (optional when using SCSS-based presets) */ darkVariables?: CSSVariableMap; /** CSS variables for light theme (optional when using SCSS-based presets) */ lightVariables?: CSSVariableMap; } /** * Extended style preset that adds business-domain component overrides. * Built on top of `BaseStylePreset`, used by product packages (e.g. livekit). */ export interface ExtendedStylePreset extends BaseStylePreset { /** * Component overrides keyed by component slot name. * When a preset is active, these components replace the default ones. * * @example * { 'BarrageList': EntertainmentBarrageList, 'GiftPanel': EntertainmentGiftPanel } */ componentOverrides?: Record; }