{ "name": "TimelinePhoneView", "description": "Scroll-animated timeline displaying content with dual phone mockups using GSAP animations.", "constraints": { "textRules": { "title": { "required": true, "example": "App Features", "minChars": 2, "maxChars": 50 }, "description": { "required": true, "example": "Explore our powerful mobile experience", "minChars": 5, "maxChars": 300 }, "tag": { "required": false, "example": "Mobile", "minChars": 2, "maxChars": 30 } }, "itemRules": { "minItems": 2, "maxItems": 4, "recommendedItems": "2-4", "note": "Each item needs: trigger (string class e.g., 'trigger-1'), content (ReactNode), imageOne/videoOne (string path), imageTwo/videoTwo (string path), plus optional imageAltOne, imageAltTwo, videoAriaLabelOne, videoAriaLabelTwo. Desktop height = items.length * 100vh. Frames have card styling with p-1 padding." } }, "propsSchema": { "items": "Array<{ trigger: string, content: React.ReactNode, imageOne?: string, videoOne?: string, imageAltOne?: string, videoAriaLabelOne?: string, imageTwo?: string, videoTwo?: string, imageAltTwo?: string, videoAriaLabelTwo?: string }> - Timeline items with triggers and dual phone media (required)", "showTextBox?": "boolean (default: true - controls whether CardStackTextBox renders)", "title": "string", "titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title", "description": "string", "tag?": "string", "tagIcon?": "LucideIcon", "buttons?": "Array<{text: string, onClick?: () => void, href?: string}>", "textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)", "useInvertedBackground?": "'noInvert' | 'invertDefault'", "showDivider?": "boolean (default: false)", "ariaLabel?": "string (default: 'Timeline phone view section')", "className?": "string" }, "usageExample": "

Feature One

Description

, imageOne: '/phone1.jpg', imageTwo: '/phone2.jpg' }]} />", "do": [ "Use for process flows", "Use for roadmaps", "Use for step-by-step explanation", "Use for feature showcases", "Use for capability displays", "Use for product catalogs", "Use for e-commerce", "Requires items[]", "Requires titleSegments?[]", "Requires buttons?[]" ], "dont": [ "Do not use non-sequential content", "Do not use single item", "Do not use less than 2 items", "Do not use more than 4 items" ], "editRules": { "textOnly": true, "layoutLocked": true, "styleLocked": true } }