Template
26 lines
1.8 KiB
TypeScript
26 lines
1.8 KiB
TypeScript
import type { ComponentConfig } from '@reacteditor/core';
|
|
import { PanelBottom } from 'lucide-react';
|
|
import Footer, { type FooterProps } from './footer';
|
|
|
|
const footerConfig: ComponentConfig<FooterProps> = {
|
|
label: 'Footer', icon: <PanelBottom size={16} />, category: 'navigation', global: true,
|
|
defaultProps: {
|
|
siteName: 'Your Company', logoUrl: '', description: 'Add a short description of your business.',
|
|
links: [{ label: 'Features', url: '/#features' }, { label: 'Pricing', url: '/#pricing' }, { label: 'Resources', url: '/#resources' }, { label: 'Contact', url: '/contact' }],
|
|
socialLinks: [{ label: 'LinkedIn', url: '#' }, { label: 'Instagram', url: '#' }],
|
|
copyright: '© 2026 Your Company. All rights reserved.', showThemeToggle: 'yes',
|
|
},
|
|
fields: {
|
|
siteName: { label: 'Site name', type: 'text', contentEditable: true },
|
|
logoUrl: { label: 'Logo', type: 'image' },
|
|
description: { label: 'Description', type: 'textarea', contentEditable: true },
|
|
links: { label: 'Links', type: 'array', defaultItemProps: { label: 'Link', url: '/' }, getItemSummary: (item) => item?.label || 'Link', arrayFields: { label: { label: 'Label', type: 'text', contentEditable: true }, url: { label: 'URL', type: 'text' } } },
|
|
socialLinks: { label: 'Social links', type: 'array', defaultItemProps: { label: 'Network', url: '#' }, getItemSummary: (item) => item?.label || 'Social link', arrayFields: { label: { label: 'Label', type: 'text', contentEditable: true }, url: { label: 'URL', type: 'text' } } },
|
|
copyright: { label: 'Copyright', type: 'text', contentEditable: true },
|
|
showThemeToggle: { label: 'Theme toggle', type: 'radio', options: [{ label: 'Show', value: 'yes' }, { label: 'Hide', value: 'no' }] },
|
|
},
|
|
render: (props) => <Footer {...props} />,
|
|
};
|
|
|
|
export default footerConfig;
|