From e12d2f24ea84f60f1fbc71524ab71f1b578fd637 Mon Sep 17 00:00:00 2001 From: bender Date: Fri, 17 Apr 2026 21:18:23 +0000 Subject: [PATCH] Switch to version 2: added registry/components/FooterBaseReveal.json --- registry/components/FooterBaseReveal.json | 80 +++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 registry/components/FooterBaseReveal.json diff --git a/registry/components/FooterBaseReveal.json b/registry/components/FooterBaseReveal.json new file mode 100644 index 0000000..62535be --- /dev/null +++ b/registry/components/FooterBaseReveal.json @@ -0,0 +1,80 @@ +{ + "name": "FooterBaseReveal", + "description": "Animated footer reveal wrapper that creates a fixed footer with scroll-triggered reveal effect.", + "details": "Use when you want the footer to stay fixed at the bottom and reveal as users scroll. Wraps FooterBase component with fixed positioning and dynamic height calculation using ResizeObserver. Creates a reveal animation effect as content scrolls up. Ideal for modern, engaging scroll experiences.", + "constraints": { + "textRules": { + "copyrightText": { + "required": false, + "default": "© 2025 | Webild", + "example": "© 2025 Company Name", + "minChars": 5, + "maxChars": 50 + }, + "columnTitle": { + "required": true, + "example": "Product", + "minChars": 2, + "maxChars": 20 + }, + "itemLabel": { + "required": true, + "example": "Features", + "minChars": 2, + "maxChars": 30 + } + }, + "structureRules": { + "columns": { + "required": true, + "minColumns": 1, + "maxColumns": 3, + "note": "Each column must have title and items array" + }, + "items": { + "required": true, + "minItems": 1, + "structure": { + "label": "string - Link text (required)", + "href": "string - Link destination (optional). External URLs open in new tab, internal values scroll to sections", + "onClick": "() => void - Additional click handler (optional)" + } + } + } + }, + "propsSchema": { + "logoSrc?": "string", + "logoAlt?": "string", + "logoText": "string (required)", + "columns": "Array<{ title: string, items: Array<{ label: string, href: string }> }> - Footer navigation columns (required)", + "copyrightText?": "string", + "onPrivacyClick?": "() => void", + "ariaLabel?": "string", + "className?": "string", + "wrapperClassName?": "string", + "containerClassName?": "string", + "footerClassName?": "string", + "footerContainerClassName?": "string", + "logoClassName?": "string", + "logoImageClassName?": "string", + "logoTextClassName?": "string", + "columnsClassName?": "string", + "columnClassName?": "string", + "columnTitleClassName?": "string", + "columnItemClassName?": "string", + "copyrightContainerClassName?": "string", + "copyrightTextClassName?": "string", + "privacyButtonClassName?": "string" + }, + "usageExample": "", + "do": [ + "Use for general use", + "Requires columns[]" + ], + "dont": [], + "editRules": { + "textOnly": true, + "layoutLocked": true, + "styleLocked": true + } +}