UNPKG

@tamilvananmurugan/xlibs

Version:

Comprehensive UI component library with Aceternity, MagicUI, and ShadCN components

72 lines (59 loc) 1.93 kB
// Component Configuration Types and Validation export interface VariantConfig { className: string; [key: string]: any; } export interface SizeConfig { className: string; [key: string]: any; } export interface ComponentConfig { variants: Record<string, VariantConfig>; sizes: Record<string, SizeConfig>; defaultVariant?: string; defaultSize?: string; [key: string]: any; } /** * Validate component configuration * @param config The component configuration to validate * @returns Validation result with isValid flag and errors array */ export function validateComponentConfig(config: ComponentConfig): { isValid: boolean; errors: string[] } { const errors: string[] = []; // Check if variants exist if (!config.variants || Object.keys(config.variants).length === 0) { errors.push('Component must have at least one variant'); } // Check if sizes exist if (!config.sizes || Object.keys(config.sizes).length === 0) { errors.push('Component must have at least one size'); } // Check if default variant exists in variants if (config.defaultVariant && !config.variants[config.defaultVariant]) { errors.push(`Default variant '${config.defaultVariant}' not found in variants`); } // Check if default size exists in sizes if (config.defaultSize && !config.sizes[config.defaultSize]) { errors.push(`Default size '${config.defaultSize}' not found in sizes`); } return { isValid: errors.length === 0, errors }; } /** * Create a component configuration * @param config The component configuration * @returns The validated component configuration */ export function createComponentConfig(config: ComponentConfig): ComponentConfig { const validation = validateComponentConfig(config); if (!validation.isValid) { throw new Error(`Invalid component configuration: ${validation.errors.join(', ')}`); } return config; }