Salta ai contenuti

Svelte (@frontmail/svelte)

Finestra del terminale
npm install @frontmail/svelte

Richiede Svelte 5. Funziona in SvelteKit (nel browser).

Crea un’istanza, per esempio in src/lib/frontmail.ts:

import { createFrontmail } from '@frontmail/svelte';
export const frontmail = createFrontmail({ publicKey: 'pk_4f2a…', blockHeadless: true });

L’istanza ha send, sendForm, getStatus, reset e due store: state ({ status, error, result } dell’ultimo invio) e status. La prima istanza creata diventa quella predefinita per l’action e per il componente.

<script>
import { frontmail } from '$lib/frontmail';
const { status } = frontmail;
</script>
<button onclick={() => frontmail.send('svc_01J9…', 'tpl_ping', { note: 'Ciao' })}>Invia</button>
<p>{$status}</p>

Trasforma qualsiasi modulo in un modulo Frontmail:

<script>
import { frontmailForm } from '@frontmail/svelte';
let status = $state('idle');
</script>
<form
use:frontmailForm={{
serviceId: 'svc_01J9…',
templateId: 'tpl_contact',
turnstileSiteKey: 'YOUR_TURNSTILE_SITE_KEY',
onState: (s) => (status = s.status),
}}
>
<input name="name" required />
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<button disabled={status === 'sending'}>Invia</button>
</form>

Parametri: serviceId, templateId, frontmail (istanza), turnstileSiteKey, turnstileOptions, locale, sendOptions, resetOnSuccess (predefinito true), onSuccess, onError, onState. Il modulo riceve anche un attributo data-status a cui puoi applicare degli stili.

locale (ad es. 'de') invia l’email in quella lingua del modello (come campo del modulo fm_locale; un campo fm_locale dentro il modulo ha la precedenza). result.locale è la lingua usata. <FrontmailForm> accetta la stessa prop locale, e send / sendForm dell’istanza la accettano come options.locale.

turnstileSiteKey è la chiave del sito del tuo widget Turnstile (Sicurezza → Protezione dai bot (Turnstile) nella dashboard) – vedi Cloudflare Turnstile. Omettila se il modello non richiede un CAPTCHA.

<script>
import { FrontmailForm } from '@frontmail/svelte';
</script>
<FrontmailForm serviceId="svc_01J9…" templateId="tpl_contact" turnstileSiteKey="YOUR_TURNSTILE_SITE_KEY">
<input name="email" type="email" required />
<textarea name="message" required></textarea>
<button>Invia</button>
</FrontmailForm>

Progetto di esempio: examples/svelte.