4692 lines
254 KiB
JSON
4692 lines
254 KiB
JSON
{
|
|
"componentRegistry": {
|
|
"layout": [
|
|
{
|
|
"import": "import CardStack from '@/components/cardStack/CardStack';",
|
|
"name": "CardStack",
|
|
"path": "@/components/cardStack/CardStack",
|
|
"propsSchema": {
|
|
"children": "React.ReactNode",
|
|
"mode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"gridVariant?": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' | 'one-large-right-three-stacked-left' | 'items-top-row-full-width-bottom' | 'full-width-top-items-bottom-row' | 'one-large-left-three-stacked-right' | 'two-items-per-row' | 'timeline' (default: 'uniform-all-items-equal')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"gridRowsClassName?": "string",
|
|
"itemHeightClassesOverride?": "Array<string>",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d' (required - controls GSAP scroll animations with stagger effect)",
|
|
"supports3DAnimation?": "boolean (default: false)",
|
|
"carouselThreshold?": "number (default: 5)",
|
|
"bottomContent?": "React.ReactNode",
|
|
"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: 'Card stack')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"carouselItemClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TimelineHorizontalCardStack from '@/components/cardStack/layouts/timelines/TimelineHorizontalCardStack';",
|
|
"name": "TimelineHorizontalCardStack",
|
|
"path": "@/components/cardStack/layouts/timelines/TimelineHorizontalCardStack",
|
|
"propsSchema": {
|
|
"children": "React.ReactNode",
|
|
"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",
|
|
"mediaItems?": "Array<{ imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }>",
|
|
"ariaLabel?": "string (default: 'Timeline section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"progressBarClassName?": "string",
|
|
"mediaContainerClassName?": "string",
|
|
"mediaClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TimelineCardStack from '@/components/cardStack/layouts/timelines/TimelineCardStack';",
|
|
"name": "TimelineCardStack",
|
|
"path": "@/components/cardStack/layouts/timelines/TimelineCardStack",
|
|
"propsSchema": {
|
|
"children": "React.ReactNode",
|
|
"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: 'Timeline section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TimelinePhoneView from '@/components/cardStack/layouts/timelines/TimelinePhoneView';",
|
|
"name": "TimelinePhoneView",
|
|
"path": "@/components/cardStack/layouts/timelines/TimelinePhoneView",
|
|
"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)",
|
|
"ariaLabel?": "string (default: 'Timeline phone view section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"desktopContainerClassName?": "string",
|
|
"mobileContainerClassName?": "string",
|
|
"desktopContentClassName?": "string",
|
|
"desktopWrapperClassName?": "string",
|
|
"mobileWrapperClassName?": "string",
|
|
"phoneFrameClassName?": "string",
|
|
"mobilePhoneFrameClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TimelineProcessFlow from '@/components/cardStack/layouts/timelines/TimelineProcessFlow';",
|
|
"name": "TimelineProcessFlow",
|
|
"path": "@/components/cardStack/layouts/timelines/TimelineProcessFlow",
|
|
"propsSchema": {
|
|
"items": "Array<{ id: string, content: React.ReactNode, media: React.ReactNode, reverse: boolean }> - Timeline items with content and media",
|
|
"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)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"ariaLabel?": "string (default: 'Timeline process flow section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"itemClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"numberClassName?": "string",
|
|
"contentWrapperClassName?": "string",
|
|
"gapClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TextBox from '@/components/Textbox';",
|
|
"name": "TextBox",
|
|
"path": "@/components/Textbox",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"type?": "'entrance-slide' | 'reveal-blur' | 'background-highlight'",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' (required)",
|
|
"center?": "boolean (default: false)",
|
|
"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'",
|
|
"duration?": "number (default: 1)",
|
|
"start?": "string (default: 'top 80%')",
|
|
"end?": "string (default: 'top 20%')",
|
|
"gradientColors?": "{ from: string, to: string }",
|
|
"children?": "React.ReactNode",
|
|
"className?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"avatars?": "Array<{ src: string, alt?: string }> - User avatar images",
|
|
"avatarText?": "string",
|
|
"avatarGroupClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import AvatarGroup from '@/components/shared/AvatarGroup';",
|
|
"name": "AvatarGroup",
|
|
"path": "@/components/shared/AvatarGroup",
|
|
"propsSchema": {
|
|
"avatars": "Array<{ src: string, alt?: string }> - User avatar images",
|
|
"text?": "string",
|
|
"maxVisible?": "number (default: 5)",
|
|
"className?": "string",
|
|
"avatarClassName?": "string",
|
|
"textClassName?": "string",
|
|
"ariaLabel?": "string (default: 'User avatars')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import { BentoGlobe } from '@/components/bento/BentoGlobe';",
|
|
"name": "BentoGlobe",
|
|
"path": "@/components/bento/BentoGlobe",
|
|
"propsSchema": {
|
|
"className?": "string",
|
|
"config?": "COBEOptions - Custom globe configuration (see COBE docs)"
|
|
}
|
|
}
|
|
],
|
|
"title": [
|
|
{
|
|
"import": "import TextAnimation from '@/components/text/TextAnimation';",
|
|
"name": "TextAnimation",
|
|
"path": "@/components/text/TextAnimation",
|
|
"propsSchema": {
|
|
"type?": "'entrance-slide' | 'reveal-blur' | 'background-highlight'",
|
|
"title": "string",
|
|
"children?": "React.ReactNode",
|
|
"variant?": "'trigger' | 'words-trigger'",
|
|
"className?": "string",
|
|
"duration?": "number",
|
|
"stagger?": "number",
|
|
"start?": "string",
|
|
"end?": "string",
|
|
"ariaLabel?": "string",
|
|
"gradientColors?": "{ from: string, to: string }"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TextNumberCount from '@/components/text/TextNumberCount';",
|
|
"name": "TextNumberCount",
|
|
"path": "@/components/text/TextNumberCount",
|
|
"propsSchema": {
|
|
"value": "number",
|
|
"startFrom?": "number",
|
|
"duration?": "number",
|
|
"format?": "Intl.NumberFormatOptions",
|
|
"locales?": "string",
|
|
"prefix?": "string",
|
|
"suffix?": "string",
|
|
"animateOnScroll?": "boolean",
|
|
"threshold?": "number",
|
|
"className?": "string"
|
|
}
|
|
}
|
|
],
|
|
"button": [
|
|
{
|
|
"import": "import ButtonTextUnderline from '@/components/button/ButtonTextUnderline';",
|
|
"name": "ButtonTextUnderline",
|
|
"path": "@/components/button/ButtonTextUnderline",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ButtonIconArrow from '@/components/button/ButtonIconArrow';",
|
|
"name": "ButtonIconArrow",
|
|
"path": "@/components/button/ButtonIconArrow",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"textClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ButtonTextStagger from '@/components/button/ButtonTextStagger/ButtonTextStagger';",
|
|
"name": "ButtonTextStagger",
|
|
"path": "@/components/button/ButtonTextStagger/ButtonTextStagger",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"bgClassName?": "string",
|
|
"textClassName?": "string",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')",
|
|
"scrollToSection?": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ButtonShiftHover from '@/components/button/ButtonShiftHover/ButtonShiftHover';",
|
|
"name": "ButtonShiftHover",
|
|
"path": "@/components/button/ButtonShiftHover/ButtonShiftHover",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"bgClassName?": "string",
|
|
"textClassName?": "string",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ButtonHoverMagnetic from '@/components/button/ButtonHoverMagnetic/ButtonHoverMagnetic';",
|
|
"name": "ButtonHoverMagnetic",
|
|
"path": "@/components/button/ButtonHoverMagnetic/ButtonHoverMagnetic",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"textClassName?": "string",
|
|
"strengthFactor?": "number (default: 20)",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ButtonHoverBubble from '@/components/button/ButtonHoverBubble';",
|
|
"name": "ButtonHoverBubble",
|
|
"path": "@/components/button/ButtonHoverBubble",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"bgClassName?": "string - Applied to the text container (automatically set in sections)",
|
|
"textClassName?": "string - Applied to the text span",
|
|
"iconClassName?": "string - Applied to both arrow icon containers (automatically set in sections)",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ButtonExpandHover from '@/components/button/ButtonExpandHover';",
|
|
"name": "ButtonExpandHover",
|
|
"path": "@/components/button/ButtonExpandHover",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"textClassName?": "string - Applied to the text span (automatically includes base and hover colors in sections)",
|
|
"iconClassName?": "string - Applied to the arrow icon container (automatically set in sections)",
|
|
"iconBgClassName?": "string - Applied to the expanding background (automatically set in sections)",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ButtonBounceEffect from '@/components/button/ButtonBounceEffect/ButtonBounceEffect';",
|
|
"name": "ButtonBounceEffect",
|
|
"path": "@/components/button/ButtonBounceEffect/ButtonBounceEffect",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"bgClassName?": "string",
|
|
"textClassName?": "string",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ButtonDirectionalHover from '@/components/button/ButtonDirectionalHover/ButtonDirectionalHover';",
|
|
"name": "ButtonDirectionalHover",
|
|
"path": "@/components/button/ButtonDirectionalHover/ButtonDirectionalHover",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"bgClassName?": "string",
|
|
"textClassName?": "string",
|
|
"circleClassName?": "string - Controls the expanding circle color",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ButtonElasticEffect from '@/components/button/ButtonElasticEffect/ButtonElasticEffect';",
|
|
"name": "ButtonElasticEffect",
|
|
"path": "@/components/button/ButtonElasticEffect/ButtonElasticEffect",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"textClassName?": "string",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ButtonTextShift from '@/components/button/ButtonTextShift/ButtonTextShift';",
|
|
"name": "ButtonTextShift",
|
|
"path": "@/components/button/ButtonTextShift/ButtonTextShift",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"onClick?": "() => void",
|
|
"href?": "string - External URLs open in new tab, internal values scroll to section",
|
|
"className?": "string",
|
|
"bgClassName?": "string",
|
|
"textClassName?": "string",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"type?": "'button' | 'submit' | 'reset' (default: 'button')"
|
|
}
|
|
}
|
|
],
|
|
"form": [
|
|
{
|
|
"import": "import Input from '@/components/form/Input';",
|
|
"name": "Input",
|
|
"path": "@/components/form/Input",
|
|
"propsSchema": {
|
|
"value": "string (required)",
|
|
"onChange": "(value: string) => void (required)",
|
|
"type?": "string (default: 'text')",
|
|
"placeholder?": "string",
|
|
"required?": "boolean (default: false)",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import Textarea from '@/components/form/Textarea';",
|
|
"name": "Textarea",
|
|
"path": "@/components/form/Textarea",
|
|
"propsSchema": {
|
|
"value": "string (required)",
|
|
"onChange": "(value: string) => void (required)",
|
|
"placeholder?": "string",
|
|
"rows?": "number (default: 5)",
|
|
"required?": "boolean (default: false)",
|
|
"disabled?": "boolean (default: false)",
|
|
"ariaLabel?": "string",
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import EmailSignupForm from '@/components/form/EmailSignupForm';",
|
|
"name": "EmailSignupForm",
|
|
"path": "@/components/form/EmailSignupForm",
|
|
"propsSchema": {
|
|
"inputPlaceholder?": "string (default: 'Enter your email')",
|
|
"buttonText?": "string (default: 'Sign Up')",
|
|
"onSubmit?": "(email: string) => void",
|
|
"className?": "string",
|
|
"inputClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ContactForm from '@/components/form/ContactForm';",
|
|
"name": "ContactForm",
|
|
"path": "@/components/form/ContactForm",
|
|
"propsSchema": {
|
|
"title": "string (required)",
|
|
"description": "string (required)",
|
|
"tag": "string (required)",
|
|
"tagIcon?": "LucideIcon",
|
|
"inputPlaceholder?": "string (default: 'Enter your email')",
|
|
"buttonText?": "string (default: 'Sign Up')",
|
|
"termsText?": "string (default: 'By clicking Sign Up you're confirming that you agree with our Terms and Conditions.')",
|
|
"onSubmit?": "(email: string) => void",
|
|
"centered?": "boolean (default: false)",
|
|
"className?": "string",
|
|
"tagClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"formWrapperClassName?": "string",
|
|
"formClassName?": "string",
|
|
"inputClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"termsClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"navbar": [
|
|
{
|
|
"import": "import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';",
|
|
"name": "NavbarStyleApple",
|
|
"path": "@/components/navbar/NavbarStyleApple/NavbarStyleApple",
|
|
"propsSchema": {
|
|
"navItems": "Array<{name: string, id: string}>",
|
|
"brandName?": "string (default: 'Webild')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';",
|
|
"name": "NavbarLayoutFloatingInline",
|
|
"path": "@/components/navbar/NavbarLayoutFloatingInline",
|
|
"propsSchema": {
|
|
"navItems": "Array<{name: string, id: string}>",
|
|
"brandName?": "string (default: 'Webild')",
|
|
"button": "{text: string, onClick?: () => void, href?: string}",
|
|
"animateOnLoad?": "boolean (default: true)",
|
|
"className?": "string (default: '')",
|
|
"navItemClassName?": "string (default: '')",
|
|
"buttonClassName?": "string (default: '')",
|
|
"buttonTextClassName?": "string (default: '')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';",
|
|
"name": "NavbarLayoutFloatingOverlay",
|
|
"path": "@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay",
|
|
"propsSchema": {
|
|
"navItems": "Array<{name: string, id: string}>",
|
|
"className?": "string",
|
|
"brandName?": "string (default: 'Webild')",
|
|
"button": "{text: string, onClick?: () => void, href?: string}",
|
|
"buttonClassName?": "string (default: '')",
|
|
"buttonTextClassName?": "string (default: '')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';",
|
|
"name": "NavbarStyleFullscreen",
|
|
"path": "@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen",
|
|
"propsSchema": {
|
|
"navItems": "Array<{name: string, id: string}>",
|
|
"brandName?": "string (default: 'Webild')",
|
|
"bottomLeftText?": "string (default: 'Global Community')",
|
|
"bottomRightText?": "string (default: 'hello@example.com')",
|
|
"topBarClassName?": "string (default: '')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import NavbarStyleCentered from '@/components/navbar/NavbarStyleCentered/NavbarStyleCentered';",
|
|
"name": "NavbarStyleCentered",
|
|
"path": "@/components/navbar/NavbarStyleCentered/NavbarStyleCentered",
|
|
"propsSchema": {
|
|
"navItems": "Array<{name: string, id: string}>",
|
|
"button": "{text: string, onClick?: () => void, href?: string}",
|
|
"brandName?": "string (default: 'Webild')",
|
|
"className?": "string (default: '')"
|
|
}
|
|
}
|
|
],
|
|
"background": [
|
|
{
|
|
"import": "import PlainBackground from '@/components/background/PlainBackground';",
|
|
"name": "PlainBackground",
|
|
"path": "@/components/background/PlainBackground",
|
|
"propsSchema": {
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import GridBackround from '@/components/background/GridBackround';",
|
|
"name": "GridBackround",
|
|
"path": "@/components/background/GridBackround",
|
|
"propsSchema": {
|
|
"size?": "'small' | 'medium' | 'large' (default: 'medium')",
|
|
"perspectiveThreeD?": "boolean (default: false)",
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import DotGridBackground from '@/components/background/DotGridBackground';",
|
|
"name": "DotGridBackground",
|
|
"path": "@/components/background/DotGridBackground",
|
|
"propsSchema": {
|
|
"size?": "'small' | 'medium' | 'large' (default: 'medium')",
|
|
"perspectiveThreeD?": "boolean (default: false)",
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import CircleGradientBackground from '@/components/background/CircleGradientBackground';",
|
|
"name": "CircleGradientBackground",
|
|
"path": "@/components/background/CircleGradientBackground",
|
|
"propsSchema": {
|
|
"diagonal?": "'primary' | 'secondary' (default: 'primary')",
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import AuroraBackground from '@/components/background/AuroraBackground';",
|
|
"name": "AuroraBackground",
|
|
"path": "@/components/background/AuroraBackground",
|
|
"propsSchema": {
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FloatingGradientBackground from '@/components/background/floatingGradientBackground/FloatingGradientBackground';",
|
|
"name": "FloatingGradientBackground",
|
|
"path": "@/components/background/floatingGradientBackground/FloatingGradientBackground",
|
|
"propsSchema": {
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import AnimatedGridBackground from '@/components/background/AnimatedGridBackground';",
|
|
"name": "AnimatedGridBackground",
|
|
"path": "@/components/background/AnimatedGridBackground",
|
|
"propsSchema": {
|
|
"squareSize?": "number (default: 100)",
|
|
"numSquares?": "number (default: 50)",
|
|
"maxOpacity?": "number (default: 0.15)",
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import AnimatedAuroraBackground from '@/components/background/AnimatedAuroraBackground';",
|
|
"name": "AnimatedAuroraBackground",
|
|
"path": "@/components/background/AnimatedAuroraBackground",
|
|
"propsSchema": {
|
|
"className?": "string",
|
|
"showRadialGradient?": "boolean (default: true)",
|
|
"invertColors": "boolean (REQUIRED - true for light backgrounds, false for dark backgrounds)"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FluidBackground from '@/components/background/FluidBackground';",
|
|
"name": "FluidBackground",
|
|
"path": "@/components/background/FluidBackground",
|
|
"propsSchema": {
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import RadialGradientBackground from '@/components/background/RadialGradientBackground';",
|
|
"name": "RadialGradientBackground",
|
|
"path": "@/components/background/RadialGradientBackground",
|
|
"propsSchema": {
|
|
"className?": "string",
|
|
"centerColor?": "string (default: 'var(--background)')",
|
|
"edgeColor?": "string (default: 'var(--color-background-accent)')",
|
|
"size?": "string (default: '130% 130%')",
|
|
"position?": "string (default: '50% 15%')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import GradientBarsBackground from '@/components/background/GradientBarsBackground';",
|
|
"name": "GradientBarsBackground",
|
|
"path": "@/components/background/GradientBarsBackground",
|
|
"propsSchema": {
|
|
"className?": "string",
|
|
"numBarsPerSide?": "number (default: 8)",
|
|
"gradientFrom?": "string (default: 'var(--color-primary-cta)')",
|
|
"gradientTo?": "string (default: 'transparent')",
|
|
"opacity?": "number (default: 0.075)",
|
|
"sideWidth?": "string (default: '35%')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import CanvasRevealEffect from '@/components/background/CanvasRevealEffect';",
|
|
"name": "CanvasRevealEffect",
|
|
"path": "@/components/background/CanvasRevealEffect",
|
|
"propsSchema": {
|
|
"animationSpeed?": "number (default: 0.4)",
|
|
"opacities?": "number[] (default: [0.3, 0.3, 0.3, 0.5, 0.5, 0.5, 0.8, 0.8, 0.8, 1])",
|
|
"colors?": "number[][] - RGB arrays (default: [[0, 255, 255]])",
|
|
"containerClassName?": "string",
|
|
"dotSize?": "number (default: 3)",
|
|
"showGradient?": "boolean (default: true)"
|
|
}
|
|
},
|
|
{
|
|
"import": "import CanvasRevealBackground from '@/components/background/CanvasRevealBackground';",
|
|
"name": "CanvasRevealBackground",
|
|
"path": "@/components/background/CanvasRevealBackground",
|
|
"propsSchema": {
|
|
"className?": "string",
|
|
"animationSpeed?": "number (default: 5)",
|
|
"dotSize?": "number (default: 3)",
|
|
"height?": "string (default: '30%')",
|
|
"position?": "'center' | 'left' | 'right' (default: 'center')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import CellWaveBackground from '@/components/background/CellWaveBackground';",
|
|
"name": "CellWaveBackground",
|
|
"path": "@/components/background/CellWaveBackground",
|
|
"propsSchema": {
|
|
"className?": "string",
|
|
"columns?": "number (default: 5)",
|
|
"rows?": "number (default: 24)",
|
|
"cellColor?": "string (default: 'var(--color-background-accent)')",
|
|
"duration?": "number (default: 0.25)",
|
|
"delay?": "number (default: 1.25)"
|
|
}
|
|
},
|
|
{
|
|
"import": "import GlowingOrbBackground from '@/components/background/GlowingOrbBackground';",
|
|
"name": "GlowingOrbBackground",
|
|
"path": "@/components/background/GlowingOrbBackground",
|
|
"propsSchema": {
|
|
"className?": "string",
|
|
"blurAmount?": "string (default: '57px')",
|
|
"glowColor?": "string (default: 'var(--color-primary-cta)')",
|
|
"backgroundColor?": "string (default: 'var(--background)')"
|
|
}
|
|
},
|
|
{
|
|
"import": "import BlurBottomBackground from '@/components/background/BlurBottomBackground';",
|
|
"name": "BlurBottomBackground",
|
|
"path": "@/components/background/BlurBottomBackground",
|
|
"propsSchema": {
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import RotatedRaysBackground from '@/components/background/RotatedRaysBackground';",
|
|
"name": "RotatedRaysBackground",
|
|
"path": "@/components/background/RotatedRaysBackground",
|
|
"propsSchema": {
|
|
"animated": "boolean - Required. When true, rays animate with pulsing opacity. When false, rays display static opacity.",
|
|
"showGrid": "boolean - Required. When true, displays a grid overlay fading from top center. When false, no grid is shown.",
|
|
"className?": "string",
|
|
"containerClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import DownwardRaysBackground from '@/components/background/DownwardRaysBackground';",
|
|
"name": "DownwardRaysBackground",
|
|
"path": "@/components/background/DownwardRaysBackground",
|
|
"propsSchema": {
|
|
"animated": "boolean - Required. When true, rays animate with pulsing opacity. When false, rays display static opacity.",
|
|
"showGrid": "boolean - Required. When true, displays a grid overlay fading from top center. When false, no grid is shown.",
|
|
"className?": "string",
|
|
"containerClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import RotatingGradientBackground from '@/components/background/RotatingGradientBackground';",
|
|
"name": "RotatingGradientBackground",
|
|
"path": "@/components/background/RotatingGradientBackground",
|
|
"propsSchema": {
|
|
"className?": "string",
|
|
"gradientColorStart?": "string - Gradient start color. Default: 'var(--color-background-accent)'",
|
|
"gradientColorEnd?": "string - Gradient end color. Default: 'var(--color-background-accent)'",
|
|
"bigCircleSize?": "string - Size of the larger circle. Default: '28vw'",
|
|
"smallCircleSize?": "string - Size of the smaller circle. Default: '21vw'",
|
|
"blurAmount?": "string - Blur amount for gradient circles. Default: '10px'",
|
|
"opacity?": "number - Overall opacity of gradient effect. Default: 0.6",
|
|
"showSparkles?": "boolean - Show sparkle ring effect. Default: true"
|
|
}
|
|
},
|
|
{
|
|
"import": "import { Sparkles } from '@/components/background/Sparkles';",
|
|
"name": "Sparkles",
|
|
"path": "@/components/background/Sparkles",
|
|
"propsSchema": {
|
|
"id?": "string",
|
|
"className?": "string",
|
|
"background?": "string - Default: 'transparent'",
|
|
"particleSize?": "number - Deprecated, use minSize/maxSize instead",
|
|
"minSize?": "number - Minimum particle size. Default: 0.5",
|
|
"maxSize?": "number - Maximum particle size. Default: 1",
|
|
"speed?": "number - Animation speed. Default: 4",
|
|
"particleColor?": "string - Particle color, supports CSS variables. Default: 'var(--color-primary-cta)'",
|
|
"particleDensity?": "number - Number of particles. Default: 100"
|
|
}
|
|
},
|
|
{
|
|
"import": "import SparklesGradientBackground from '@/components/background/SparklesGradientBackground';",
|
|
"name": "SparklesGradientBackground",
|
|
"path": "@/components/background/SparklesGradientBackground",
|
|
"propsSchema": {
|
|
"className?": "string",
|
|
"gradientColor?": "string - Main gradient color. Default: 'var(--color-background-accent)'",
|
|
"accentColor?": "string - Inner accent gradient color. Default: 'var(--color-background-accent)'",
|
|
"blurAmount?": "string - Blur amount for gradients. Default: '6vw'"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroBackgrounds from '@/components/background/HeroBackgrounds';",
|
|
"name": "HeroBackgrounds",
|
|
"path": "@/components/background/HeroBackgrounds",
|
|
"propsSchema": {
|
|
"variant": "'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'glowing-orb' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'rotating-gradient' | 'sparkles-gradient'"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"sectionRegistry": {
|
|
"hero": [
|
|
{
|
|
"import": "import HeroBillboard from '@/components/sections/hero/HeroBillboard';",
|
|
"name": "HeroBillboard",
|
|
"path": "@/components/sections/hero/HeroBillboard",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"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'",
|
|
"avatars?": "Array<{src: string, alt: string}>",
|
|
"avatarText?": "string",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Hero video')",
|
|
"mediaAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"marqueeItems?": "Array<MarqueeItem>",
|
|
"marqueeSpeed?": "number (default: 30)",
|
|
"showMarqueeCard?": "boolean (default: true)",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"avatarGroupClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"marqueeClassName?": "string",
|
|
"marqueeItemClassName?": "string",
|
|
"marqueeCardClassName?": "string",
|
|
"marqueeImageClassName?": "string",
|
|
"marqueeTextClassName?": "string",
|
|
"marqueeIconClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroBillboardCarousel from '@/components/sections/hero/HeroBillboardCarousel';",
|
|
"name": "HeroBillboardCarousel",
|
|
"path": "@/components/sections/hero/HeroBillboardCarousel",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"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'",
|
|
"mediaItems": "Array<{ imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }> - Each item requires either imageSrc or videoSrc",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroBillboardGallery from '@/components/sections/hero/HeroBillboardGallery';",
|
|
"name": "HeroBillboardGallery",
|
|
"path": "@/components/sections/hero/HeroBillboardGallery",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"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'",
|
|
"mediaItems": "Array<{ imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }> - Each item requires either imageSrc or videoSrc",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroSplit from '@/components/sections/hero/HeroSplit';",
|
|
"name": "HeroSplit",
|
|
"path": "@/components/sections/hero/HeroSplit",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'glowing-orb' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"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'",
|
|
"avatars?": "Avatar[] - Array of avatar objects with src and alt properties",
|
|
"avatarText?": "string - Text displayed next to the avatar group",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Hero video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"imagePosition?": "'left' | 'right' (default: 'right')",
|
|
"fixedMediaHeight?": "boolean (default: true) - When true, media wrapper is aspect-square on mobile and md:h-[65vh] on desktop",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"avatarGroupClassName?": "string",
|
|
"marqueeItems?": "Array<{ type: 'image', src: string, alt?: string } | { type: 'text', text: string } | { type: 'text-icon', text: string, icon: LucideIcon }> - Optional marquee at bottom of hero",
|
|
"marqueeSpeed?": "number (default: 30)",
|
|
"showMarqueeCard?": "boolean (default: true) - Card styling for text/text-icon items, images never have cards",
|
|
"marqueeClassName?": "string",
|
|
"marqueeItemClassName?": "string",
|
|
"marqueeCardClassName?": "string",
|
|
"marqueeImageClassName?": "string",
|
|
"marqueeTextClassName?": "string",
|
|
"marqueeIconClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroSplitTestimonial from '@/components/sections/hero/HeroSplitTestimonial';",
|
|
"name": "HeroSplitTestimonial",
|
|
"path": "@/components/sections/hero/HeroSplitTestimonial",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'glowing-orb' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"testimonials": "Array<{ name: string, handle: string, testimonial: string, rating: number, imageSrc?: string, imageAlt?: string }>",
|
|
"testimonialRotationInterval?": "number (default: 5000)",
|
|
"useInvertedBackground?": "boolean (default: false)",
|
|
"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'",
|
|
"avatars?": "Array<{ src: string, alt: string }>",
|
|
"avatarText?": "string",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Hero video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"imagePosition?": "'left' | 'right' (default: 'right')",
|
|
"fixedMediaHeight?": "boolean (default: true)",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"avatarGroupClassName?": "string",
|
|
"testimonialCardClassName?": "string",
|
|
"testimonialContentClassName?": "string",
|
|
"testimonialTextClassName?": "string",
|
|
"testimonialRatingClassName?": "string",
|
|
"testimonialAuthorClassName?": "string",
|
|
"testimonialAuthorImageClassName?": "string",
|
|
"testimonialAuthorNameClassName?": "string",
|
|
"testimonialAuthorHandleClassName?": "string",
|
|
"marqueeItems?": "Array<{ type: 'image', src: string, alt?: string } | { type: 'text', text: string } | { type: 'text-icon', text: string, icon: LucideIcon }>",
|
|
"marqueeSpeed?": "number (default: 30)",
|
|
"showMarqueeCard?": "boolean (default: true)",
|
|
"marqueeClassName?": "string",
|
|
"marqueeItemClassName?": "string",
|
|
"marqueeCardClassName?": "string",
|
|
"marqueeImageClassName?": "string",
|
|
"marqueeTextClassName?": "string",
|
|
"marqueeIconClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroBillboardTestimonial from '@/components/sections/hero/HeroBillboardTestimonial';",
|
|
"name": "HeroBillboardTestimonial",
|
|
"path": "@/components/sections/hero/HeroBillboardTestimonial",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'glowing-orb' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"testimonials": "Array<{ name: string, handle: string, testimonial: string, rating: number, imageSrc?: string, imageAlt?: string }>",
|
|
"testimonialRotationInterval?": "number (default: 5000)",
|
|
"useInvertedBackground?": "boolean (default: false)",
|
|
"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'",
|
|
"avatars?": "Array<{ src: string, alt: string }>",
|
|
"avatarText?": "string",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Hero video')",
|
|
"mediaAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal' (default: 'none')",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"avatarGroupClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"testimonialCardClassName?": "string",
|
|
"testimonialContentClassName?": "string",
|
|
"testimonialTextClassName?": "string",
|
|
"testimonialRatingClassName?": "string",
|
|
"testimonialAuthorClassName?": "string",
|
|
"testimonialAuthorImageClassName?": "string",
|
|
"testimonialAuthorNameClassName?": "string",
|
|
"testimonialAuthorHandleClassName?": "string",
|
|
"marqueeItems?": "Array<{ type: 'image', src: string, alt?: string } | { type: 'text', text: string } | { type: 'text-icon', text: string, icon: LucideIcon }>",
|
|
"marqueeSpeed?": "number (default: 30)",
|
|
"showMarqueeCard?": "boolean (default: true)",
|
|
"marqueeClassName?": "string",
|
|
"marqueeItemClassName?": "string",
|
|
"marqueeCardClassName?": "string",
|
|
"marqueeImageClassName?": "string",
|
|
"marqueeTextClassName?": "string",
|
|
"marqueeIconClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroSplitKpi from '@/components/sections/hero/HeroSplitKpi';",
|
|
"name": "HeroSplitKpi",
|
|
"path": "@/components/sections/hero/HeroSplitKpi",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'glowing-orb' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"kpis": "[KpiItem, KpiItem, KpiItem] - Array of exactly 3 KPI items with value and label",
|
|
"enableKpiAnimation": "boolean - Enable/disable mouse-following animation on KPI boxes",
|
|
"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'",
|
|
"avatars?": "Avatar[] - Array of avatar objects with src and alt properties",
|
|
"avatarText?": "string - Text displayed next to the avatar group",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Hero video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"imagePosition?": "'left' | 'right' (default: 'right')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"avatarGroupClassName?": "string",
|
|
"kpiClassName?": "string",
|
|
"kpiValueClassName?": "string",
|
|
"kpiLabelClassName?": "string",
|
|
"marqueeItems?": "Array<{ type: 'image', src: string, alt?: string } | { type: 'text', text: string } | { type: 'text-icon', text: string, icon: LucideIcon }> - Optional marquee at bottom of hero",
|
|
"marqueeSpeed?": "number (default: 30)",
|
|
"showMarqueeCard?": "boolean (default: true) - Card styling for text/text-icon items, images never have cards",
|
|
"marqueeClassName?": "string",
|
|
"marqueeItemClassName?": "string",
|
|
"marqueeCardClassName?": "string",
|
|
"marqueeImageClassName?": "string",
|
|
"marqueeTextClassName?": "string",
|
|
"marqueeIconClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroOverlay from '@/components/sections/hero/HeroOverlay';",
|
|
"name": "HeroOverlay",
|
|
"path": "@/components/sections/hero/HeroOverlay",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"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'",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Hero video')",
|
|
"showDimOverlay?": "boolean (default: false)",
|
|
"showBlur?": "boolean (default: true)",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"blurClassName?": "string",
|
|
"dimOverlayClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroLogo from '@/components/sections/hero/HeroLogo';",
|
|
"name": "HeroLogo",
|
|
"path": "@/components/sections/hero/HeroLogo",
|
|
"propsSchema": {
|
|
"logoText": "string",
|
|
"description": "string",
|
|
"buttons": "Array<{text: string, onClick?: () => void, href?: string}>",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Hero video')",
|
|
"showDimOverlay?": "boolean (default: false)",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"contentContainerClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"logoContainerClassName?": "string",
|
|
"logoClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"blurClassName?": "string",
|
|
"dimOverlayClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroLogoBillboard from '@/components/sections/hero/HeroLogoBillboard';",
|
|
"name": "HeroLogoBillboard",
|
|
"path": "@/components/sections/hero/HeroLogoBillboard",
|
|
"propsSchema": {
|
|
"logoText": "string",
|
|
"description": "string",
|
|
"buttons": "Array<{ text: string, onClick?: () => void, href?: string }> - Primary and secondary buttons (required, max 2)",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'glowing-orb' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Hero video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"frameStyle?": "'card' | 'browser' (default: 'card')",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"logoContainerClassName?": "string",
|
|
"logoClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"browserBarClassName?": "string",
|
|
"addressBarClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroLogoBillboardSplit from '@/components/sections/hero/HeroLogoBillboardSplit';",
|
|
"name": "HeroLogoBillboardSplit",
|
|
"path": "@/components/sections/hero/HeroLogoBillboardSplit",
|
|
"propsSchema": {
|
|
"logoText": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'glowing-orb' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"buttons": "Array<{text: string, onClick?: () => void, href?: string}> (required)",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"layoutOrder": "'default' | 'reverse' (required)",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Hero video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"frameStyle?": "'card' | 'browser' (default: 'card')",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"logoContainerClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"logoClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"browserBarClassName?": "string",
|
|
"addressBarClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroBillboardScroll from '@/components/sections/hero/HeroBillboardScroll';",
|
|
"name": "HeroBillboardScroll",
|
|
"path": "@/components/sections/hero/HeroBillboardScroll",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"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'",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Hero video')",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"cardWrapperClassName?": "string",
|
|
"cardInnerClassName?": "string",
|
|
"imageClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroBillboardRotatedCarousel from '@/components/sections/hero/HeroBillboardRotatedCarousel';",
|
|
"name": "HeroBillboardRotatedCarousel",
|
|
"path": "@/components/sections/hero/HeroBillboardRotatedCarousel",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"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'",
|
|
"carouselItems": "Array<{ id: string, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }> - Carousel items (minimum 6 items)",
|
|
"autoPlay?": "boolean (default: true)",
|
|
"autoPlayInterval?": "number (default: 4000)",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"carouselClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroCarouselLogo from '@/components/sections/hero/heroCarouselLogo/HeroCarouselLogo';",
|
|
"name": "HeroCarouselLogo",
|
|
"path": "@/components/sections/hero/heroCarouselLogo/HeroCarouselLogo",
|
|
"propsSchema": {
|
|
"logoText": "string",
|
|
"description": "string",
|
|
"buttons": "Array<{text: string, onClick?: () => void, href?: string}> (required)",
|
|
"slides": "Array<{ imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }> - Carousel slide items",
|
|
"autoplayDelay?": "number (default: 3000)",
|
|
"showDimOverlay?": "boolean (default: false)",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"contentContainerClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"logoContainerClassName?": "string",
|
|
"logoClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"blurClassName?": "string",
|
|
"dimOverlayClassName?": "string",
|
|
"progressBarClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroCentered from '@/components/sections/hero/HeroCentered';",
|
|
"name": "HeroCentered",
|
|
"path": "@/components/sections/hero/HeroCentered",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"avatars": "Array<{ src: string, alt: string }> (required)",
|
|
"avatarText?": "string",
|
|
"buttons?": "Array<{ text: string, onClick?: () => void, href?: string }>",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"avatarGroupClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"marqueeItems?": "Array<{ type: 'image', src: string, alt?: string } | { type: 'text', text: string } | { type: 'text-icon', text: string, icon: LucideIcon }> - Optional marquee at bottom of hero",
|
|
"marqueeSpeed?": "number (default: 30)",
|
|
"showMarqueeCard?": "boolean (default: true) - Card styling for text/text-icon items, images never have cards",
|
|
"marqueeClassName?": "string",
|
|
"marqueeItemClassName?": "string",
|
|
"marqueeCardClassName?": "string",
|
|
"marqueeImageClassName?": "string",
|
|
"marqueeTextClassName?": "string",
|
|
"marqueeIconClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroSignup from '@/components/sections/hero/HeroSignup';",
|
|
"name": "HeroSignup",
|
|
"path": "@/components/sections/hero/HeroSignup",
|
|
"propsSchema": {
|
|
"title": "string (required)",
|
|
"description": "string (required)",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'glowing-orb' | 'glowing-orb-sparkles' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"tag": "string (required)",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"inputPlaceholder?": "string (default: 'Enter your email')",
|
|
"buttonText?": "string (default: 'Get Started')",
|
|
"onSubmit?": "(email: string) => void",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"formWrapperClassName?": "string",
|
|
"formClassName?": "string",
|
|
"inputClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroSplitDualMedia from '@/components/sections/hero/HeroSplitDualMedia';",
|
|
"name": "HeroSplitDualMedia",
|
|
"path": "@/components/sections/hero/HeroSplitDualMedia",
|
|
"propsSchema": {
|
|
"title": "string (required)",
|
|
"description": "string (required)",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'glowing-orb' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"tag": "string (required)",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"buttons?": "Array<{text: string, onClick?: () => void, href?: string}>",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"mediaItems": "[{imageSrc?: string; videoSrc?: string; imageAlt?: string; videoAriaLabel?: string;}, {imageSrc?: string; videoSrc?: string; imageAlt?: string; videoAriaLabel?: string;}] - Array of exactly 2 media items with imageSrc/videoSrc",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"rating": "number (required) - Number of stars to display",
|
|
"ratingText": "string (required) - Text displayed next to rating stars",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaItemClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"ratingClassName?": "string",
|
|
"ratingTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroBillboardDashboard from '@/components/sections/hero/HeroBillboardDashboard';",
|
|
"name": "HeroBillboardDashboard",
|
|
"path": "@/components/sections/hero/HeroBillboardDashboard",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"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'",
|
|
"dashboard": "{ title: string, stats: [DashboardStat, DashboardStat, DashboardStat], logoIcon: LucideIcon, sidebarItems: DashboardSidebarItem[], buttons: ButtonConfig[], listItems: DashboardListItem[], imageSrc: string, searchPlaceholder?: string, chartTitle?: string, chartData?: ChartDataItem[], listTitle?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string, className?: string, containerClassName?: string, sidebarClassName?: string, statClassName?: string, chartClassName?: string, listClassName?: string } (required - all Dashboard props passed as a single object)",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"dashboardClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroPersonalLinks from '@/components/sections/hero/HeroPersonalLinks';",
|
|
"name": "HeroPersonalLinks",
|
|
"path": "@/components/sections/hero/HeroPersonalLinks",
|
|
"propsSchema": {
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"socialLinks?": "Array<{ icon: LucideIcon, label: string, href: string }> - Social media links",
|
|
"linkCards": "Array<{ icon?: LucideIcon, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string, title: string, description: string, button: ButtonConfig }> (required)",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"ariaLabel?": "string (default: 'Personal links section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textboxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"socialLinksClassName?": "string",
|
|
"socialLinkClassName?": "string",
|
|
"linkCardsClassName?": "string",
|
|
"linkCardClassName?": "string",
|
|
"linkCardIconClassName?": "string",
|
|
"linkCardTitleClassName?": "string",
|
|
"linkCardDescriptionClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import HeroSplitDoubleCarousel from '@/components/sections/hero/HeroSplitDoubleCarousel';",
|
|
"name": "HeroSplitDoubleCarousel",
|
|
"path": "@/components/sections/hero/HeroSplitDoubleCarousel",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'glowing-orb' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"leftCarouselItems": "Array<{ imageSrc?: string; videoSrc?: string; imageAlt?: string; videoAriaLabel?: string }>",
|
|
"rightCarouselItems": "Array<{ imageSrc?: string; videoSrc?: string; imageAlt?: string; videoAriaLabel?: 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'",
|
|
"avatars?": "Avatar[] - Array of avatar objects with src and alt properties",
|
|
"avatarText?": "string - Text displayed next to the avatar group",
|
|
"carouselPosition?": "'left' | 'right' (default: 'right')",
|
|
"ariaLabel?": "string (default: 'Hero section')",
|
|
"marqueeItems?": "MarqueeItem[] - Optional logo marquee items for bottom of section",
|
|
"marqueeSpeed?": "number (default: 30)",
|
|
"showMarqueeCard?": "boolean (default: true)",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"carouselWrapperClassName?": "string",
|
|
"carouselColumnClassName?": "string",
|
|
"carouselItemClassName?": "string",
|
|
"carouselImageClassName?": "string",
|
|
"avatarGroupClassName?": "string",
|
|
"marqueeClassName?": "string",
|
|
"marqueeItemClassName?": "string",
|
|
"marqueeCardClassName?": "string",
|
|
"marqueeImageClassName?": "string",
|
|
"marqueeTextClassName?": "string",
|
|
"marqueeIconClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"about": [
|
|
{
|
|
"import": "import SplitAbout from '@/components/sections/about/SplitAbout';",
|
|
"name": "SplitAbout",
|
|
"path": "@/components/sections/about/SplitAbout",
|
|
"propsSchema": {
|
|
"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'",
|
|
"bulletPoints": "Array<{ title: string, description: string, icon?: LucideIcon }>",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'About section video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"ariaLabel?": "string (default: 'About section')",
|
|
"imagePosition?": "'left' | 'right' (default: 'right')",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)",
|
|
"useInvertedBackground": "boolean",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"bulletPointClassName?": "string",
|
|
"bulletTitleClassName?": "string",
|
|
"bulletDescriptionClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TextSplitAbout from '@/components/sections/about/TextSplitAbout';",
|
|
"name": "TextSplitAbout",
|
|
"path": "@/components/sections/about/TextSplitAbout",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string[]",
|
|
"buttons?": "Array<{ text: string, onClick?: () => void, href?: string, props?: Partial<ButtonPropsForVariant<CTAButtonVariant>> }>",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"showBorder?": "boolean (default: false)",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'About section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TextAbout from '@/components/sections/about/TextAbout';",
|
|
"name": "TextAbout",
|
|
"path": "@/components/sections/about/TextAbout",
|
|
"propsSchema": {
|
|
"tag?": "string",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"title": "string",
|
|
"buttons?": "Array<{ text: string, onClick?: () => void, href?: string, props?: Partial<ButtonPropsForVariant<CTAButtonVariant>> }>",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'About section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import MediaAbout from '@/components/sections/about/MediaAbout';",
|
|
"name": "MediaAbout",
|
|
"path": "@/components/sections/about/MediaAbout",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"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'",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string",
|
|
"videoAriaLabel?": "string",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'About section')",
|
|
"className?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TestimonialAboutCard from '@/components/sections/about/TestimonialAboutCard';",
|
|
"name": "TestimonialAboutCard",
|
|
"path": "@/components/sections/about/TestimonialAboutCard",
|
|
"propsSchema": {
|
|
"tag": "string (required)",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"title": "string (required)",
|
|
"description": "string (required)",
|
|
"subdescription": "string (required)",
|
|
"icon": "LucideIcon (required - displayed in the icon box)",
|
|
"imageSrc": "string (required if no videoSrc)",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoSrc": "string (required if no imageSrc)",
|
|
"videoAriaLabel?": "string (default: 'Testimonial video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Testimonial section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"subdescriptionClassName?": "string",
|
|
"footerClassName?": "string",
|
|
"iconBoxClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import InlineImageSplitTextAbout from '@/components/sections/about/InlineImageSplitTextAbout';",
|
|
"name": "InlineImageSplitTextAbout",
|
|
"path": "@/components/sections/about/InlineImageSplitTextAbout",
|
|
"propsSchema": {
|
|
"heading": "Array<{ type: 'text'; content: string } | { type: 'image'; src: string; alt?: string }>",
|
|
"buttons?": "Array<{ text: string, onClick?: () => void, href?: string, props?: Partial<ButtonPropsForVariant<CTAButtonVariant>> }>",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'About section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"headingClassName?": "string",
|
|
"imageWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import AboutMetric from '@/components/sections/about/AboutMetric';",
|
|
"name": "AboutMetric",
|
|
"path": "@/components/sections/about/AboutMetric",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"metrics": "Array<{ icon: LucideIcon, label: string, value: string }>",
|
|
"metricsAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'About metrics section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"metricsContainerClassName?": "string",
|
|
"metricCardClassName?": "string",
|
|
"metricIconClassName?": "string",
|
|
"metricLabelClassName?": "string",
|
|
"metricValueClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import MetricSplitMediaAbout from '@/components/sections/about/MetricSplitMediaAbout';",
|
|
"name": "MetricSplitMediaAbout",
|
|
"path": "@/components/sections/about/MetricSplitMediaAbout",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"metrics": "Array<{ value: string, title: string }>",
|
|
"useInvertedBackground": "boolean",
|
|
"tag?": "string",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string",
|
|
"videoAriaLabel?": "string (default: 'About section video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"metricsAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"ariaLabel?": "string (default: 'About section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"leftColumnClassName?": "string",
|
|
"rightColumnClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"metricsContainerClassName?": "string",
|
|
"metricCardClassName?": "string",
|
|
"metricValueClassName?": "string",
|
|
"metricTitleClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"imageClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"feature": [
|
|
{
|
|
"import": "import FeatureCardOne from '@/components/sections/feature/FeatureCardOne';",
|
|
"name": "FeatureCardOne",
|
|
"path": "@/components/sections/feature/FeatureCardOne",
|
|
"propsSchema": {
|
|
"features": "Array<{ title: string, description: string, button?: {text: string, onClick?: () => void, href?: string} } & ({ imageSrc: string, imageAlt?: string } | { videoSrc: string, videoAriaLabel?: string })>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' | 'one-large-right-three-stacked-left' | 'items-top-row-full-width-bottom' | 'full-width-top-items-bottom-row' | 'one-large-left-three-stacked-right' | 'two-items-per-row' | 'timeline'",
|
|
"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)",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"mediaClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"cardButtonClassName?": "string",
|
|
"cardButtonTextClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"useInvertedBackground": "boolean"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardThree from '@/components/sections/feature/featureCardThree/FeatureCardThree';",
|
|
"name": "FeatureCardThree",
|
|
"path": "@/components/sections/feature/featureCardThree/FeatureCardThree",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: string, title: string, description: string, imageSrc: string, imageAlt?: string }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' | 'one-large-right-three-stacked-left' | 'items-top-row-full-width-bottom' | 'full-width-top-items-bottom-row' | 'one-large-left-three-stacked-right' | 'timeline' (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"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: 'Feature 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",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"itemContentClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardSix from '@/components/sections/feature/FeatureCardSix';",
|
|
"name": "FeatureCardSix",
|
|
"path": "@/components/sections/feature/FeatureCardSix",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: number, title: string, description: string, buttons?: ButtonConfig[] } & ({ imageSrc: string, imageAlt?: string } | { videoSrc: string, videoAriaLabel?: 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: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"cardContentClassName?": "string",
|
|
"stepNumberClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"imageContainerClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"cardButtonClassName?": "string",
|
|
"cardButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardSeven from '@/components/sections/feature/FeatureCardSeven';",
|
|
"name": "FeatureCardSeven",
|
|
"path": "@/components/sections/feature/FeatureCardSeven",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: number, title: string, description: string, buttons?: ButtonConfig[] } & ({ imageSrc: string, imageAlt?: string } | { videoSrc: string, videoAriaLabel?: string })>",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"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: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"cardContentClassName?": "string",
|
|
"stepNumberClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"imageContainerClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"cardButtonClassName?": "string",
|
|
"cardButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardEight from '@/components/sections/feature/FeatureCardEight';",
|
|
"name": "FeatureCardEight",
|
|
"path": "@/components/sections/feature/FeatureCardEight",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: number, title: string, description: string } & ({ imageSrc: string, imageAlt?: string } | { videoSrc: string, videoAriaLabel?: 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: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"progressBarClassName?": "string",
|
|
"cardContentClassName?": "string",
|
|
"stepNumberClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"mediaContainerClassName?": "string",
|
|
"mediaClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardNine from '@/components/sections/feature/FeatureCardNine';",
|
|
"name": "FeatureCardNine",
|
|
"path": "@/components/sections/feature/FeatureCardNine",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: number, title: string, description: string, buttons?: ButtonConfig[], phoneOne: ({ imageSrc: string, imageAlt?: string } | { videoSrc: string, videoAriaLabel?: string }), phoneTwo: ({ imageSrc: string, imageAlt?: string } | { videoSrc: string, videoAriaLabel?: string }) }>",
|
|
"showStepNumbers": "boolean (required - controls whether step number badges display)",
|
|
"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'",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"desktopContainerClassName?": "string",
|
|
"mobileContainerClassName?": "string",
|
|
"desktopContentClassName?": "string",
|
|
"desktopWrapperClassName?": "string",
|
|
"mobileWrapperClassName?": "string",
|
|
"phoneFrameClassName?": "string",
|
|
"mobilePhoneFrameClassName?": "string",
|
|
"featureContentClassName?": "string",
|
|
"stepNumberClassName?": "string",
|
|
"featureTitleClassName?": "string",
|
|
"featureDescriptionClassName?": "string",
|
|
"cardButtonClassName?": "string",
|
|
"cardButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardTen from '@/components/sections/feature/FeatureCardTen';",
|
|
"name": "FeatureCardTen",
|
|
"path": "@/components/sections/feature/FeatureCardTen",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: string, title: string, description: string, media: ({ imageSrc: string, imageAlt?: string } | { videoSrc: string, videoAriaLabel?: string }), items: Array<{ icon: LucideIcon, text: string }>, reverse: boolean }>",
|
|
"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)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"itemClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaCardClassName?": "string",
|
|
"numberClassName?": "string",
|
|
"contentWrapperClassName?": "string",
|
|
"featureTitleClassName?": "string",
|
|
"featureDescriptionClassName?": "string",
|
|
"listItemClassName?": "string",
|
|
"iconContainerClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"gapClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureHoverPattern from '@/components/sections/feature/featureHoverPattern/FeatureHoverPattern';",
|
|
"name": "FeatureHoverPattern",
|
|
"path": "@/components/sections/feature/featureHoverPattern/FeatureHoverPattern",
|
|
"propsSchema": {
|
|
"features": "Array<{ icon: LucideIcon, title: string, description: string, button?: ButtonConfig }> (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string (required)",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string (required)",
|
|
"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 (required)",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons' - for 5+ items)",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-80 2xl:min-h-90')",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"iconContainerClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"gradientClassName?": "string - Custom gradient for hover pattern (default: 'bg-gradient-to-r from-accent to-background-accent')",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"cardButtonClassName?": "string",
|
|
"cardButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureBorderGlow from '@/components/sections/feature/featureBorderGlow/FeatureBorderGlow';",
|
|
"name": "FeatureBorderGlow",
|
|
"path": "@/components/sections/feature/featureBorderGlow/FeatureBorderGlow",
|
|
"propsSchema": {
|
|
"features": "Array<{ icon: LucideIcon, title: string, description: string }> (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string (required)",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string (required)",
|
|
"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 (required)",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons' - for 5+ items)",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-75 2xl:min-h-85')",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"iconContainerClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardTwelve from '@/components/sections/feature/FeatureCardTwelve';",
|
|
"name": "FeatureCardTwelve",
|
|
"path": "@/components/sections/feature/FeatureCardTwelve",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: string, label: string, title: string, items: string[], buttons?: Array<{text: string, onClick?: () => void, href?: string}> }>",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)",
|
|
"useInvertedBackground": "boolean",
|
|
"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'",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"cardContentClassName?": "string",
|
|
"labelClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"itemsContainerClassName?": "string",
|
|
"itemTextClassName?": "string",
|
|
"cardButtonClassName?": "string",
|
|
"cardButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardSixteen from '@/components/sections/feature/FeatureCardSixteen';",
|
|
"name": "FeatureCardSixteen",
|
|
"path": "@/components/sections/feature/FeatureCardSixteen",
|
|
"propsSchema": {
|
|
"negativeCard": "{ items: string[] } (required)",
|
|
"positiveCard": "{ items: string[] } (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d'",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"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'",
|
|
"ariaLabel?": "string (default: 'Feature comparison section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"itemsListClassName?": "string",
|
|
"itemClassName?": "string",
|
|
"itemIconClassName?": "string",
|
|
"itemTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardNineteen from '@/components/sections/feature/FeatureCardNineteen';",
|
|
"name": "FeatureCardNineteen",
|
|
"path": "@/components/sections/feature/FeatureCardNineteen",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: number, tag: string, title: string, subtitle: string, description: string, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string, buttons?: Array<{text: string, onClick?: () => void, href?: string}> }> (required)",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"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'",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"cardContentClassName?": "string",
|
|
"cardTagClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"cardButtonClassName?": "string",
|
|
"cardButtonTextClassName?": "string",
|
|
"imageContainerClassName?": "string",
|
|
"imageClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardTwentyOne from '@/components/sections/feature/FeatureCardTwentyOne';",
|
|
"name": "FeatureCardTwentyOne",
|
|
"path": "@/components/sections/feature/FeatureCardTwentyOne",
|
|
"propsSchema": {
|
|
"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'",
|
|
"accordionItems": "Array<{ id: string, title: string, content: string }>",
|
|
"imageSrc?": "string (either imageSrc or videoSrc required)",
|
|
"imageAlt?": "string",
|
|
"videoSrc?": "string (either imageSrc or videoSrc required)",
|
|
"videoAriaLabel?": "string",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"useInvertedBackground": "boolean",
|
|
"mediaPosition?": "'left' | 'right' (default: 'left')",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"accordionContainerClassName?": "string",
|
|
"accordionClassName?": "string",
|
|
"accordionTitleClassName?": "string",
|
|
"accordionContentClassName?": "string",
|
|
"accordionIconContainerClassName?": "string",
|
|
"accordionIconClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardMedia from '@/components/sections/feature/FeatureCardMedia';",
|
|
"name": "FeatureCardMedia",
|
|
"path": "@/components/sections/feature/FeatureCardMedia",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: string, title: string, description: string, tag: string, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string, buttons?: ButtonConfig[], onCardClick?: () => void }>",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal'",
|
|
"title": "string",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image'",
|
|
"useInvertedBackground": "boolean",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }>",
|
|
"tag?": "string",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"buttons?": "Array<{ text: string, href?: string, onClick?: () => void }>",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"ariaLabel?": "string (default: 'Features section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"itemClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"cardButtonContainerClassName?": "string",
|
|
"cardButtonClassName?": "string",
|
|
"cardButtonTextClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureBento from '@/components/sections/feature/FeatureBento';",
|
|
"name": "FeatureBento",
|
|
"path": "@/components/sections/feature/FeatureBento",
|
|
"propsSchema": {
|
|
"features": "Array<FeatureCard> - Each card has { title: string, description: string, button?: ButtonConfig } and one of: { bentoComponent: 'globe' } | { bentoComponent: 'animated-bar-chart' } | { bentoComponent: 'map' } | { bentoComponent: 'line-chart' } | { bentoComponent: 'phone', statusIcon: LucideIcon, alertIcon: LucideIcon, alertTitle: string, alertMessage: string, apps: Array<{ name: string, icon: LucideIcon }> (exactly 8 items) } | { bentoComponent: 'chat', aiIcon: LucideIcon, userIcon: LucideIcon, exchanges: Array<{ userMessage: string, aiResponse: string }>, placeholder: string } | { bentoComponent: 'icon-info-cards', items: Array<{ icon: LucideIcon, label: string, value: string }> } | { bentoComponent: '3d-stack-cards', items: [{ icon: LucideIcon, title: string, subtitle: string, detail: string }, { icon: LucideIcon, title: string, subtitle: string, detail: string }, { icon: LucideIcon, title: string, subtitle: string, detail: string }] } | { bentoComponent: '3d-task-list', title: string, items: Array<{ icon: LucideIcon, label: string, time: string }> } | { bentoComponent: 'orbiting-icons', centerIcon: LucideIcon, items: Array<{ icon: LucideIcon, ring?: 1 | 2 | 3, duration?: number }> } | { bentoComponent: 'marquee', centerIcon: LucideIcon, variant: 'text', texts: string[] } | { bentoComponent: 'marquee', centerIcon: LucideIcon, variant: 'icon', icons: LucideIcon[] } | { bentoComponent: '3d-card-grid', items: [{ name: string, icon: LucideIcon }, { name: string, icon: LucideIcon }, { name: string, icon: LucideIcon }, { name: string, icon: LucideIcon }], centerIcon: LucideIcon } | { bentoComponent: 'reveal-icon', icon: LucideIcon } | { bentoComponent: 'timeline', heading: string, subheading: string, items: [{ label: string, detail: string }, { label: string, detail: string }, { label: string, detail: string }], completedLabel: string } | { bentoComponent: 'media-stack', items: [{ imageSrc?: string, videoSrc?: string, imageAlt?: string }, { imageSrc?: string, videoSrc?: string, imageAlt?: string }, { imageSrc?: string, videoSrc?: string, imageAlt?: string }] }",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'blur-reveal' (required)",
|
|
"title": "string (required)",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string (required)",
|
|
"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 (required)",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"cardButtonClassName?": "string",
|
|
"cardButtonTextClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardTwentyThree from '@/components/sections/feature/FeatureCardTwentyThree';",
|
|
"name": "FeatureCardTwentyThree",
|
|
"path": "@/components/sections/feature/FeatureCardTwentyThree",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: string, title: string, tags: string[], imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string, onFeatureClick?: () => void }>",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"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'",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"ariaLabel?": "string (default: 'Features section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"itemClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"tagsContainerClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"arrowClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardTwentyFour from '@/components/sections/feature/FeatureCardTwentyFour';",
|
|
"name": "FeatureCardTwentyFour",
|
|
"path": "@/components/sections/feature/FeatureCardTwentyFour",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: string, title: string, author: string, description: string, tags: string[], imageSrc?: string, imageAlt?: string, videoSrc?: string, videoAriaLabel?: string, onFeatureClick?: () => void }> - Feature card items (requires imageSrc or videoSrc)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string (required)",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string (required)",
|
|
"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)",
|
|
"useInvertedBackground": "boolean (required)",
|
|
"ariaLabel?": "string (default: 'Features section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"cardContentClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"authorClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"tagsContainerClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardTwentyFive from '@/components/sections/feature/FeatureCardTwentyFive';",
|
|
"name": "FeatureCardTwentyFive",
|
|
"path": "@/components/sections/feature/FeatureCardTwentyFive",
|
|
"propsSchema": {
|
|
"features": "Array<{ title: string, description: string, icon: LucideIcon, mediaItems: [{imageSrc?: string; videoSrc?: string; imageAlt?: string; videoAriaLabel?: string;}, {imageSrc?: string; videoSrc?: string; imageAlt?: string; videoAriaLabel?: string;}] }> - Feature cards with dual media",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d' (required)",
|
|
"title": "string (required)",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string (required)",
|
|
"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)",
|
|
"useInvertedBackground": "boolean (required)",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"mediaClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"cardIconClassName?": "string",
|
|
"cardIconWrapperClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardTwentySix from '@/components/sections/feature/FeatureCardTwentySix';",
|
|
"name": "FeatureCardTwentySix",
|
|
"path": "@/components/sections/feature/FeatureCardTwentySix",
|
|
"propsSchema": {
|
|
"features": "Array<{ title: string, description: string, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string, buttonIcon: LucideIcon, buttonHref?: string, buttonOnClick?: () => void }>",
|
|
"title": "string (required)",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string (required)",
|
|
"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)",
|
|
"useInvertedBackground": "boolean (required)",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"cardButtonClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FeatureCardTwentySeven from '@/components/sections/feature/FeatureCardTwentySeven';",
|
|
"name": "FeatureCardTwentySeven",
|
|
"path": "@/components/sections/feature/FeatureCardTwentySeven",
|
|
"propsSchema": {
|
|
"features": "Array<{ id: string, title: string, descriptions: string[], imageSrc?: string, videoSrc?: string, imageAlt?: string }>",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' | 'one-large-right-three-stacked-left' | 'items-top-row-full-width-bottom' | 'full-width-top-items-bottom-row' | 'one-large-left-three-stacked-right' | 'two-items-per-row' | 'timeline' (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string (required)",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string (required)",
|
|
"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)",
|
|
"useInvertedBackground": "boolean",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-none')",
|
|
"ariaLabel?": "string (default: 'Feature section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"product": [
|
|
{
|
|
"import": "import ProductCardOne from '@/components/sections/product/ProductCardOne';",
|
|
"name": "ProductCardOne",
|
|
"path": "@/components/sections/product/ProductCardOne",
|
|
"propsSchema": {
|
|
"products?": "Array<{ id: string, name: string, price: string, imageSrc: string, imageAlt?: string, onFavorite?: () => void, onProductClick?: () => void, isFavorited?: boolean }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' | 'one-large-right-three-stacked-left' | 'items-top-row-full-width-bottom' | 'full-width-top-items-bottom-row' | 'one-large-left-three-stacked-right' (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-95 2xl:min-h-105')",
|
|
"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: 'Product section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"cardNameClassName?": "string",
|
|
"cardPriceClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ProductCardTwo from '@/components/sections/product/ProductCardTwo';",
|
|
"name": "ProductCardTwo",
|
|
"path": "@/components/sections/product/ProductCardTwo",
|
|
"propsSchema": {
|
|
"products?": "Array<{ id: string, brand: string, name: string, price: string, rating: number, reviewCount: string, imageSrc: string, imageAlt?: string, onFavorite?: () => void, onProductClick?: () => void, isFavorited?: boolean }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-95 2xl:min-h-105')",
|
|
"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: 'Product section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"cardBrandClassName?": "string",
|
|
"cardNameClassName?": "string",
|
|
"cardPriceClassName?": "string",
|
|
"cardRatingClassName?": "string",
|
|
"actionButtonClassName?": "string - Styles the action button on product image",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ProductCardThree from '@/components/sections/product/ProductCardThree';",
|
|
"name": "ProductCardThree",
|
|
"path": "@/components/sections/product/ProductCardThree",
|
|
"propsSchema": {
|
|
"products": "Array<{ id: string, name: string, price: string, imageSrc: string, imageAlt?: string, onFavorite?: () => void, onProductClick?: () => void, onQuantityChange?: (quantity: number) => void, isFavorited?: boolean, initialQuantity?: number, priceButtonProps?: Partial<ButtonPropsForVariant<CTAButtonVariant>> }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' | 'one-large-right-three-stacked-left' | 'one-large-left-three-stacked-right' (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-95 2xl:min-h-105')",
|
|
"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: 'Product section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"cardNameClassName?": "string",
|
|
"quantityControlsClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ProductCardFour from '@/components/sections/product/ProductCardFour';",
|
|
"name": "ProductCardFour",
|
|
"path": "@/components/sections/product/ProductCardFour",
|
|
"propsSchema": {
|
|
"products?": "Array<{ id: string, name: string, price: string, variant: string, imageSrc: string, imageAlt?: string, onFavorite?: () => void, onProductClick?: () => void, isFavorited?: boolean }> - Product items",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' | 'one-large-right-three-stacked-left' | 'one-large-left-three-stacked-right' (required)",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-95 2xl:min-h-105')",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"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 (required)",
|
|
"ariaLabel?": "string (default: 'Product section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"cardNameClassName?": "string",
|
|
"cardPriceClassName?": "string",
|
|
"cardVariantClassName?": "string",
|
|
"actionButtonClassName?": "string - Styles the action button on product image",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"pricing": [
|
|
{
|
|
"import": "import PricingCardOne from '@/components/sections/pricing/PricingCardOne';",
|
|
"name": "PricingCardOne",
|
|
"path": "@/components/sections/pricing/PricingCardOne",
|
|
"propsSchema": {
|
|
"plans": "Array<{ id: string, badge: string, badgeIcon?: LucideIcon, price: string, subtitle: string, features: string[] }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d'",
|
|
"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: 'Pricing 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",
|
|
"badgeClassName?": "string",
|
|
"priceClassName?": "string",
|
|
"subtitleClassName?": "string",
|
|
"featuresClassName?": "string",
|
|
"featureItemClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import PricingCardTwo from '@/components/sections/pricing/PricingCardTwo';",
|
|
"name": "PricingCardTwo",
|
|
"path": "@/components/sections/pricing/PricingCardTwo",
|
|
"propsSchema": {
|
|
"plans": "Array<{ id: string, badge: string, badgeIcon?: LucideIcon, price: string, subtitle: string, buttons: Array<{text: string, onClick?: () => void, href?: string}>, features: string[] }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"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: 'Pricing 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",
|
|
"badgeClassName?": "string",
|
|
"priceClassName?": "string",
|
|
"subtitleClassName?": "string",
|
|
"planButtonContainerClassName?": "string",
|
|
"planButtonClassName?": "string",
|
|
"featuresClassName?": "string",
|
|
"featureItemClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import PricingCardThree from '@/components/sections/pricing/PricingCardThree';",
|
|
"name": "PricingCardThree",
|
|
"path": "@/components/sections/pricing/PricingCardThree",
|
|
"propsSchema": {
|
|
"plans": "Array<{ id: string, badge?: string, badgeIcon?: LucideIcon, price: string, name: string, buttons: Array<{text: string, onClick?: () => void, href?: string}>, features: string[] }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"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: 'Pricing 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",
|
|
"badgeClassName?": "string",
|
|
"priceClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"planButtonContainerClassName?": "string",
|
|
"planButtonClassName?": "string",
|
|
"featuresClassName?": "string",
|
|
"featureItemClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import PricingCardFive from '@/components/sections/pricing/PricingCardFive';",
|
|
"name": "PricingCardFive",
|
|
"path": "@/components/sections/pricing/PricingCardFive",
|
|
"propsSchema": {
|
|
"plans": "Array<{ id: string, tag: string, tagIcon?: LucideIcon, price: string, period: string, description: string, button: {text: string, onClick?: () => void, href?: string}, featuresTitle: string, features: string[] }>",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"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'",
|
|
"ariaLabel?": "string (default: 'Pricing section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"cardContentClassName?": "string",
|
|
"planTagClassName?": "string",
|
|
"planPriceClassName?": "string",
|
|
"planPeriodClassName?": "string",
|
|
"planDescriptionClassName?": "string",
|
|
"planButtonClassName?": "string",
|
|
"planButtonTextClassName?": "string",
|
|
"featuresTitleClassName?": "string",
|
|
"featuresListClassName?": "string",
|
|
"featureItemClassName?": "string",
|
|
"featureIconClassName?": "string",
|
|
"featureTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import PricingCardEight from '@/components/sections/pricing/PricingCardEight';",
|
|
"name": "PricingCardEight",
|
|
"path": "@/components/sections/pricing/PricingCardEight",
|
|
"propsSchema": {
|
|
"plans": "Array<{ id: string, badge: string, badgeIcon?: LucideIcon, price: string, subtitle: string, buttons: Array<{text: string, onClick?: () => void, href?: string}>, features: string[] }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal'",
|
|
"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'",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Pricing section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"badgeClassName?": "string",
|
|
"priceClassName?": "string",
|
|
"subtitleClassName?": "string",
|
|
"planButtonContainerClassName?": "string",
|
|
"planButtonClassName?": "string",
|
|
"featuresClassName?": "string",
|
|
"featureItemClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import PricingCardNine from '@/components/sections/pricing/PricingCardNine';",
|
|
"name": "PricingCardNine",
|
|
"path": "@/components/sections/pricing/PricingCardNine",
|
|
"propsSchema": {
|
|
"plans": "Array<{ id: string, title: string, price: string, period: string, features: string[], button: {text: string, onClick?: () => void, href?: string}, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }>",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"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'",
|
|
"ariaLabel?": "string (default: 'Pricing section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"cardContentClassName?": "string",
|
|
"planImageWrapperClassName?": "string",
|
|
"planImageClassName?": "string",
|
|
"planTitleClassName?": "string",
|
|
"planPriceClassName?": "string",
|
|
"planButtonClassName?": "string",
|
|
"planButtonTextClassName?": "string",
|
|
"featuresListClassName?": "string",
|
|
"featureItemClassName?": "string",
|
|
"featureIconClassName?": "string",
|
|
"featureTextClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"metric": [
|
|
{
|
|
"import": "import MetricCardOne from '@/components/sections/metrics/MetricCardOne';",
|
|
"name": "MetricCardOne",
|
|
"path": "@/components/sections/metrics/MetricCardOne",
|
|
"propsSchema": {
|
|
"metrics": "Array<{ id: string, value: string, title: string, description: string, icon: LucideIcon }>",
|
|
"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",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"iconContainerClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import MetricCardTwo from '@/components/sections/metrics/MetricCardTwo';",
|
|
"name": "MetricCardTwo",
|
|
"path": "@/components/sections/metrics/MetricCardTwo",
|
|
"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"
|
|
}
|
|
},
|
|
{
|
|
"import": "import MetricCardThree from '@/components/sections/metrics/MetricCardThree';",
|
|
"name": "MetricCardThree",
|
|
"path": "@/components/sections/metrics/MetricCardThree",
|
|
"propsSchema": {
|
|
"metrics": "Array<{ id: string, icon: LucideIcon, title: string, value: string }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"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",
|
|
"iconContainerClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"metricTitleClassName?": "string",
|
|
"valueClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import MetricCardSeven from '@/components/sections/metrics/MetricCardSeven';",
|
|
"name": "MetricCardSeven",
|
|
"path": "@/components/sections/metrics/MetricCardSeven",
|
|
"propsSchema": {
|
|
"metrics": "Array<{ id: string, value: string, title: string, items: string[] }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"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 - For styling the large metric value",
|
|
"metricTitleClassName?": "string - For styling the metric title text",
|
|
"featuresClassName?": "string - For styling the PricingFeatureList container",
|
|
"featureItemClassName?": "string - For styling individual feature items",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import MetricCardTen from '@/components/sections/metrics/MetricCardTen';",
|
|
"name": "MetricCardTen",
|
|
"path": "@/components/sections/metrics/MetricCardTen",
|
|
"propsSchema": {
|
|
"metrics": "Array<{ id: string, title: string, subtitle: string, category: string, value: string, buttons?: Array<{text: string, onClick?: () => void, href?: string}> }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal'",
|
|
"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' | 'centered' | 'left' | 'right' | 'spread'",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Metrics section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"subtitleClassName?": "string",
|
|
"categoryClassName?": "string",
|
|
"valueClassName?": "string",
|
|
"footerClassName?": "string",
|
|
"cardButtonClassName?": "string",
|
|
"cardButtonTextClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import MetricCardEleven from '@/components/sections/metrics/MetricCardEleven';",
|
|
"name": "MetricCardEleven",
|
|
"path": "@/components/sections/metrics/MetricCardEleven",
|
|
"propsSchema": {
|
|
"metrics": "Array<{ id: string, value: string, title: string, description: string, imageSrc?: string, imageAlt?: string, videoSrc?: string, videoAriaLabel?: string }>",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal'",
|
|
"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'",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Metrics section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"valueClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardDescriptionClassName?": "string",
|
|
"mediaCardClassName?": "string",
|
|
"mediaClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import MetricCardFourteen from '@/components/sections/metrics/MetricCardFourteen';",
|
|
"name": "MetricCardFourteen",
|
|
"path": "@/components/sections/metrics/MetricCardFourteen",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"tag": "string",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"metrics": "Array<{ id: string, value: string, description: string }>",
|
|
"metricsAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Metrics section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"metricsContainerClassName?": "string",
|
|
"metricClassName?": "string",
|
|
"valueClassName?": "string",
|
|
"descriptionClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"team": [
|
|
{
|
|
"import": "import TeamCardOne from '@/components/sections/team/TeamCardOne';",
|
|
"name": "TeamCardOne",
|
|
"path": "@/components/sections/team/TeamCardOne",
|
|
"propsSchema": {
|
|
"members": "Array<{ id: string, name: string, role: string, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' | 'one-large-right-three-stacked-left' | 'items-top-row-full-width-bottom' | 'full-width-top-items-bottom-row' | 'one-large-left-three-stacked-right' (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d'",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-95 2xl:min-h-105')",
|
|
"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: 'Team 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",
|
|
"imageClassName?": "string",
|
|
"overlayClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"roleClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TeamCardTwo from '@/components/sections/team/TeamCardTwo';",
|
|
"name": "TeamCardTwo",
|
|
"path": "@/components/sections/team/TeamCardTwo",
|
|
"propsSchema": {
|
|
"members": "Array<{ id: string, name: string, role: string, description: string, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string, socialLinks?: Array<{ icon: LucideIcon, url: string }> }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' | 'one-large-right-three-stacked-left' | 'items-top-row-full-width-bottom' | 'full-width-top-items-bottom-row' | 'one-large-left-three-stacked-right' (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-95 2xl:min-h-105')",
|
|
"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: 'Team 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",
|
|
"imageClassName?": "string",
|
|
"overlayClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"roleClassName?": "string",
|
|
"memberDescriptionClassName?": "string",
|
|
"socialLinksClassName?": "string",
|
|
"socialIconClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TeamCardFive from '@/components/sections/team/TeamCardFive';",
|
|
"name": "TeamCardFive",
|
|
"path": "@/components/sections/team/TeamCardFive",
|
|
"propsSchema": {
|
|
"team": "Array<{ id: string, name: string, role: string, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }>",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)",
|
|
"useInvertedBackground": "boolean",
|
|
"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'",
|
|
"ariaLabel?": "string (default: 'Team section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"roleClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TeamCardSix from '@/components/sections/team/TeamCardSix';",
|
|
"name": "TeamCardSix",
|
|
"path": "@/components/sections/team/TeamCardSix",
|
|
"propsSchema": {
|
|
"members": "Array<{ id: string, name: string, role: string, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'one-large-right-three-stacked-left' | 'items-top-row-full-width-bottom' | 'full-width-top-items-bottom-row' | 'one-large-left-three-stacked-right' (required - determines grid layout or carousel trigger)",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-95 2xl:min-h-105')",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d'",
|
|
"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: 'Team 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",
|
|
"imageClassName?": "string",
|
|
"overlayClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"roleClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TeamCardTen from '@/components/sections/team/TeamCardTen';",
|
|
"name": "TeamCardTen",
|
|
"path": "@/components/sections/team/TeamCardTen",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"tag": "string",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"membersAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"members": "Array<{ id: string, name: string, imageSrc?: string, imageAlt?: string, videoSrc?: string, videoAriaLabel?: string }>",
|
|
"memberVariant": "'default' | 'card' (required - 'default': no card styling, 'card': each member wrapped in card with rounded corners)",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Team section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"membersContainerClassName?": "string",
|
|
"memberClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string",
|
|
"nameClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TeamCardEleven from '@/components/sections/team/TeamCardEleven';",
|
|
"name": "TeamCardEleven",
|
|
"path": "@/components/sections/team/TeamCardEleven",
|
|
"propsSchema": {
|
|
"groups": "Array<{ id: string, groupTitle: string, members: Array<{ id: string, title: string, subtitle: string, detail: string, imageSrc?: string, imageAlt?: string, videoSrc?: string, videoAriaLabel?: string }> }> (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"tag?": "string",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"buttons?": "Array<{text: string, onClick?: () => void, href?: string}>",
|
|
"ariaLabel?": "string (default: 'Team section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"groupTitleClassName?": "string",
|
|
"memberClassName?": "string",
|
|
"memberImageClassName?": "string",
|
|
"memberTitleClassName?": "string",
|
|
"memberSubtitleClassName?": "string",
|
|
"memberDetailClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"testimonial": [
|
|
{
|
|
"import": "import TestimonialCardOne from '@/components/sections/testimonial/TestimonialCardOne';",
|
|
"name": "TestimonialCardOne",
|
|
"path": "@/components/sections/testimonial/TestimonialCardOne",
|
|
"propsSchema": {
|
|
"testimonials": "Array<{ id: string, name: string, role: string, company: string, rating: number, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-95 2xl:min-h-105')",
|
|
"gridVariant": "'uniform-all-items-equal' | 'bento-grid' | 'bento-grid-inverted' | 'two-columns-alternating-heights' | 'asymmetric-60-wide-40-narrow' | 'three-columns-all-equal-width' | 'four-items-2x2-equal-grid' | 'one-large-right-three-stacked-left' | 'items-top-row-full-width-bottom' | 'full-width-top-items-bottom-row' | 'one-large-left-three-stacked-right' | 'timeline' (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d'",
|
|
"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: 'Testimonials 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",
|
|
"imageClassName?": "string",
|
|
"overlayClassName?": "string",
|
|
"ratingClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"roleClassName?": "string",
|
|
"companyClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TestimonialCardTwo from '@/components/sections/testimonial/TestimonialCardTwo';",
|
|
"name": "TestimonialCardTwo",
|
|
"path": "@/components/sections/testimonial/TestimonialCardTwo",
|
|
"propsSchema": {
|
|
"testimonials": "Array<{ id: string, name: string, role: string, testimonial: string, imageSrc?: string, imageAlt?: string, icon?: LucideIcon }>",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-none')",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d'",
|
|
"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: 'Testimonials 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",
|
|
"imageWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"roleClassName?": "string",
|
|
"testimonialClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TestimonialCardFive from '@/components/sections/testimonial/TestimonialCardFive';",
|
|
"name": "TestimonialCardFive",
|
|
"path": "@/components/sections/testimonial/TestimonialCardFive",
|
|
"propsSchema": {
|
|
"testimonials": "Array<{ id: string, name: string, date: string, title: string, quote: string, tag: string, avatarSrc: string, avatarAlt?: string, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: 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: 'Testimonials 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",
|
|
"cardTagClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"cardQuoteClassName?": "string",
|
|
"cardAuthorClassName?": "string",
|
|
"cardAvatarWrapperClassName?": "string",
|
|
"cardAvatarClassName?": "string",
|
|
"cardNameClassName?": "string",
|
|
"cardDateClassName?": "string",
|
|
"cardImageClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"dotsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TestimonialCardSix from '@/components/sections/testimonial/TestimonialCardSix';",
|
|
"name": "TestimonialCardSix",
|
|
"path": "@/components/sections/testimonial/TestimonialCardSix",
|
|
"propsSchema": {
|
|
"testimonials": "Array<{ id: string, name: string, handle: string, testimonial: string, imageSrc?: string, imageAlt?: string, icon?: LucideIcon }>",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required)",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)",
|
|
"useInvertedBackground": "boolean",
|
|
"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'",
|
|
"speed?": "number (default: 40)",
|
|
"topMarqueeDirection?": "'left' | 'right' (default: 'left')",
|
|
"ariaLabel?": "string (default: 'Testimonials section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"bottomCarouselClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"testimonialClassName?": "string",
|
|
"imageWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"handleClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TestimonialCardTen from '@/components/sections/testimonial/TestimonialCardTen';",
|
|
"name": "TestimonialCardTen",
|
|
"path": "@/components/sections/testimonial/TestimonialCardTen",
|
|
"propsSchema": {
|
|
"testimonials": "Array<{ id: string, title: string, quote: string, name: string, role: string, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }>",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"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'",
|
|
"ariaLabel?": "string (default: 'Testimonials section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"quoteCardClassName?": "string",
|
|
"testimonialTitleClassName?": "string",
|
|
"quoteClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"roleClassName?": "string",
|
|
"navigationClassName?": "string",
|
|
"navigationButtonClassName?": "string",
|
|
"mediaCardClassName?": "string",
|
|
"mediaClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TestimonialCardTwelve from '@/components/sections/testimonial/TestimonialCardTwelve';",
|
|
"name": "TestimonialCardTwelve",
|
|
"path": "@/components/sections/testimonial/TestimonialCardTwelve",
|
|
"propsSchema": {
|
|
"testimonials": "Array<{ id: string, name: string, imageSrc: string, imageAlt?: string }>",
|
|
"cardTitle": "string",
|
|
"cardTag": "string",
|
|
"cardTagIcon?": "LucideIcon",
|
|
"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"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TestimonialCardThirteen from '@/components/sections/testimonial/TestimonialCardThirteen';",
|
|
"name": "TestimonialCardThirteen",
|
|
"path": "@/components/sections/testimonial/TestimonialCardThirteen",
|
|
"propsSchema": {
|
|
"testimonials": "Array<{ id: string, name: string, handle: string, testimonial: string, rating: number, imageSrc?: string, imageAlt?: string, icon?: LucideIcon }>",
|
|
"showRating": "boolean - true for star ratings, false for quote icon (required)",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-none')",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d'",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"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'",
|
|
"ariaLabel?": "string (default: 'Testimonials section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"imageWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"handleClassName?": "string",
|
|
"testimonialClassName?": "string",
|
|
"ratingClassName?": "string",
|
|
"contentWrapperClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TestimonialCardFifteen from '@/components/sections/testimonial/TestimonialCardFifteen';",
|
|
"name": "TestimonialCardFifteen",
|
|
"path": "@/components/sections/testimonial/TestimonialCardFifteen",
|
|
"propsSchema": {
|
|
"testimonial": "string",
|
|
"rating": "number (0-5)",
|
|
"author": "string",
|
|
"avatars": "Array<{ src: string, alt: string }>",
|
|
"ratingAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal' (required)",
|
|
"avatarsAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal' (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Testimonial section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"ratingClassName?": "string",
|
|
"starClassName?": "string",
|
|
"testimonialClassName?": "string",
|
|
"avatarGroupClassName?": "string",
|
|
"avatarClassName?": "string",
|
|
"avatarImageClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import TestimonialCardSixteen from '@/components/sections/testimonial/TestimonialCardSixteen';",
|
|
"name": "TestimonialCardSixteen",
|
|
"path": "@/components/sections/testimonial/TestimonialCardSixteen",
|
|
"propsSchema": {
|
|
"testimonials": "Array<{ id: string, name: string, role: string, company: string, rating: number, imageSrc?: string, videoSrc?: string, imageAlt?: string, videoAriaLabel?: string }>",
|
|
"kpiItems": "[KpiItem, KpiItem, KpiItem] - Exactly 3 KPI stats (required)",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' | 'depth-3d' (required)",
|
|
"title": "string (required)",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }> - For inline images in title",
|
|
"description": "string (required)",
|
|
"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)",
|
|
"useInvertedBackground": "boolean (required)",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-95 2xl:min-h-105')",
|
|
"ariaLabel?": "string (default: 'Testimonials section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"overlayClassName?": "string",
|
|
"ratingClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"roleClassName?": "string",
|
|
"companyClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string",
|
|
"textBoxTitleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"faq": [
|
|
{
|
|
"import": "import FaqBase from '@/components/sections/faq/FaqBase';",
|
|
"name": "FaqBase",
|
|
"path": "@/components/sections/faq/FaqBase",
|
|
"propsSchema": {
|
|
"faqs": "Array<{ id: string, title: string, content: string }> - FAQ items",
|
|
"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'",
|
|
"faqsAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal' (required)",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)",
|
|
"useInvertedBackground": "boolean",
|
|
"animationType?": "'smooth' | 'instant' (default: 'smooth')",
|
|
"showCard?": "boolean (default: true)",
|
|
"ariaLabel?": "string (default: 'FAQ section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"faqsContainerClassName?": "string",
|
|
"accordionClassName?": "string",
|
|
"accordionTitleClassName?": "string",
|
|
"accordionIconContainerClassName?": "string",
|
|
"accordionIconClassName?": "string",
|
|
"accordionContentClassName?": "string",
|
|
"separatorClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FaqDouble from '@/components/sections/faq/FaqDouble';",
|
|
"name": "FaqDouble",
|
|
"path": "@/components/sections/faq/FaqDouble",
|
|
"propsSchema": {
|
|
"faqs": "Array<{ id: string, title: string, content: string }> - FAQ items",
|
|
"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'",
|
|
"faqsAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal' (required)",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)",
|
|
"useInvertedBackground": "boolean",
|
|
"animationType?": "'smooth' | 'instant' (default: 'smooth')",
|
|
"ariaLabel?": "string (default: 'FAQ section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"faqsContainerClassName?": "string",
|
|
"columnClassName?": "string",
|
|
"accordionClassName?": "string",
|
|
"accordionTitleClassName?": "string",
|
|
"accordionIconContainerClassName?": "string",
|
|
"accordionIconClassName?": "string",
|
|
"accordionContentClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';",
|
|
"name": "FaqSplitMedia",
|
|
"path": "@/components/sections/faq/FaqSplitMedia",
|
|
"propsSchema": {
|
|
"faqs": "Array<{ id: string, title: string, content: string }> - FAQ items",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'FAQ section video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"mediaPosition?": "'left' | 'right' (default: 'left')",
|
|
"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'",
|
|
"faqsAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal' (required)",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image' (required - 'inline-image' uses titleSegments for rich text with images)",
|
|
"useInvertedBackground": "boolean",
|
|
"animationType?": "'smooth' | 'instant' (default: 'smooth')",
|
|
"showCard?": "boolean (default: true)",
|
|
"ariaLabel?": "string (default: 'FAQ section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"titleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string",
|
|
"faqsContainerClassName?": "string",
|
|
"accordionClassName?": "string",
|
|
"accordionTitleClassName?": "string",
|
|
"accordionIconContainerClassName?": "string",
|
|
"accordionIconClassName?": "string",
|
|
"accordionContentClassName?": "string",
|
|
"separatorClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FaqSplitText from '@/components/sections/faq/FaqSplitText';",
|
|
"name": "FaqSplitText",
|
|
"path": "@/components/sections/faq/FaqSplitText",
|
|
"propsSchema": {
|
|
"faqs": "Array<{ id: string, title: string, content: string }> - FAQ items",
|
|
"sideTitle": "string",
|
|
"sideDescription?": "string",
|
|
"buttons?": "Array<{text: string, onClick?: () => void, href?: string}>",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"faqsAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal' (required)",
|
|
"textPosition?": "'left' | 'right' (default: 'left')",
|
|
"useInvertedBackground": "boolean",
|
|
"animationType?": "'smooth' | 'instant' (default: 'smooth')",
|
|
"showCard?": "boolean (default: true)",
|
|
"ariaLabel?": "string (default: 'FAQ section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"textContainerClassName?": "string",
|
|
"sideTitleClassName?": "string",
|
|
"sideDescriptionClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"faqsContainerClassName?": "string",
|
|
"accordionClassName?": "string",
|
|
"accordionTitleClassName?": "string",
|
|
"accordionIconContainerClassName?": "string",
|
|
"accordionIconClassName?": "string",
|
|
"accordionContentClassName?": "string",
|
|
"separatorClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"blog": [
|
|
{
|
|
"import": "import BlogCardOne from '@/components/sections/blog/BlogCardOne';",
|
|
"name": "BlogCardOne",
|
|
"path": "@/components/sections/blog/BlogCardOne",
|
|
"propsSchema": {
|
|
"blogs": "Array<{ id: string, category: string, title: string, excerpt: string, imageSrc: string, imageAlt?: string, authorName: string, authorAvatar: string, date: string, onBlogClick?: () => void }> - Blog card items",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"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: 'Blog section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"imageWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"categoryClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"excerptClassName?": "string",
|
|
"authorContainerClassName?": "string",
|
|
"authorAvatarClassName?": "string",
|
|
"authorNameClassName?": "string",
|
|
"dateClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import BlogCardTwo from '@/components/sections/blog/BlogCardTwo';",
|
|
"name": "BlogCardTwo",
|
|
"path": "@/components/sections/blog/BlogCardTwo",
|
|
"propsSchema": {
|
|
"blogs": "Array<{ id: string, category: string | string[], title: string, excerpt: string, imageSrc: string, imageAlt?: string, authorName: string, authorAvatar: string, date: string, onBlogClick?: () => void }> - Blog card items",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"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: 'Blog section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"imageWrapperClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"authorAvatarClassName?": "string",
|
|
"authorDateClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"excerptClassName?": "string",
|
|
"categoryClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import BlogCardThree from '@/components/sections/blog/BlogCardThree';",
|
|
"name": "BlogCardThree",
|
|
"path": "@/components/sections/blog/BlogCardThree",
|
|
"propsSchema": {
|
|
"blogs": "Array<{ id: string, category: string, title: string, excerpt: string, imageSrc: string, imageAlt?: string, authorName: string, authorAvatar: string, date: string, onBlogClick?: () => void }> - Blog card items",
|
|
"carouselMode?": "'auto' | 'buttons' (default: 'buttons')",
|
|
"uniformGridCustomHeightClasses?": "string (default: 'min-h-[600px]')",
|
|
"animationType": "'none' | 'opacity' | 'slide-up' | 'scale-rotate' | 'blur-reveal' (required - controls GSAP scroll animations with stagger effect)",
|
|
"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: 'Blog section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"cardContentClassName?": "string",
|
|
"categoryTagClassName?": "string",
|
|
"cardTitleClassName?": "string",
|
|
"excerptClassName?": "string",
|
|
"authorContainerClassName?": "string",
|
|
"authorAvatarClassName?": "string",
|
|
"authorNameClassName?": "string",
|
|
"dateClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"textBoxTitleImageWrapperClassName?": "string - For styling image wrapper in inline-image layout",
|
|
"textBoxTitleImageClassName?": "string - For styling images in inline-image layout",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"gridClassName?": "string",
|
|
"carouselClassName?": "string",
|
|
"controlsClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"contact": [
|
|
{
|
|
"import": "import ContactCenter from '@/components/sections/contact/ContactCenter';",
|
|
"name": "ContactCenter",
|
|
"path": "@/components/sections/contact/ContactCenter",
|
|
"propsSchema": {
|
|
"tag": "string",
|
|
"title": "string",
|
|
"description": "string",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"useInvertedBackground": "boolean",
|
|
"inputPlaceholder?": "string (default: 'Enter your email')",
|
|
"buttonText?": "string (default: 'Sign Up')",
|
|
"termsText?": "string (default: 'By clicking Sign Up you're confirming that you agree with our Terms and Conditions.')",
|
|
"onSubmit?": "(email: string) => void",
|
|
"ariaLabel?": "string (default: 'Contact section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"formWrapperClassName?": "string",
|
|
"formClassName?": "string",
|
|
"inputClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"termsClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ContactSplit from '@/components/sections/contact/ContactSplit';",
|
|
"name": "ContactSplit",
|
|
"path": "@/components/sections/contact/ContactSplit",
|
|
"propsSchema": {
|
|
"tag": "string",
|
|
"title": "string",
|
|
"description": "string",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"useInvertedBackground": "boolean",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Contact section video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"mediaPosition?": "'left' | 'right' (default: 'right')",
|
|
"inputPlaceholder?": "string (default: 'Enter your email')",
|
|
"buttonText?": "string (default: 'Sign Up')",
|
|
"termsText?": "string (default: 'By clicking Sign Up you're confirming that you agree with our Terms and Conditions.')",
|
|
"onSubmit?": "(email: string) => void",
|
|
"ariaLabel?": "string (default: 'Contact section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"contactFormClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"formWrapperClassName?": "string",
|
|
"formClassName?": "string",
|
|
"inputClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"termsClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';",
|
|
"name": "ContactSplitForm",
|
|
"path": "@/components/sections/contact/ContactSplitForm",
|
|
"propsSchema": {
|
|
"title": "string",
|
|
"description": "string",
|
|
"inputs": "Array<{ name: string, type: string, placeholder: string, required?: boolean, className?: string }> - Form input fields (min 2 required)",
|
|
"textarea?": "{ name: string, placeholder: string, rows?: number, required?: boolean, className?: string } - Optional textarea field",
|
|
"useInvertedBackground": "boolean",
|
|
"imageSrc?": "string",
|
|
"videoSrc?": "string",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoAriaLabel?": "string (default: 'Contact section video')",
|
|
"mediaAnimation": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"mediaPosition?": "'left' | 'right' (default: 'right')",
|
|
"buttonText?": "string (default: 'Submit')",
|
|
"onSubmit?": "(data: Record<string, string>) => void",
|
|
"ariaLabel?": "string (default: 'Contact section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"formCardClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ContactText from '@/components/sections/contact/ContactText';",
|
|
"name": "ContactText",
|
|
"path": "@/components/sections/contact/ContactText",
|
|
"propsSchema": {
|
|
"text": "string",
|
|
"animationType?": "'entrance-slide' | 'reveal-blur' | 'background-highlight' (default: 'entrance-slide')",
|
|
"buttons?": "Array<{text: string, onClick?: () => void, href?: string}>",
|
|
"background": "{ variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' } (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Contact section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string - Outer wrapper styling",
|
|
"contentClassName?": "string - Card content wrapper styling",
|
|
"textClassName?": "string - TextAnimation heading styling",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ContactFaq from '@/components/sections/contact/ContactFaq';",
|
|
"name": "ContactFaq",
|
|
"path": "@/components/sections/contact/ContactFaq",
|
|
"propsSchema": {
|
|
"faqs": "Array<{ id: string, title: string, content: string }>",
|
|
"ctaTitle": "string",
|
|
"ctaDescription": "string",
|
|
"ctaButton": "{text: string, onClick?: () => void, href?: string}",
|
|
"ctaIcon": "LucideIcon - any icon from lucide-react (e.g. Phone, Mail, MessageCircle, Calendar, ArrowRight) (required)",
|
|
"useInvertedBackground": "boolean",
|
|
"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",
|
|
"containerClassName?": "string",
|
|
"ctaPanelClassName?": "string",
|
|
"ctaIconClassName?": "string",
|
|
"ctaTitleClassName?": "string",
|
|
"ctaDescriptionClassName?": "string",
|
|
"ctaButtonClassName?": "string",
|
|
"ctaButtonTextClassName?": "string",
|
|
"faqsPanelClassName?": "string",
|
|
"faqsContainerClassName?": "string",
|
|
"accordionClassName?": "string",
|
|
"accordionTitleClassName?": "string",
|
|
"accordionIconContainerClassName?": "string",
|
|
"accordionIconClassName?": "string",
|
|
"accordionContentClassName?": "string",
|
|
"separatorClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ContactCTA from '@/components/sections/contact/ContactCTA';",
|
|
"name": "ContactCTA",
|
|
"path": "@/components/sections/contact/ContactCTA",
|
|
"propsSchema": {
|
|
"tag": "string (required)",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"title": "string (required)",
|
|
"description": "string (required)",
|
|
"buttons": "Array<{text: string, onClick?: () => void, href?: string}> (required)",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"background": "ContactCTABackgroundProps = { variant: 'plain' | 'animated-grid' | 'canvas-reveal' | 'cell-wave' | 'downward-rays-animated' | 'downward-rays-animated-grid' | 'downward-rays-static' | 'downward-rays-static-grid' | 'gradient-bars' | 'radial-gradient' | 'rotated-rays-animated' | 'rotated-rays-animated-grid' | 'rotated-rays-static' | 'rotated-rays-static-grid' | 'sparkles-gradient' }",
|
|
"useInvertedBackground": "boolean",
|
|
"ariaLabel?": "string (default: 'Contact section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"contentClassName?": "string - Card content wrapper styling",
|
|
"textBoxClassName?": "string",
|
|
"titleClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"tagClassName?": "string",
|
|
"buttonContainerClassName?": "string",
|
|
"buttonClassName?": "string",
|
|
"buttonTextClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"footer": [
|
|
{
|
|
"import": "import FooterBase from '@/components/sections/footer/FooterBase';",
|
|
"name": "FooterBase",
|
|
"path": "@/components/sections/footer/FooterBase",
|
|
"propsSchema": {
|
|
"columns": "Array<{ title: string, items: Array<{ label: string, href: string }> }> - Footer navigation columns (required)",
|
|
"logoText?": "string (default: 'Webild')",
|
|
"copyrightText?": "string (default: '© 2025 | Webild')",
|
|
"onPrivacyClick?": "() => void",
|
|
"ariaLabel?": "string (default: 'Site footer')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"logoTextClassName?": "string",
|
|
"columnsClassName?": "string",
|
|
"columnClassName?": "string",
|
|
"columnTitleClassName?": "string",
|
|
"columnItemClassName?": "string",
|
|
"copyrightContainerClassName?": "string",
|
|
"copyrightTextClassName?": "string",
|
|
"privacyButtonClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FooterMedia from '@/components/sections/footer/FooterMedia';",
|
|
"name": "FooterMedia",
|
|
"path": "@/components/sections/footer/FooterMedia",
|
|
"propsSchema": {
|
|
"imageSrc": "string (required if no videoSrc)",
|
|
"imageAlt?": "string (default: '')",
|
|
"videoSrc": "string (required if no imageSrc)",
|
|
"videoAriaLabel?": "string (default: 'Footer video')",
|
|
"columns": "Array<{ title: string, items: Array<{ label: string, href: string }> }> - Footer navigation columns (required)",
|
|
"logoText?": "string (default: 'Webild')",
|
|
"copyrightText?": "string (default: '© 2025 | Webild')",
|
|
"onPrivacyClick?": "() => void",
|
|
"ariaLabel?": "string (default: 'Site footer')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"mediaWrapperClassName?": "string",
|
|
"mediaClassName?": "string",
|
|
"logoTextClassName?": "string",
|
|
"columnsClassName?": "string",
|
|
"columnClassName?": "string",
|
|
"columnTitleClassName?": "string",
|
|
"columnItemClassName?": "string",
|
|
"copyrightContainerClassName?": "string",
|
|
"copyrightTextClassName?": "string",
|
|
"privacyButtonClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';",
|
|
"name": "FooterBaseReveal",
|
|
"path": "@/components/sections/footer/FooterBaseReveal",
|
|
"propsSchema": {
|
|
"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",
|
|
"columnsClassName?": "string",
|
|
"columnClassName?": "string",
|
|
"columnTitleClassName?": "string",
|
|
"columnItemClassName?": "string",
|
|
"copyrightContainerClassName?": "string",
|
|
"copyrightTextClassName?": "string",
|
|
"privacyButtonClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';",
|
|
"name": "FooterLogoEmphasis",
|
|
"path": "@/components/sections/footer/FooterLogoEmphasis",
|
|
"propsSchema": {
|
|
"columns": "Array<{ items: Array<{ label: string, href?: string, onClick?: () => void }> }> - Footer navigation columns (required, max 5)",
|
|
"logoText": "string (required)",
|
|
"ariaLabel?": "string (default: 'Site footer')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"logoClassName?": "string",
|
|
"columnsClassName?": "string",
|
|
"columnClassName?": "string",
|
|
"itemClassName?": "string",
|
|
"iconClassName?": "string",
|
|
"buttonClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FooterCard from '@/components/sections/footer/FooterCard';",
|
|
"name": "FooterCard",
|
|
"path": "@/components/sections/footer/FooterCard",
|
|
"propsSchema": {
|
|
"logoText?": "string (default: 'Webild')",
|
|
"copyrightText?": "string (default: '© 2025 | Webild')",
|
|
"socialLinks?": "Array<{ icon: LucideIcon, href: string, ariaLabel: string }> - Social media links",
|
|
"ariaLabel?": "string (default: 'Site footer')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"logoClassName?": "string",
|
|
"dividerClassName?": "string",
|
|
"copyrightContainerClassName?": "string",
|
|
"copyrightTextClassName?": "string",
|
|
"socialContainerClassName?": "string",
|
|
"socialIconClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FooterBaseCard from '@/components/sections/footer/FooterBaseCard';",
|
|
"name": "FooterBaseCard",
|
|
"path": "@/components/sections/footer/FooterBaseCard",
|
|
"propsSchema": {
|
|
"logoText?": "string (default: 'Webild')",
|
|
"columns": "Array<{ title: string, items: Array<{ label: string, href: string }> }> - Footer navigation columns (required)",
|
|
"copyrightText?": "string (default: '© 2025 | Webild')",
|
|
"onPrivacyClick?": "() => void",
|
|
"ariaLabel?": "string (default: 'Site footer')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"logoTextClassName?": "string",
|
|
"columnsClassName?": "string",
|
|
"columnClassName?": "string",
|
|
"columnTitleClassName?": "string",
|
|
"columnItemClassName?": "string",
|
|
"copyrightContainerClassName?": "string",
|
|
"copyrightTextClassName?": "string",
|
|
"privacyButtonClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';",
|
|
"name": "FooterLogoReveal",
|
|
"path": "@/components/sections/footer/FooterLogoReveal",
|
|
"propsSchema": {
|
|
"logoText?": "string (default: 'Webild')",
|
|
"leftLink": "{ text: string, onClick?: () => void, href?: string } (required)",
|
|
"rightLink": "{ text: string, onClick?: () => void, href?: string } (required)",
|
|
"ariaLabel?": "string (default: 'Site footer')",
|
|
"className?": "string",
|
|
"wrapperClassName?": "string",
|
|
"containerClassName?": "string",
|
|
"logoClassName?": "string",
|
|
"linkClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import FooterSimple from '@/components/sections/footer/FooterSimple';",
|
|
"name": "FooterSimple",
|
|
"path": "@/components/sections/footer/FooterSimple",
|
|
"propsSchema": {
|
|
"columns": "Array<{ title: string, items: Array<{ label: string, href?: string, onClick?: () => void }> }>",
|
|
"bottomLeftText": "string",
|
|
"bottomRightText": "string",
|
|
"ariaLabel?": "string (default: 'Site footer')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"columnsClassName?": "string",
|
|
"columnClassName?": "string",
|
|
"columnTitleClassName?": "string",
|
|
"columnItemClassName?": "string",
|
|
"dividerClassName?": "string",
|
|
"bottomContainerClassName?": "string",
|
|
"bottomLeftTextClassName?": "string",
|
|
"bottomRightTextClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"ecommerce": [
|
|
{
|
|
"import": "import ProductDetailCard from '@/components/ecommerce/productDetail/ProductDetailCard';",
|
|
"name": "ProductDetailCard",
|
|
"path": "@/components/ecommerce/productDetail/ProductDetailCard",
|
|
"propsSchema": {
|
|
"layout": "'page' | 'section'",
|
|
"name": "string",
|
|
"price": "string",
|
|
"showRating?": "boolean (default: true)",
|
|
"rating?": "number (default: 0)",
|
|
"ratingIcon?": "LucideIcon (default: Star)",
|
|
"description?": "string",
|
|
"images": "Array<{ src: string; alt: string }>",
|
|
"variants?": "Array<{ label: string; options: string[]; selected: string; onChange: (value: string) => void }>",
|
|
"quantity?": "{ label: string; options: string[]; selected: string; onChange: (value: string) => void }",
|
|
"buttons": "Array<{ text: string, href?: string, onClick?: () => void }>",
|
|
"className?": "string",
|
|
"imageContainerClassName?": "string",
|
|
"infoContainerClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"priceClassName?": "string",
|
|
"descriptionClassName?": "string",
|
|
"variantSelectClassName?": "string",
|
|
"variantLabelClassName?": "string",
|
|
"buttonClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ProductCart from '@/components/ecommerce/cart/ProductCart';",
|
|
"name": "ProductCart",
|
|
"path": "@/components/ecommerce/cart/ProductCart",
|
|
"propsSchema": {
|
|
"isOpen": "boolean",
|
|
"onClose": "() => void",
|
|
"items": "Array<{ id: string, name: string, variants?: string[], price: string, quantity: number, imageSrc: string, imageAlt?: string }>",
|
|
"onQuantityChange?": "(id: string, quantity: number) => void",
|
|
"onRemove?": "(id: string) => void",
|
|
"total": "string",
|
|
"buttons": "Array<{ text: string, href?: string, onClick?: () => void }>",
|
|
"title?": "string (default: 'Cart')",
|
|
"totalLabel?": "string (default: 'Total')",
|
|
"emptyMessage?": "string (default: 'Your cart is empty')",
|
|
"className?": "string",
|
|
"panelClassName?": "string",
|
|
"itemClassName?": "string",
|
|
"buttonClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ProductCartItem from '@/components/ecommerce/cart/ProductCartItem';",
|
|
"name": "ProductCartItem",
|
|
"path": "@/components/ecommerce/cart/ProductCartItem",
|
|
"propsSchema": {
|
|
"item": "CartItem - { id: string; name: string; variants?: string[]; price: string; quantity: number; imageSrc: string; imageAlt?: string }",
|
|
"onQuantityChange?": "(id: string, quantity: number) => void",
|
|
"onRemove?": "(id: string) => void",
|
|
"className?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ProductCatalog from '@/components/ecommerce/productCatalog/ProductCatalog';",
|
|
"name": "ProductCatalog",
|
|
"path": "@/components/ecommerce/productCatalog/ProductCatalog",
|
|
"propsSchema": {
|
|
"layout": "'page' | 'section'",
|
|
"products": "Array<{ id: string, category?: string, name: string, price: string, rating: number, reviewCount?: string, imageSrc: string, imageAlt?: string, onProductClick?: () => void, onFavorite?: () => void }>",
|
|
"searchValue?": "string (default: '')",
|
|
"onSearchChange?": "(value: string) => void",
|
|
"searchPlaceholder?": "string (default: 'Search products...')",
|
|
"filters?": "Array<{ label: string; options: string[]; selected: string; onChange: (value: string) => void }>",
|
|
"emptyMessage?": "string (default: 'No products found')",
|
|
"className?": "string",
|
|
"gridClassName?": "string",
|
|
"cardClassName?": "string",
|
|
"imageClassName?": "string",
|
|
"searchClassName?": "string",
|
|
"filterClassName?": "string",
|
|
"toolbarClassName?": "string"
|
|
}
|
|
},
|
|
{
|
|
"import": "import ProductCatalogItem from '@/components/ecommerce/productCatalog/ProductCatalogItem';",
|
|
"name": "ProductCatalogItem",
|
|
"path": "@/components/ecommerce/productCatalog/ProductCatalogItem",
|
|
"propsSchema": {
|
|
"product": "CatalogProduct - { id: string; category?: string; name: string; price: string; rating: number; reviewCount?: string; imageSrc: string; imageAlt?: string; onProductClick?: () => void; onFavorite?: () => void; isFavorited?: boolean }",
|
|
"className?": "string",
|
|
"imageClassName?": "string",
|
|
"categoryClassName?": "string",
|
|
"nameClassName?": "string",
|
|
"priceClassName?": "string",
|
|
"ratingClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"legal": [
|
|
{
|
|
"import": "import LegalSection from '@/components/legal/LegalSection';",
|
|
"name": "LegalSection",
|
|
"path": "@/components/legal/LegalSection",
|
|
"propsSchema": {
|
|
"layout": "'page' | 'section'",
|
|
"title": "string",
|
|
"subtitle?": "string",
|
|
"sections": "LegalContentSection[] - { heading: string; content: LegalContentItem[] } where LegalContentItem = { type: 'paragraph'; text: string } | { type: 'list'; items: string[] } | { type: 'numbered-list'; items: string[] }",
|
|
"className?": "string",
|
|
"titleClassName?": "string",
|
|
"subtitleClassName?": "string",
|
|
"sectionClassName?": "string",
|
|
"headingClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"listClassName?": "string"
|
|
}
|
|
}
|
|
],
|
|
"socialProof": [
|
|
{
|
|
"import": "import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';",
|
|
"name": "SocialProofOne",
|
|
"path": "@/components/sections/socialProof/SocialProofOne",
|
|
"propsSchema": {
|
|
"names": "string[] (required) - Array of company/partner names to display as text",
|
|
"logos?": "string[] - Array of logo image paths. If provided, displays images instead of text names",
|
|
"title": "string",
|
|
"titleSegments?": "Array<{ type: 'text', content: string } | { type: 'image', src: string, alt?: string }>",
|
|
"description": "string",
|
|
"tag?": "string",
|
|
"tagIcon?": "LucideIcon",
|
|
"tagAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"buttons?": "Array<{ text: string, href?: string, onClick?: () => void }>",
|
|
"buttonAnimation?": "'none' | 'opacity' | 'slide-up' | 'blur-reveal'",
|
|
"textboxLayout": "'default' | 'split' | 'split-actions' | 'split-description' | 'inline-image'",
|
|
"useInvertedBackground": "boolean",
|
|
"speed?": "number (default: 40)",
|
|
"showCard?": "boolean (default: true) - Whether to show card styling around items",
|
|
"ariaLabel?": "string (default: 'Social proof section')",
|
|
"className?": "string",
|
|
"containerClassName?": "string",
|
|
"textBoxTitleClassName?": "string",
|
|
"titleImageWrapperClassName?": "string",
|
|
"titleImageClassName?": "string",
|
|
"textBoxDescriptionClassName?": "string",
|
|
"textBoxClassName?": "string",
|
|
"textBoxTagClassName?": "string",
|
|
"textBoxButtonContainerClassName?": "string",
|
|
"textBoxButtonClassName?": "string",
|
|
"textBoxButtonTextClassName?": "string",
|
|
"contentClassName?": "string",
|
|
"logoItemClassName?": "string",
|
|
"logoCardClassName?": "string",
|
|
"logoImageClassName?": "string",
|
|
"logoTextClassName?": "string"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
} |