From 5e126ebcaf0540c7e25bdd865c8dd953945619f3 Mon Sep 17 00:00:00 2001 From: Julien Oculi Date: Mon, 17 Jun 2024 12:11:14 +0200 Subject: [PATCH] feat(templates): add `MagicLink` template for connection links --- templates/MagicLink.tsx | 140 ++++++++++++++++++++++++++++++++++++++++ templates/mod.ts | 1 + 2 files changed, 141 insertions(+) create mode 100644 templates/MagicLink.tsx diff --git a/templates/MagicLink.tsx b/templates/MagicLink.tsx new file mode 100644 index 0000000..1a4f5b4 --- /dev/null +++ b/templates/MagicLink.tsx @@ -0,0 +1,140 @@ +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 + }, +) { + 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 diff --git a/templates/mod.ts b/templates/mod.ts index 8b0ed66..4a1ef74 100644 --- a/templates/mod.ts +++ b/templates/mod.ts @@ -1,2 +1,3 @@ +export { default as magicLinkTemplate } from './MagicLink.tsx' export { default as messageTemplate } from './Message.tsx' export { default as welcomeTemplate } from './Welcome.tsx'