UNPKG

@letanure/resend-cli

Version:

A command-line interface for Resend email API

45 lines 2.16 kB
import { jsx as _jsx } from "react/jsx-runtime"; import React from 'react'; import { SimpleForm } from '../../../components/forms/SimpleForm.js'; import { Layout } from '../../../components/ui/layout.js'; import { config } from '../../../config/config.js'; import { useResend } from '../../../contexts/ResendProvider.js'; import { useBroadcastSelector } from '../../../hooks/index.js'; import { retrieveBroadcast } from './action.js'; import { retrieveBroadcastFields } from './fields.js'; import { retrieveBroadcastSchema } from './schema.js'; export const Form = ({ onExit }) => { const { apiKey } = useResend(); const [selectedBroadcastId, setSelectedBroadcastId] = React.useState(''); // Get initial data from selected IDs const initialFormData = React.useMemo(() => { const data = {}; if (selectedBroadcastId) { data.broadcastId = selectedBroadcastId; } return Object.keys(data).length > 0 ? data : undefined; }, [selectedBroadcastId]); // Selector for broadcasts const broadcastSelector = useBroadcastSelector((broadcastId) => setSelectedBroadcastId(broadcastId)); // Create form fields with selector callbacks const formFields = React.useMemo(() => { return retrieveBroadcastFields.map((field) => { if (field.name === 'broadcastId') { return { ...field, onSelectorOpen: () => broadcastSelector.openSelector(), }; } return field; }); }, [broadcastSelector]); const handleSubmit = async (data) => { return await retrieveBroadcast(data, apiKey); }; // Show selector when open if (broadcastSelector.isOpen) { return broadcastSelector.selectorComponent; } return (_jsx(Layout, { headerText: `${config.baseTitle} - Broadcasts - Retrieve`, showNavigationInstructions: true, navigationContext: "form-single", children: _jsx(SimpleForm, { fields: formFields, onSubmit: handleSubmit, onCancel: onExit, validateWith: retrieveBroadcastSchema, initialData: initialFormData }) })); }; //# sourceMappingURL=Form.js.map