function normalizeCheckboxValue(value) {
return value === 'yes';
}
function normalizeArrayValue(value) {
if (Array.isArray(value)) return value;
if (typeof value === 'string' && value.trim()) {
return value
.split(',')
.map((part) => Number(part.trim()))
.filter((item) => Number.isFinite(item) && item > 0);
}
return [];
}
function renderIconPreview(iconType) {
if (iconType === 'spark') {
return (
);
}
if (iconType === 'bolt') {
return (
);
}
return (
);
}
export default function SettingField({ field, value, onChange, options = [] }) {
const id = `field-${field.name}`;
const rowClassName = `wp-ai-field-row ${field.className || ''}`.trim();
if (field.type === 'checkbox') {
return (
{field.label}
{field.description ? {field.description} : null}
);
}
if (field.type === 'tool-selector') {
return (
{field.label}
{field.description ?
{field.description} : null}
{options.map((option) => {
const isSelected = value === option.value;
return (
);
})}
);
}
if (field.type === 'card-selector') {
return (
{field.label}
{field.description ?
{field.description} : null}
{options.map((option) => {
const isSelected = value === option.value;
return (
);
})}
);
}
if (field.type === 'icon-selector') {
return (
{field.label}
{field.description ?
{field.description} : null}
{options.map((option) => {
const isSelected = value === option.value;
return (
);
})}
);
}
if (field.type === 'multi-checkbox') {
const selectedValues = normalizeArrayValue(value).map((item) => Number(item));
return (
{field.label}
{field.description ?
{field.description} : null}
{options.length === 0 ? No pages found. : null}
{options.map((option) => {
const numericValue = Number(option.value);
const isChecked = selectedValues.includes(numericValue);
return (
);
})}
);
}
if (field.type === 'textarea') {
return (
);
}
if (field.type === 'select') {
return (
);
}
if (field.type === 'color') {
const resolvedColor = (value || '#000000').toUpperCase();
return (
);
}
return (
);
}