import { Body, Button, Container, Heading, Html, Preview, Section, Text, } from 'jsx-email' import { Signature } from './components/Signature.tsx' import type { Template } from '../types.ts' import type { JSX } from 'preact' import { bodyCss, buttonCss, headingCss, messageCss, rootCss, textCss, } from './styles/base.tsx' import { BaseStyle } from './styles/base.tsx' function MagicLink( { message, device, ip, endpoint }: { message?: string device?: string ip?: string endpoint: string }, ): JSX.Element { return ( Nouveau lien de connection
Nouveau lien de connection Une nouvelle demande de connection à été effectuée sur votre compte. {'Date : '} {dateNow()}
{'Appareil : '} {device?.length ? device : 'Iconnue'}
{'Ip : '} {ip?.length ? ip : 'Inconnue'}
{message?.length ? {message} : ''} Si vous n'êtes pas à l'origine de cette demande vous pouvez ignorer ce mail en toute sécurité.
) } function dateNow() { return new Date().toLocaleString('fr', { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric', hour: 'numeric', minute: 'numeric', }) } const infoCss: JSX.CSSProperties = { ...textCss, opacity: 0.7, } const detailsCss: JSX.CSSProperties = { ...textCss, backgroundColor: rootCss.backgroundColor, padding: '0.5rem', borderRadius: '0.4rem', } const template: Template[0]> = { props: [ { name: 'Message', description: "Message à afficher à l'utilisateur.", required: false, multiline: false, tag: 'message', }, { name: 'Device', description: 'User-Agent (ou equiv.) de la demande.', required: false, multiline: false, tag: 'device', }, { name: 'Ip', description: 'Addresse ip de la demande.', required: false, multiline: false, tag: 'ip', }, { name: 'Endpoint', description: 'Endpoint du lien "Me connecter".', required: true, multiline: false, tag: 'endpoint', }, ], name: 'magic-link', description: 'Coh@bit connection magic link.', builder: MagicLink, } export default template