diff --git a/decnet_web/src/components/Webhooks/FormRow.tsx b/decnet_web/src/components/Webhooks/FormRow.tsx new file mode 100644 index 00000000..1b2783af --- /dev/null +++ b/decnet_web/src/components/Webhooks/FormRow.tsx @@ -0,0 +1,105 @@ +import React from 'react'; +import { Save, X } from '../../icons'; +import type { FormState, SimpleEvent } from './types'; + +interface Props { + title: string; + form: FormState; + setForm: React.Dispatch>; + onSave: (e: React.FormEvent) => void; + onCancel: () => void; + saving: boolean; + isEdit: boolean; + onToggleSimple: (n: SimpleEvent) => void; +} + +const FormRow: React.FC = ({ + title, form, setForm, onSave, onCancel, saving, isEdit, onToggleSimple, +}) => ( + + +
+ + + + setForm((f) => ({ ...f, name: e.target.value }))} + placeholder="shuffle-prod" + required + maxLength={64} + /> + + + setForm((f) => ({ ...f, url: e.target.value }))} + placeholder="https://shuffle.example.com/api/v1/hooks/webhook_xxx" + required + /> + + + setForm((f) => ({ ...f, secret: e.target.value }))} + placeholder={isEdit ? '—' : 'leave blank to auto-generate'} + minLength={16} + maxLength={256} + /> + + +
+ {(['AttackerDetail', 'DeckyStatus', 'SystemStatus'] as const).map((name) => ( + + ))} +
+ + +