{ "name": "FeatureTimelineBento", "propsSchema": { "features": "Array<{ title: string, description: string, buttons?: ButtonConfig[], bentoComponent: ... }> - CRITICAL: Each feature MUST use a DIFFERENT bentoComponent type (never repeat same type). Available types: 'globe' | 'icon-info-cards' | 'animated-bar-chart' | '3d-stack-cards' | '3d-task-list' | 'orbiting-icons' | 'marquee' | 'map' | 'line-chart' | '3d-card-grid' | 'phone' | 'chat' | 'reveal-icon' | 'timeline' | 'media-stack', plus bentoComponent-specific props", "title": "string", "titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }>", "description": "string", "tag?": "string", "tagIcon?": "LucideIcon", "tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'", "buttons?": "Array<{ text: string, href?: string, onClick?: () => void }>", "buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'", "textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image'", "useInvertedBackground": "boolean", "ariaLabel?": "string (default: 'Feature section')", "className?": "string", "containerClassName?": "string", "textBoxTitleClassName?": "string", "textBoxDescriptionClassName?": "string", "textBoxClassName?": "string", "textBoxTagClassName?": "string", "textBoxButtonContainerClassName?": "string", "textBoxButtonClassName?": "string", "textBoxButtonTextClassName?": "string", "titleImageWrapperClassName?": "string", "titleImageClassName?": "string", "cardContentClassName?": "string", "stepNumberClassName?": "string", "cardTitleClassName?": "string", "cardDescriptionClassName?": "string", "bentoContainerClassName?": "string", "cardButtonClassName?": "string", "cardButtonTextClassName?": "string" } }