{ "name": "ContactFaq", "description": "Split-panel contact section with CTA card on left and FAQ accordions on right.", "constraints": { "textRules": { "ctaTitle": { "required": true, "example": "Book an intro call", "minChars": 2, "maxChars": 50 }, "ctaDescription": { "required": true, "example": "Let's get started with a brief intro call.", "minChars": 5, "maxChars": 100 } }, "faqRules": { "id": { "required": true, "example": "1", "minChars": 1, "maxChars": 20 }, "title": { "required": true, "example": "What's included in the subscription?", "minChars": 5, "maxChars": 100 }, "content": { "required": true, "example": "Your subscription covers end-to-end digital design services...", "minChars": 10, "maxChars": 500, "note": "Supports HTML content" } } }, "propsSchema": { "faqs": "Array<{ id: string, title: string, content: string }>", "ctaTitle": "string", "ctaDescription": "string", "ctaButton": "{text: string, onClick?: () => void, href?: string}", "ctaIcon": "LucideIcon (required)", "useInvertedBackground": "'noInvert' | 'invertDefault'", "animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect on panels)", "accordionAnimationType?": "'smooth' | 'instant' (default: 'smooth')", "showCard?": "boolean (default: true - controls accordion card styling)", "ariaLabel?": "string (default: 'Contact and FAQ section')", "className?": "string" }, "usageExample": "", "do": [ "Use for contact pages", "Use for lead generation", "Use for help pages", "Use for support sections", "Requires faqs[]" ], "dont": [ "Do not use more than 4 items" ], "editRules": { "textOnly": true, "layoutLocked": true, "styleLocked": true } }