Svelte (@frontmail/svelte)
npm install @frontmail/svelteRichiede Svelte 5. Funziona in SvelteKit (nel browser).
createFrontmail
Sezione intitolata “createFrontmail”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>use:frontmailForm
Sezione intitolata “use:frontmailForm”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.
FrontmailForm.svelte
Sezione intitolata “FrontmailForm.svelte”<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.