From eb6c02c5e520b2d1b449abecd19ad4a75541334c Mon Sep 17 00:00:00 2001 From: bender Date: Fri, 17 Apr 2026 21:18:56 +0000 Subject: [PATCH] Switch to version 2: added registry/components/TestimonialCardTwelve.json --- .../components/TestimonialCardTwelve.json | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 registry/components/TestimonialCardTwelve.json diff --git a/registry/components/TestimonialCardTwelve.json b/registry/components/TestimonialCardTwelve.json new file mode 100644 index 0000000..f0fda9d --- /dev/null +++ b/registry/components/TestimonialCardTwelve.json @@ -0,0 +1,93 @@ +{ + "name": "TestimonialCardTwelve", + "description": "Minimal testimonial card with avatar group, title, and tag in a single centered card layout.", + "details": "Use for compact social proof or customer testimonial sections. Features a single centered card containing: Tag at top, large centered title, and AvatarGroup showing customer photos. Responsive avatar display: shows 3 avatars on mobile (below 768px), 4 on desktop. Avatar images use progressive sizing with overlap effect. Best for 'Trusted by thousands' callouts, social proof ('10,000+ customers'), or customer overview sections. Uses shouldUseInvertedText for proper text colors inside cards.", + "constraints": { + "textRules": { + "cardTitle": { + "required": true, + "example": "Over 10,000 customers trust us to deliver exceptional results", + "minChars": 10, + "maxChars": 120 + }, + "cardTag": { + "required": true, + "example": "See what they say", + "minChars": 5, + "maxChars": 40 + } + }, + "testimonialRules": { + "id": { + "required": true, + "example": "1", + "minChars": 1, + "maxChars": 20 + }, + "name": { + "required": true, + "example": "Sarah Johnson", + "minChars": 2, + "maxChars": 50, + "note": "Used as fallback for imageAlt" + }, + "imageSrc": { + "required": true, + "example": "/testimonials/sarah.jpg", + "note": "Image path for customer photo" + }, + "imageAlt": { + "required": false, + "example": "Sarah Johnson", + "minChars": 2, + "maxChars": 50, + "note": "Alt text for accessibility (defaults to name)" + } + }, + "itemRules": { + "minItems": 3, + "maxItems": 10, + "recommendedItems": "4-6", + "note": "Shows 3 avatars on mobile, 4 on desktop. Remaining count displayed as '+N'. Works best with 4-6 testimonials." + } + }, + "propsSchema": { + "testimonials": "Array<{ id: string, name: string, imageSrc: string, imageAlt?: string }>", + "cardTitle": "string", + "cardTag": "string", + "cardTagIcon?": "LucideIcon", + "buttons?": "Array<{ text: string, href?: string, onClick?: () => void }>", + "buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'", + "cardAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal' (required)", + "useInvertedBackground": "boolean", + "ariaLabel?": "string (default: 'Testimonials section')", + "className?": "string", + "containerClassName?": "string", + "cardClassName?": "string", + "avatarGroupClassName?": "string", + "avatarClassName?": "string", + "cardTitleClassName?": "string", + "cardTagClassName?": "string", + "buttonContainerClassName?": "string", + "buttonClassName?": "string", + "buttonTextClassName?": "string" + }, + "usageExample": "", + "do": [ + "Use for feature showcases", + "Use for capability displays", + "Use for social proof", + "Use for customer reviews", + "Requires testimonials[]" + ], + "dont": [ + "Do not use multiple items", + "Do not use less than 3 items", + "Do not use more than 10 items" + ], + "editRules": { + "textOnly": true, + "layoutLocked": true, + "styleLocked": true + } +}