import type { ConfigResponse } from '../../../../../packages/api-contracts/src/index.js'; import type { SettingsDraft, SubredditDraft } from './settings-model.js'; interface SectionProps { draft: SettingsDraft; errors: Record; onChange(next: SettingsDraft): void; } interface NumberFieldProps { error?: string; label: string; name: string; min?: number; value: string; onChange(value: string): void; } function NumberField({ error, label, name, min, value, onChange }: NumberFieldProps) { const errorId = `${name}-error`; return ( ); } export function MonitoringSection({ draft, errors, onChange }: SectionProps) { return (
Discovery

Monitoring

onChange({ ...draft, recentWindowMinutes })} value={draft.recentWindowMinutes} />
); } export function RateLimitsSection({ draft, errors, onChange }: SectionProps) { return (
Sending safeguards

Rate limits

onChange({ ...draft, minDelayMinutes })} value={draft.minDelayMinutes} /> onChange({ ...draft, maxMessagesPerHour })} value={draft.maxMessagesPerHour} /> onChange({ ...draft, jitterSeconds })} value={draft.jitterSeconds} />
); } function updateSubreddit(draft: SettingsDraft, index: number, next: SubredditDraft): SettingsDraft { return { ...draft, subreddits: draft.subreddits.map((item, itemIndex) => itemIndex === index ? next : item) }; } export function BehaviourSection({ config, draft, errors, onChange }: SectionProps & { config: ConfigResponse }) { return (
Runtime behaviour

Behaviour

Subreddits

Configure monitored communities and their supported message style.

{errors.subreddits ?

{errors.subreddits}

: null}
{draft.subreddits.map((subreddit, index) => (
Subreddit {index + 1}