Skip to content
← Public packages

@kentcdodds/kit

Kit.com helpers for subscribers, tags, forms, sequences, and broadcasts.

src/index.d.ts

56 lines · 1.6 KB · TypeScript
export type SubscriberFilterClause = {
	none?: Array<{ type: 'tag' | string; ids: number[] }>
	any?: Array<{ type: 'tag' | string; ids: number[] }>
	all?: Array<{ type: 'tag' | string; ids: number[] }>
}

export type BroadcastDraftInput = {
	/** Required email subject. */
	subject: string
	/** Required HTML body. */
	content: string
	preview_text?: string
	description?: string
	thumbnail_url?: string
	thumbnail_alt?: string
	email_address?: string
	email_template_id?: number
	public?: boolean
	send_at?: string | null
	subscriber_filter?: SubscriberFilterClause[]
}

export type BroadcastDetail = {
	id: number
	subject?: string
	status?: string
	editUrl: string
	preview_text?: unknown
	description?: unknown
	content?: unknown
	thumbnail_url?: unknown
	thumbnail_alt?: unknown
	email_address?: unknown
	email_template?: unknown
	public?: unknown
	send_at?: unknown
	subscriber_filter?: unknown
	public_url?: unknown
}

/**
 * Create a Kit broadcast **draft** — never sends or schedules.
 * Root default export; same as `./create-broadcast-draft`.
 * Named helpers live on `./named` (HTML, subscribers, sequences, constants).
 *
 * @param input - Draft subject, HTML content, and optional template/filter fields
 * @returns Broadcast detail including id and Kit editUrl
 *
 * @example
 * import createBroadcastDraft from 'kody:@kentcdodds/kit'
 * const draft = await createBroadcastDraft({ subject: 'Hello', content: '<p>Hi</p>' })
 * // => { id: 123, editUrl: 'https://app.kit.com/campaigns/123/draft' }
 */
export default function createBroadcastDraftDefault(
	input: BroadcastDraftInput,
): Promise<BroadcastDetail>