From b7ed4aafdc9e6dcccdb9165e2d7b3b5a017fb9ba Mon Sep 17 00:00:00 2001 From: bender Date: Fri, 17 Apr 2026 21:18:40 +0000 Subject: [PATCH] Switch to version 2: added registry/components/MetricCardTwo.json --- registry/components/MetricCardTwo.json | 98 ++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 registry/components/MetricCardTwo.json diff --git a/registry/components/MetricCardTwo.json b/registry/components/MetricCardTwo.json new file mode 100644 index 0000000..c7ea590 --- /dev/null +++ b/registry/components/MetricCardTwo.json @@ -0,0 +1,98 @@ +{ + "name": "MetricCardTwo", + "description": "Simple metric card with large value and description text.", + "details": "Use for clean, minimal metric displays focused on readability. Layout: Large Value (9xl on mobile, 7xl on lg, bold) → Description (xl text). Card has fixed height (h-50 lg:h-60 2xl:h-70) with space-between layout for consistent vertical spacing. All fields are required for visual consistency. Best for dashboard statistics, simple KPI displays, or metric overviews where simplicity is key. Automatically switches between grid (1-4 items) and carousel (5+ items). Optional header with title, description, tag, and buttons.", + "constraints": { + "textRules": { + "title": { + "required": true, + "example": "Key Metrics", + "minChars": 2, + "maxChars": 35 + }, + "description": { + "required": true, + "example": "Performance indicators at a glance", + "minChars": 5, + "maxChars": 250 + }, + "tag": { + "required": false, + "example": "Stats", + "minChars": 2, + "maxChars": 30 + } + }, + "metricRules": { + "id": { + "required": true, + "example": "1", + "minChars": 1, + "maxChars": 20 + }, + "value": { + "required": true, + "example": "98%", + "minChars": 1, + "maxChars": 15, + "note": "Large metric value displayed prominently" + }, + "description": { + "required": true, + "example": "Customer Satisfaction Rate", + "minChars": 5, + "maxChars": 100, + "note": "Metric label/description displayed below value" + } + } + }, + "propsSchema": { + "metrics": "Array<{ id: string, value: string, description: string }>", + "carouselMode?": "'auto' | 'buttons' (default: 'buttons')", + "gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' (required)", + "animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d'", + "uniformGridCustomHeightClasses?": "string", + "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", + "tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'", + "buttons?": "Array<{text: string, onClick?: () => void, href?: string}>", + "buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'", + "textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)", + "useInvertedBackground": "boolean", + "ariaLabel?": "string (default: 'Metrics section')", + "className?": "string", + "containerClassName?": "string", + "cardClassName?": "string", + "textBoxTitleClassName?": "string", + "textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout", + "textBoxTitleImageClassName?": "string - For styling images in inline-image layout", + "textBoxDescriptionClassName?": "string", + "valueClassName?": "string", + "metricDescriptionClassName?": "string", + "gridClassName?": "string", + "carouselClassName?": "string", + "controlsClassName?": "string", + "textBoxClassName?": "string", + "textBoxTagClassName?": "string", + "textBoxButtonContainerClassName?": "string", + "textBoxButtonClassName?": "string", + "textBoxButtonTextClassName?": "string" + }, + "usageExample": "", + "do": [ + "Use for statistics displays", + "Use for achievement showcases", + "Requires metrics[]", + "Requires titleSegments?[]", + "Requires buttons?[]" + ], + "dont": [], + "editRules": { + "textOnly": true, + "layoutLocked": true, + "styleLocked": true + } +}