import { Platform } from './platforms/index.js'; /** * Platform-specific selectors for a component. * Use `null` to indicate a component is not available on a platform. */ export interface ComponentSelectors { /** Angular selector(s) - can be single string, array, or null if not available on Angular */ angular: string | string[] | null; /** Web Components selector(s) - can be single string, array, or null if not available on Web Components */ webcomponents: string | string[] | null; } /** * Describes how a child component's token value is derived from a source token. */ export interface TokenDerivation { /** Source token: 'componentName.tokenName' */ from: string; /** Transform to apply to the source value */ transform: "identity" | "adaptive-contrast" | "dynamic-shade"; /** Optional transform arguments (e.g., shade amount for dynamic-shade) */ args?: Record; } /** * Information about a compound component (one that contains multiple themeable sub-components). */ export interface CompoundInfo { /** Description of what the compound component contains */ description: string; /** Related theme functions needed for full customization */ relatedThemes: string[]; /** Token derivation rules. Key: 'childTheme.childToken' */ tokenDerivations?: Record; /** Free-form guidance for edge cases */ guidance?: string; /** * When true, the framework internally generates themes for relatedThemes from the parent's primary tokens * LLMs should NOT generate separate child themes for relatedThemes. */ composed?: boolean; } export interface ComponentMetadata { /** Platform-specific CSS selectors. Optional for `childOf` entries (theming scope comes from the parent). */ selectors?: ComponentSelectors; /** Optional theme alias for components that reuse another component theme */ theme?: string; /** Optional synonym aliases for search (synonyms only, not word-order permutations). */ aliases?: string[]; /** Parent component name for child sub-components. When set, theming scope uses the parent's selector instead of the child's own. Mutually exclusive with `compound`. */ childOf?: string; /** Present only for components with variant-specific themes (e.g., button) */ variants?: string[]; /** Present only for compound components */ compound?: CompoundInfo; } export declare const COMPONENT_METADATA: Record; /** * List of variant theme names (derived from COMPONENT_METADATA at init). */ export declare const VARIANT_THEME_NAMES: Set; /** * Get the selector(s) for a component on a specific platform. * @param componentName - The component name * @param platform - The target platform * @returns Array of selectors (normalized to always return array), empty array if component not found or not available on platform */ export declare function getComponentSelector(componentName: string, platform: Platform): string[]; /** * Get the selector(s) to use for theming scope. * For child components (with `childOf`), returns the parent's selectors. * For all other components, returns the component's own selectors. * @param componentName - The component name * @param platform - The target platform * @returns Array of selectors for theming scope, empty array if not found */ export declare function getThemingSelector(componentName: string, platform: Platform): string[]; /** * Check if a component is available on a specific platform. * @param componentName - The component name * @param platform - The target platform ('angular' or 'webcomponents') * @returns True if the component is available on the platform, false otherwise */ export declare function isComponentAvailable(componentName: string, platform: Platform): boolean; /** * Get all component names available on a specific platform. * @param platform - The target platform ('angular' or 'webcomponents') * @returns Array of component names available on the platform */ export declare function getComponentsForPlatform(platform: Platform): string[]; /** * Get platform availability for a component. * @param componentName - The component name * @returns Object indicating availability on each platform, or undefined if component not found */ export declare function getComponentPlatformAvailability(componentName: string): { angular: boolean; webcomponents: boolean; } | undefined; /** * Check if a component has variants. * @param componentName - The component name (e.g., 'button') * @returns True if the component has variant-specific themes */ export declare function hasVariants(componentName: string): boolean; /** * Get variants for a component. * @param componentName - The component name (e.g., 'button') * @returns Array of variant names or empty array */ export declare function getVariants(componentName: string): string[]; /** * Check if a component name is a variant theme. * @param themeName - The theme name to check * @returns True if this is a variant theme (e.g., 'flat-button') */ export declare function isVariantTheme(themeName: string): boolean; /** * Get compound component info if applicable. * @param componentName - The component name * @returns CompoundInfo or undefined */ export declare function getCompoundComponentInfo(componentName: string): CompoundInfo | undefined; /** * Check if a component is a compound component. * @param componentName - The component name * @returns True if this is a compound component */ export declare function isCompoundComponent(componentName: string): boolean; /** * Get token derivations for a specific child theme within a compound component. * @param compoundName - The compound component name * @param childThemeName - The child theme name (e.g., 'flat-button') * @returns Record of 'childToken' -> TokenDerivation, or empty record if none exist */ export declare function getTokenDerivationsForChild(compoundName: string, childThemeName: string): Record;