- {items.map((item, index) => (
-
-
Item {index + 1}
- {Object.entries(field.itemSchema ?? {}).map(([childKey, childField]) => (
-
onChange(items.map((existing, itemIndex) => itemIndex === index ? { ...existing, [childKey]: nextValue } : existing))} />
- ))}
-
- ))}
-
+ {items.map((item, index) => {
+ let itemTitle = `Item ${index + 1}`;
+ let removeLabel = "Remove";
+
+ if (isReminders) {
+ removeLabel = "Remove reminder";
+ const id = String(item.id || "").trim();
+ const scheduleType = item.scheduleType;
+ if (scheduleType === "daily") {
+ const time = String(item.time || "09:00");
+ itemTitle = `${id || "Reminder"} · Daily at ${time}`;
+ } else if (scheduleType === "interval") {
+ const mins = Number(item.intervalMinutes) || 60;
+ itemTitle = `${id || "Reminder"} · Every ${mins} min`;
+ } else if (id) {
+ itemTitle = id;
+ }
+ }
+
+ const schemaEntries = Object.entries(field.itemSchema ?? {});
+ const messageField = schemaEntries.find(([k]) => k === "message");
+ const scheduleFields = schemaEntries.filter(([k]) => ["scheduleType", "time", "days", "intervalMinutes"].includes(k));
+ const behaviorFields = schemaEntries.filter(([k]) => ["id", "enabled", "reaction"].includes(k));
+ const otherFields = schemaEntries.filter(([k]) => !["message", "scheduleType", "time", "days", "intervalMinutes", "id", "enabled", "reaction"].includes(k));
+
+ const renderField = ([childKey, childField]: [string, PluginConfigField]) => {
+ if (isReminders) {
+ const scheduleType = item.scheduleType;
+ if (scheduleType === "daily" && childKey === "intervalMinutes") return null;
+ if (scheduleType === "interval" && (childKey === "time" || childKey === "days")) return null;
+ }
+ return
onChange(items.map((existing, itemIndex) => itemIndex === index ? { ...existing, [childKey]: nextValue } : existing))} />;
+ };
+
+ return (
+
+
+ {itemTitle}
+
+
+
+ {isReminders ? (
+ <>
+ {behaviorFields.length > 0 && (
+
+
Identity & Behavior
+ {behaviorFields.map(renderField)}
+
+ )}
+ {messageField && (
+
+
Message
+ {renderField(messageField)}
+
+ )}
+ {scheduleFields.length > 0 && (
+
+
Schedule
+ {scheduleFields.map(renderField)}
+
+ )}
+ {otherFields.map(renderField)}
+ >
+ ) : (
+ schemaEntries.map(renderField)
+ )}
+
+
+ );
+ })}
+