{ "componentRegistry": { "navbar": [ { "name": "NavbarCentered", "import": "import NavbarCentered from '@/components/ui/NavbarCentered';", "path": "@/components/ui/NavbarCentered", "description": "Centered navigation bar with logo, links and buttons", "propsSchema": { "logo": "string", "navItems": "{ name: string; href: string }[]", "ctaButton": "{ text: string; href: string }" } } ] }, "sectionRegistry": { "hero": [ { "name": "HeroBillboard", "import": "import HeroBillboard from '@/components/sections/hero/HeroBillboard';", "path": "@/components/sections/hero/HeroBillboard", "description": "Full-width centered hero with media below text content", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton": "{ text: string; href: string }", "secondaryButton": "{ text: string; href: string }", "imageSrc": "string \u2014 image URL (provide imageSrc OR videoSrc, not both)", "videoSrc": "string \u2014 video URL (provide imageSrc OR videoSrc, not both)" } }, { "name": "HeroBillboardGallery", "import": "import HeroBillboardGallery from '@/components/sections/hero/HeroBillboardGallery';", "path": "@/components/sections/hero/HeroBillboardGallery", "description": "Full-width centered hero with image gallery below", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton": "{ text: string; href: string }", "secondaryButton": "{ text: string; href: string }", "items": "({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never })[]" } }, { "name": "HeroSplit", "import": "import HeroSplit from '@/components/sections/hero/HeroSplit';", "path": "@/components/sections/hero/HeroSplit", "description": "Split layout hero with text on left, media on right", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton": "{ text: string; href: string }", "secondaryButton": "{ text: string; href: string }", "imageSrc": "string \u2014 image URL (provide imageSrc OR videoSrc, not both)", "videoSrc": "string \u2014 video URL (provide imageSrc OR videoSrc, not both)" } } ], "about": [ { "name": "AboutFeaturesSplit", "import": "import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit';", "path": "@/components/sections/about/AboutFeaturesSplit", "description": "About section with feature list on left, media on right", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "items": "{ icon: LucideIcon (import from lucide-react, pass as component reference e.g. icon={Star} not icon=\"Star\"); title: string; description: string }[]", "imageSrc": "string \u2014 image URL (provide imageSrc OR videoSrc, not both)", "videoSrc": "string \u2014 video URL (provide imageSrc OR videoSrc, not both)" } }, { "name": "AboutMediaOverlay", "import": "import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';", "path": "@/components/sections/about/AboutMediaOverlay", "description": "About section with text overlaid on media background", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "imageSrc": "string \u2014 image URL (provide imageSrc OR videoSrc, not both)", "videoSrc": "string \u2014 video URL (provide imageSrc OR videoSrc, not both)" } }, { "name": "AboutTestimonial", "import": "import AboutTestimonial from '@/components/sections/about/AboutTestimonial';", "path": "@/components/sections/about/AboutTestimonial", "description": "Testimonial section with quote and author info", "propsSchema": { "tag": "string", "quote": "string", "author": "string", "role": "string", "imageSrc": "string \u2014 image URL (provide imageSrc OR videoSrc, not both)", "videoSrc": "string \u2014 video URL (provide imageSrc OR videoSrc, not both)" } }, { "name": "AboutTextSplit", "import": "import AboutTextSplit from '@/components/sections/about/AboutTextSplit';", "path": "@/components/sections/about/AboutTextSplit", "description": "Text-only about section with title on left, descriptions on right", "propsSchema": { "title": "string", "descriptions": "string[]", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }" } } ], "features": [ { "name": "FeaturesMediaCards", "import": "import FeaturesMediaCards from '@/components/sections/features/FeaturesMediaCards';", "path": "@/components/sections/features/FeaturesMediaCards", "description": "Features section with media cards in grid or carousel", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "items": "({ title: string; description: string } & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }))[]" } }, { "name": "FeaturesAlternatingSplit", "import": "import FeaturesAlternatingSplit from '@/components/sections/features/FeaturesAlternatingSplit';", "path": "@/components/sections/features/FeaturesAlternatingSplit", "description": "Features section with numbered alternating left/right split cards", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "items": "({ title: string; description: string; primaryButton?: { text: string; href: string }; secondaryButton?: { text: string; href: string } } & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }))[]" } }, { "name": "FeaturesLabeledList", "import": "import FeaturesLabeledList from '@/components/sections/features/FeaturesLabeledList';", "path": "@/components/sections/features/FeaturesLabeledList", "description": "Features section with large labels and bullet-separated item lists", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "items": "{ label: string; title: string; bullets: string[]; primaryButton: { text: string; href: string }; secondaryButton: { text: string; href: string } }[]" } }, { "name": "FeaturesComparison", "import": "import FeaturesComparison from '@/components/sections/features/FeaturesComparison';", "path": "@/components/sections/features/FeaturesComparison", "description": "Features comparison section with negative and positive lists side by side", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "negativeItems": "string[]", "positiveItems": "string[]" } }, { "name": "FeaturesDetailedSteps", "import": "import FeaturesDetailedSteps from '@/components/sections/features/FeaturesDetailedSteps';", "path": "@/components/sections/features/FeaturesDetailedSteps", "description": "Features section with detailed step cards including tag, title, subtitle, description, and tilted media", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "steps": "({ tag: string; title: string; subtitle: string; description: string } & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }))[]" } }, { "name": "FeaturesTaggedCards", "import": "import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';", "path": "@/components/sections/features/FeaturesTaggedCards", "description": "Features section with media cards featuring tag overlay on image and content card below", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "items": "({ tag: string; title: string; description: string; primaryButton?: { text: string; href: string }; secondaryButton?: { text: string; href: string } } & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }))[]" } }, { "name": "FeaturesArrowCards", "import": "import FeaturesArrowCards from '@/components/sections/features/FeaturesArrowCards';", "path": "@/components/sections/features/FeaturesArrowCards", "description": "Features section with media cards featuring title, tags, and arrow icon for navigation", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "items": "({ title: string; tags: string[] } & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }))[]" } }, { "name": "FeaturesDetailedCards", "import": "import FeaturesDetailedCards from '@/components/sections/features/FeaturesDetailedCards';", "path": "@/components/sections/features/FeaturesDetailedCards", "description": "Features section with horizontal split cards featuring title, author, tags, description, and media", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "items": "({ title: string; description: string; tags: string[] } & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }))[]" } }, { "name": "FeaturesDualMedia", "import": "import FeaturesDualMedia from '@/components/sections/features/FeaturesDualMedia';", "path": "@/components/sections/features/FeaturesDualMedia", "description": "Features section with icon cards featuring two media items side by side", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "items": "{ icon: LucideIcon (import from lucide-react, pass as component reference e.g. icon={Star} not icon=\"Star\"); title: string; description: string; mediaItems: [({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }), ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never })] }[]" } }, { "name": "FeaturesMediaCarousel", "import": "import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';", "path": "@/components/sections/features/FeaturesMediaCarousel", "description": "Carousel of cards with media background and text overlay at bottom", "propsSchema": { "tag": "string", "title": "string", "description": "string", "primaryButton?": "{ text: string; href: string }", "secondaryButton?": "{ text: string; href: string }", "items": "({ title: string; description: string; buttonIcon: LucideIcon (import from lucide-react, pass as component reference e.g. icon={Star} not icon=\"Star\"); buttonHref?: string; buttonOnClick?: () => void } & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }))[]" } } ] } }