import React from "react";
import { TextField, GroupListField, BlocksFieldPlugin } from 'tinacms'
import AlignmentControl from './components/tina/AlignmentControl'
import BorderControl from './components/tina/BorderControl'
import ButtonControl from './components/tina/ButtonControl'
import ButtonTypographyControl from './components/tina/ButtonTypographyControl'
import CardAlignmentControl from './components/tina/CardAlignmentControl'
import ColorControl from './components/tina/ColorControl'
import FeatureContentControl from './components/tina/FeatureContentControl'
import FeatureImageControl from './components/tina/FeatureImageControl'
import FillControl from './components/tina/FillControl'
import GridControl from './components/tina/GridControl'
import ImageControl from './components/tina/ImageControl'
import PaddingControl from './components/tina/PaddingControl'
import RuledTitle from './components/tina/RuledTitle'
import SelectField from './components/tina/SelectField'
import TypeControl from './components/tina/TypeControl'
import TypographyControl from './components/tina/TypographyControl'
export const SectionListItemsPlugin = {
...BlocksFieldPlugin,
Component: (props) => {
const itemProps = (item) => {
const templateNames = {
banner: 'Banner',
embed: 'Embed',
feature: 'Feature',
cards: 'Cards',
tailwindCards: 'Cards TW',
tailwindFeature: 'Feature TW',
textCards: 'Text Cards',
eventSchedule: 'Event Schedule',
accordian: 'Accordian',
}
const sectionName = item.headline || item.subhead || item.label || item.title || ''
const sectionNameShort = sectionName.match(/^.{24}\w*/)
const sectionLabel = sectionNameShort || sectionName || ''
const label = sectionLabel ? `${sectionLabel} - ${templateNames[item._template]}` : `${templateNames[item._template]}`
return { ...item, label: label }
}
const templates = {}
Object.keys(props.field.templates).forEach((key) => {
templates[key] = {
...props.field.templates[key],
itemProps,
}
})
return
},
__type: 'field',
name: "sectionListItems",
}
export const itemListFieldPlugin = {
Component: (props) => {
const field = {
...props.field,
itemProps: (item) => {
return { label: item.headline || item.subhead || item.label || item.title }
},
}
return
},
__type: 'field',
name: 'itemListField'
}
export const emailFieldPlugin = {
Component: TextField,
__type: 'field',
name: 'emailField',
validate: (email, allValues, meta, field) => {
const isValidEmail = /.*@.*\..*/.test(email)
if (!isValidEmail) return 'Invalid email address'
},
}
export const alignmentControlFieldPlugin = {
Component: AlignmentControl,
__type: 'field',
name: 'alignmentControl',
}
export const borderControlFieldPlugin = {
Component: BorderControl,
__type: 'field',
name: 'borderControl',
}
export const buttonTypographyControlFieldPlugin = {
Component: ButtonTypographyControl,
__type: 'field',
name: 'buttonTypographyControl',
}
export const cardAlignmentControlFieldPlugin = {
Component: CardAlignmentControl,
__type: 'field',
name: 'cardAlignmentControl',
}
export const colorControlFieldPlugin = {
Component: ColorControl,
__type: 'field',
name: 'colorControl',
}
export const buttonControlFieldPlugin = {
Component: ButtonControl,
__type: 'field',
name: 'buttonControl',
}
export const featureContentControlPlugin = {
Component: FeatureContentControl,
__type: 'field',
name: 'featureContentControl',
}
export const featureImageControlPlugin = {
Component: FeatureImageControl,
__type: 'field',
name: 'featureImageControl',
}
export const fillControlFieldPlugin = {
Component: FillControl,
__type: 'field',
name: 'fillControl',
}
export const gridControlFieldPlugin = {
Component: GridControl,
__type: 'field',
name: 'gridControl',
}
export const imageControlFieldPlugin = {
Component: ImageControl,
__type: 'field',
name: 'imageControl',
}
export const paddingControlFieldPlugin = {
Component: PaddingControl,
__type: 'field',
name: 'paddingControl',
}
export const ruledTitlePlugin = {
Component: RuledTitle,
__type: 'field',
name: 'ruledTitle',
}
export const selectFieldPlugin = {
Component: SelectField,
__type: 'field',
name: 'selectField',
}
export const typeControlFieldPlugin = {
Component: TypeControl,
__type: 'field',
name: 'typeControl',
}
export const typographyControlFieldPlugin = {
Component: TypographyControl,
__type: 'field',
name: 'typographyControl',
}