UNPKG

payload-plugin-newsletter

Version:

Complete newsletter management plugin for Payload CMS with subscriber management, magic link authentication, and email service integration

171 lines (164 loc) 5.28 kB
import React$1 from 'react'; interface Subscriber { id: string; email: string; name?: string; locale?: string; subscriptionStatus: 'active' | 'unsubscribed' | 'pending'; emailPreferences?: { newsletter?: boolean; announcements?: boolean; [key: string]: boolean | undefined; }; source?: string; importedFromProvider?: boolean; utmParameters?: { source?: string; medium?: string; campaign?: string; content?: string; term?: string; }; signupMetadata?: { ipAddress?: string; userAgent?: string; referrer?: string; signupPage?: string; }; leadMagnet?: string; unsubscribedAt?: string; magicLinkToken?: string; magicLinkTokenExpiry?: string; createdAt: string; updatedAt: string; } interface SignupFormProps { onSuccess?: (subscriber: Subscriber) => void; onError?: (error: Error) => void; showName?: boolean; showPreferences?: boolean; leadMagnet?: { id: string; title: string; description?: string; }; className?: string; styles?: { form?: React.CSSProperties; inputGroup?: React.CSSProperties; label?: React.CSSProperties; input?: React.CSSProperties; button?: React.CSSProperties; buttonDisabled?: React.CSSProperties; error?: React.CSSProperties; success?: React.CSSProperties; checkbox?: React.CSSProperties; checkboxInput?: React.CSSProperties; checkboxLabel?: React.CSSProperties; }; apiEndpoint?: string; buttonText?: string; loadingText?: string; successMessage?: string; placeholders?: { email?: string; name?: string; }; labels?: { email?: string; name?: string; newsletter?: string; announcements?: string; }; } interface PreferencesFormProps { subscriber?: Subscriber; onSuccess?: (subscriber: Subscriber) => void; onError?: (error: Error) => void; className?: string; styles?: { container?: React.CSSProperties; heading?: React.CSSProperties; form?: React.CSSProperties; section?: React.CSSProperties; sectionTitle?: React.CSSProperties; inputGroup?: React.CSSProperties; label?: React.CSSProperties; input?: React.CSSProperties; select?: React.CSSProperties; checkbox?: React.CSSProperties; checkboxInput?: React.CSSProperties; checkboxLabel?: React.CSSProperties; buttonGroup?: React.CSSProperties; button?: React.CSSProperties; primaryButton?: React.CSSProperties; secondaryButton?: React.CSSProperties; dangerButton?: React.CSSProperties; error?: React.CSSProperties; success?: React.CSSProperties; info?: React.CSSProperties; }; sessionToken?: string; apiEndpoint?: string; showUnsubscribe?: boolean; locales?: string[]; labels?: { title?: string; personalInfo?: string; emailPreferences?: string; name?: string; language?: string; newsletter?: string; announcements?: string; saveButton?: string; unsubscribeButton?: string; saving?: string; saved?: string; unsubscribeConfirm?: string; }; } declare const NewsletterForm: React$1.FC<SignupFormProps>; declare function createNewsletterForm(defaultProps: Partial<SignupFormProps>): React$1.FC<SignupFormProps>; declare const PreferencesForm: React$1.FC<PreferencesFormProps>; declare function createPreferencesForm(defaultProps: Partial<PreferencesFormProps>): React$1.FC<PreferencesFormProps>; interface MagicLinkVerifyProps { token?: string; onSuccess?: (sessionToken: string, subscriber: any) => void; onError?: (error: Error) => void; apiEndpoint?: string; className?: string; styles?: { container?: React$1.CSSProperties; heading?: React$1.CSSProperties; message?: React$1.CSSProperties; error?: React$1.CSSProperties; button?: React$1.CSSProperties; }; labels?: { verifying?: string; success?: string; error?: string; expired?: string; invalid?: string; redirecting?: string; tryAgain?: string; }; } declare const MagicLinkVerify: React$1.FC<MagicLinkVerifyProps>; declare function createMagicLinkVerify(defaultProps: Partial<MagicLinkVerifyProps>): React$1.FC<MagicLinkVerifyProps>; interface UseNewsletterAuthOptions { } interface UseNewsletterAuthReturn { subscriber: Subscriber | null; isAuthenticated: boolean; isLoading: boolean; loading: boolean; error: Error | null; signOut: () => Promise<void>; logout: () => Promise<void>; refreshAuth: () => Promise<void>; refreshSubscriber: () => Promise<void>; login: (token: string) => Promise<void>; } declare function useNewsletterAuth(_options?: UseNewsletterAuthOptions): UseNewsletterAuthReturn; export { MagicLinkVerify, type MagicLinkVerifyProps, NewsletterForm, PreferencesForm, createMagicLinkVerify, createNewsletterForm, createPreferencesForm, useNewsletterAuth };