@tamilvananmurugan/xlibs
Version:
Comprehensive UI component library with Aceternity, MagicUI, and ShadCN components
128 lines (122 loc) • 3.93 kB
text/typescript
// Component Metadata Index
// This file exports all component metadata for design tools and auto layout systems
import type { ComponentMetadata } from "./component-metadata";
// Since we don't have the actual component files, we'll create a simplified registry
// In a real implementation, these would be imported from the actual component files
export const componentMetadataRegistry: Record<string, ComponentMetadata> = {
// UI Components
"Card": {
displayName: "Card",
category: "ui",
tags: ["container", "layout"],
useCases: ["content-container", "data-display"],
complexity: "medium",
animationLevel: "none",
hasGradient: false,
isComposite: true,
preferredWidth: "auto",
preferredHeight: "auto"
},
"Button": {
displayName: "Button",
category: "ui",
tags: ["interactive", "action"],
useCases: ["user-action", "form-submit"],
complexity: "simple",
animationLevel: "none",
hasGradient: false,
isComposite: false,
preferredWidth: "auto",
preferredHeight: "auto"
},
"BentoCard": {
displayName: "Bento Card",
category: "ui",
tags: ["container", "layout", "grid"],
useCases: ["dashboard-item", "content-card"],
complexity: "medium",
animationLevel: "none",
hasGradient: false,
isComposite: true,
preferredWidth: "auto",
preferredHeight: "auto"
},
// MagicUI Components
"MagicCard": {
displayName: "Magic Card",
category: "magicui",
tags: ["container", "layout", "animated"],
useCases: ["content-container", "data-display"],
complexity: "complex",
animationLevel: "high",
hasGradient: true,
isComposite: true,
preferredWidth: "auto",
preferredHeight: "auto"
},
"ShinyButton": {
displayName: "Shiny Button",
category: "magicui",
tags: ["interactive", "action", "animated"],
useCases: ["user-action", "form-submit"],
complexity: "medium",
animationLevel: "high",
hasGradient: true,
isComposite: false,
preferredWidth: "auto",
preferredHeight: "auto"
},
"FloatingNav": {
displayName: "Floating Navigation",
category: "aceternity",
tags: ["navigation", "floating", "animated", "responsive"],
useCases: ["site-navigation", "floating-menu", "scroll-aware-nav"],
complexity: "medium",
animationLevel: "high",
hasGradient: true,
isComposite: true,
preferredWidth: "auto",
preferredHeight: "auto",
layoutHints: ["top", "fixed", "responsive"]
},
"HoverMenu": {
displayName: "Hover Menu",
category: "aceternity",
tags: ["navigation", "dropdown", "animated", "interactive"],
useCases: ["site-navigation", "dropdown-menu", "product-showcase"],
complexity: "medium",
animationLevel: "high",
hasGradient: true,
isComposite: true,
preferredWidth: "auto",
preferredHeight: "auto",
layoutHints: ["top", "center", "responsive"]
},
"Timeline": {
displayName: "Timeline",
category: "aceternity",
tags: ["content", "timeline", "animated", "scroll-aware"],
useCases: ["changelog", "history", "roadmap", "achievements"],
complexity: "medium",
animationLevel: "high",
hasGradient: true,
isComposite: true,
preferredWidth: "auto",
preferredHeight: "auto",
layoutHints: ["full-width", "vertical", "responsive"]
}
};
// Utility function to get metadata by component name
export function getComponentMetadata(componentName: string): ComponentMetadata | undefined {
return componentMetadataRegistry[componentName];
}
// Get all available component names
export function getAvailableComponents(): string[] {
return Object.keys(componentMetadataRegistry);
}
// Get components by layout hint
export function getComponentsByLayoutHint(hint: string): ComponentMetadata[] {
return Object.values(componentMetadataRegistry).filter(
metadata => metadata.layoutHints?.includes(hint)
);
}