267 lines
13 KiB
JSON
267 lines
13 KiB
JSON
{
|
|
"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 }))[]"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
} |