@nxgt/janus-mail 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34,7 +34,7 @@ How the messages are shaped:
34
34
  - [`janusMail: locales holds the same locale twice`](#janusmail-locales-holds-the-same-locale-twice)
35
35
  - [`janusMail: fallbackLocale must be one of locales`](#janusmail-fallbacklocale-must-be-one-of-locales)
36
36
  - [`janusMail: templates must be an object of functions, as { verifyEmail: (variables) => rendered }`](#janusmail-templates-must-be-an-object-of-functions-as--verifyemail-variables--rendered-)
37
- - [`janusMail: templates has no template <name> — name one of verifyEmail, resetPassword, signInCode, magicLink, stepUp, passwordChanged, emailChanged, twoFactorEnabled, twoFactorDisabled, recoveryCodeUsed, welcome`](#janusmail-templates-has-no-template-name--name-one-of-verifyemail-resetpassword-signincode-magiclink-stepup-passwordchanged-emailchanged-twofactorenabled-twofactordisabled-recoverycodeused-welcome)
37
+ - [`janusMail: templates has no template <name> — name one of verifyEmail, resetPassword, signInCode, magicLink, stepUp, passwordChanged, emailChanged, twoFactorEnabled, twoFactorDisabled, recoveryCodeUsed, newSignIn, welcome`](#janusmail-templates-has-no-template-name--name-one-of-verifyemail-resetpassword-signincode-magiclink-stepup-passwordchanged-emailchanged-twofactorenabled-twofactordisabled-recoverycodeused-newsignin-welcome)
38
38
  - [`janusMail: templates.<name> must be a function`](#janusmail-templatesname-must-be-a-function)
39
39
  - [`janusMail: templates.<name> is not an own enumerable property — pass a plain object, as { <name>: (variables) => rendered }`](#janusmail-templatesname-is-not-an-own-enumerable-property--pass-a-plain-object-as--name-variables--rendered-)
40
40
  - [`janusMail: clock must be a Clock — an object with a now function`](#janusmail-clock-must-be-a-clock--an-object-with-a-now-function)
@@ -70,11 +70,13 @@ How the messages are shaped:
70
70
  - [`TS2741: Property 'recoveryCodeUsed' is missing in type '{ … }' but required in type 'JanusMailTemplates<…>'.`](#ts2741-property-recoverycodeused-is-missing-in-type----but-required-in-type-janusmailtemplates)
71
71
  - [`TS2741: Property 'magicLink' is missing in type '{ … }' but required in type 'JanusMailTemplates<…>'.`](#ts2741-property-magiclink-is-missing-in-type----but-required-in-type-janusmailtemplates)
72
72
  - [`TS2741: Property 'stepUp' is missing in type '{ … }' but required in type 'JanusMailTemplates<…>'.`](#ts2741-property-stepup-is-missing-in-type----but-required-in-type-janusmailtemplates)
73
+ - [`TS2741: Property 'newSignIn' is missing in type '{ … }' but required in type 'JanusMailTemplates<…>'.`](#ts2741-property-newsignin-is-missing-in-type----but-required-in-type-janusmailtemplates)
73
74
  - [`TS2345: Argument of type 'StepUpByEmail<…> | StepUpByApp<…>' is not assignable to parameter of type 'Pick<StepUpByEmail<unknown>, …>'.`](#ts2345-argument-of-type-stepupbyemail--stepupbyapp-is-not-assignable-to-parameter-of-type-pickstepupbyemailunknown-)
74
75
  - [`TS2322: Type '"de"' is not assignable to type '"en" | "fr"'.`](#ts2322-type-de-is-not-assignable-to-type-en--fr)
75
76
  - [`TS2741: Property 'getStarted' is missing in type '{ … }' but required in type 'JanusMailLinks'.`](#ts2741-property-getstarted-is-missing-in-type----but-required-in-type-janusmaillinks)
76
77
  - [`TS2322: Type 'number | null' is not assignable to type 'string | number'.`](#ts2322-type-number--null-is-not-assignable-to-type-string--number)
77
78
  - [`TS2322: Type 'Date' is not assignable to type 'string'.`](#ts2322-type-date-is-not-assignable-to-type-string)
79
+ - [`TS2322: Type 'string | null' is not assignable to type 'string'.`, on `location`](#ts2322-type-string--null-is-not-assignable-to-type-string-on-location) — or `… to type 'string | undefined'.`
78
80
 
79
81
  ---
80
82
 
@@ -199,9 +201,9 @@ A `fallbackLocale` the list does not hold — `'de'` with the default
199
201
 
200
202
  `templates` given as a list or a function. Key each template by its name.
201
203
 
202
- ### `janusMail: templates has no template <name> — name one of verifyEmail, resetPassword, signInCode, magicLink, stepUp, passwordChanged, emailChanged, twoFactorEnabled, twoFactorDisabled, recoveryCodeUsed, welcome`
204
+ ### `janusMail: templates has no template <name> — name one of verifyEmail, resetPassword, signInCode, magicLink, stepUp, passwordChanged, emailChanged, twoFactorEnabled, twoFactorDisabled, recoveryCodeUsed, newSignIn, welcome`
203
205
 
204
- A key that is not one of the eleven — `newSignIn`, or the e-mail's file name
206
+ A key that is not one of the twelve — `invitation`, or the e-mail's file name
205
207
  `'verify-email'` rather than the template's, `verifyEmail`. Other e-mails are
206
208
  on the [roadmap](roadmap.md); send them with `@nxgt/mail` directly meanwhile.
207
209
 
@@ -235,7 +237,7 @@ as it is: fields are own properties.
235
237
  ### `janusMail: the default templates are built in en and fr only — with another locale in locales, pass every template in templates; <names> missing`
236
238
 
237
239
  `locales` holds a locale beyond `en` and `fr`, and `templates` leaves some
238
- out: the defaults could not render them in that locale. Pass all eleven — see
240
+ out: the defaults could not render them in that locale. Pass all twelve — see
239
241
  [Adding a locale](guide/locales.md#adding-a-locale) — or drop the locale.
240
242
  The message lists the templates missing.
241
243
 
@@ -340,6 +342,14 @@ if (event.type === 'user.emailChanged' && event.formerEmail != null) {
340
342
  }
341
343
  ```
342
344
 
345
+ `janusMail.newSignIn: device must be a string` and `janusMail.newSignIn:
346
+ time must be a string` are the second argument missing, or its `time` given
347
+ as the session's `Date`: pass the device as you describe it and the time as
348
+ text. `janusMail.newSignIn: location must be a string` is a location lookup's
349
+ `null`: leave `location` out, and the e-mail shows `—`. `janusMail.newSignIn:
350
+ email must be a string` is the `user.newDeviceSignedIn` event itself given
351
+ as the recipient — read the user first.
352
+
343
353
  `janusMail.recoveryCodeUsed: when must be a string` is the second argument
344
354
  missing, or its `when` given as the event's `Date`: pass the text to show,
345
355
  formatted in the recipient's locale and time zone —
@@ -522,7 +532,7 @@ avoids the read altogether. (In this repository: run `bun run build`.)
522
532
 
523
533
  The default templates read `mails/` with `node:fs`, through
524
534
  `@nxgt/mail/renderer`: Node, Bun or Deno only. On an edge runtime, pass all
525
- eleven templates yourself; an inlined build is on the [roadmap](roadmap.md).
535
+ twelve templates yourself; an inlined build is on the [roadmap](roadmap.md).
526
536
 
527
537
  ### An e-mail stays light in dark mode
528
538
 
@@ -655,8 +665,9 @@ whole.
655
665
  ### `TS2739: Type '{ … }' is missing the following properties from type 'JanusMailTemplates<…>'`
656
666
 
657
667
  `locales` holds a locale beyond `en` and `fr`, and `templates` does not give
658
- all eleven. With five or more missing, the code is `TS2740` and the list ends
659
- `…, and 5 more.` See [Adding a locale](guide/locales.md#adding-a-locale).
668
+ all twelve. With five or more missing, the code is `TS2740` and the list ends
669
+ `…, and <n> more.` — `…, and 7 more.` for a `templates` holding one
670
+ template. See [Adding a locale](guide/locales.md#adding-a-locale).
660
671
 
661
672
  ### `TS2741: Property 'recoveryCodeUsed' is missing in type '{ … }' but required in type 'JanusMailTemplates<…>'.`
662
673
 
@@ -685,6 +696,16 @@ yours. Add `stepUp` — it is given `brand`, `name`, `code`, `expiresIn` and
685
696
  [`janusMail: the default templates are built in en and fr only — …; stepUp missing`](#janusmail-the-default-templates-are-built-in-en-and-fr-only--with-another-locale-in-locales-pass-every-template-in-templates-names-missing).
686
697
  See [Templates](guide/templates.md#what-each-template-is-given).
687
698
 
699
+ ### `TS2741: Property 'newSignIn' is missing in type '{ … }' but required in type 'JanusMailTemplates<…>'.`
700
+
701
+ `templates` written before 0.9, with a locale beyond `en` and `fr`: since
702
+ 0.9.0 there are twelve templates, and with such a locale every one is
703
+ yours. Add `newSignIn` — it is given `brand`, `name`, `device`, `location`,
704
+ `time` and `link` — even if you never send it; in JavaScript the same
705
+ `templates` is
706
+ [`janusMail: the default templates are built in en and fr only — …; newSignIn missing`](#janusmail-the-default-templates-are-built-in-en-and-fr-only--with-another-locale-in-locales-pass-every-template-in-templates-names-missing).
707
+ See [Templates](guide/templates.md#what-each-template-is-given).
708
+
688
709
  ### `TS2345: Argument of type 'StepUpByEmail<…> | StepUpByApp<…>' is not assignable to parameter of type 'Pick<StepUpByEmail<unknown>, …>'.`
689
710
 
690
711
  What `auth.stepUp.request(user)` answered, passed to `mail.stepUp` without
@@ -732,10 +753,24 @@ has no codes to count; check it first, as in
732
753
 
733
754
  ### `TS2322: Type 'Date' is not assignable to type 'string'.`
734
755
 
735
- On `when`: the event's `occurredAt` passed as it is. `when` is the text the
736
- e-mail shows — format it in the recipient's locale and time zone first:
756
+ On `when`: the event's `occurredAt` passed as it is — or, on `newSignIn`'s
757
+ `time`, the session's `createdAt`. Both are the text the e-mail shows —
758
+ format the date in the recipient's locale and time zone first:
737
759
 
738
760
  ```ts
739
761
  const when = new Intl.DateTimeFormat(user.locale, { dateStyle: 'long', timeStyle: 'short', timeZone: 'Europe/Paris' })
740
762
  .format(event.occurredAt);
741
763
  ```
764
+
765
+ ### `TS2322: Type 'string | null' is not assignable to type 'string'.`, on `location`
766
+
767
+ Also, without `exactOptionalPropertyTypes` in your tsconfig:
768
+ `Type 'string | null' is not assignable to type 'string | undefined'.`
769
+
770
+ On `newSignIn`'s `location`: a geo-IP lookup's answer, `null` when it found
771
+ nothing, passed as it is. `location` is optional: leave it out, and the
772
+ e-mail shows `—`:
773
+
774
+ ```ts
775
+ await mail.newSignIn(to, { device, time, ...(city === null ? {} : { location: city }) });
776
+ ```
@@ -0,0 +1,60 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" dir="ltr" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" style="color-scheme:light dark;">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="x-apple-disable-message-reformatting">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <meta name="color-scheme" content="light dark">
8
+ <meta name="supported-color-schemes" content="light dark">
9
+ <style>[data-ogsc] .nx-dark-bg-paper{background-color:#040a19!important;}[data-ogsb] .nx-dark-bg-paper{background-color:#040a19!important;}[data-ogsc] .nx-dark-bg-card{background-color:#0f172b!important;background-color:lab(7.78673% 1.82345 -15.0537)!important;}[data-ogsb] .nx-dark-bg-card{background-color:#0f172b!important;background-color:lab(7.78673% 1.82345 -15.0537)!important;}[data-ogsc] .nx-dark-bg-background{background-color:#020918!important;background-color:lab(2.35721% .367686
10
+ -8.51797)!important;}[data-ogsb] .nx-dark-bg-background{background-color:#020918!important;background-color:lab(2.35721% .367686 -8.51797)!important;}[data-ogsc] .nx-dark-text-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}[data-ogsb] .nx-dark-text-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}[data-ogsc] .nx-dark-text-foreground-25{color:#404551!important;}[data-ogsb] .nx-dark-text-foreground-25{color:#404551!important;}
11
+ [data-ogsc] .nx-dark-text-card-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}[data-ogsb] .nx-dark-text-card-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}[data-ogsc] .nx-dark-border-border{border-color:#1c212f!important;}[data-ogsb] .nx-dark-border-border{border-color:#1c212f!important;}[data-ogsc] .nx-dark-bg-muted{background-color:#1e293b!important;}[data-ogsb] .nx-dark-bg-muted{background-color:#1e293b!important;}
12
+ [data-ogsc] .nx-dark-text-muted-foreground{color:#cbd5e1!important;}[data-ogsb] .nx-dark-text-muted-foreground{color:#cbd5e1!important;}[data-ogsc] .nx-dark-border-muted-foreground{border-color:#cbd5e1!important;}[data-ogsb] .nx-dark-border-muted-foreground{border-color:#cbd5e1!important;}[data-ogsc] .nx-dark-border-muted{border-color:#1e293b!important;}[data-ogsb] .nx-dark-border-muted{border-color:#1e293b!important;}[data-ogsc] .nx-dark-bg-primary{background-color:#fafafa!important;}
13
+ [data-ogsb] .nx-dark-bg-primary{background-color:#fafafa!important;}[data-ogsc] .nx-dark-text-primary{color:#fafafa!important;}[data-ogsb] .nx-dark-text-primary{color:#fafafa!important;}[data-ogsc] .nx-dark-text-primary-foreground{color:#18181b!important;}[data-ogsb] .nx-dark-text-primary-foreground{color:#18181b!important;}[data-ogsc] .nx-dark-text-info{color:#93c5fd!important;}[data-ogsb] .nx-dark-text-info{color:#93c5fd!important;}[data-ogsc] .nx-dark-border-primary{border-color:#fafafa
14
+ !important;}[data-ogsb] .nx-dark-border-primary{border-color:#fafafa!important;}[data-ogsc] .nx-dark-bg-primary-15{background-color:#272d3a!important;}[data-ogsb] .nx-dark-bg-primary-15{background-color:#272d3a!important;}[data-ogsc] .nx-dark-bg-primary-20{background-color:#343945!important;}[data-ogsb] .nx-dark-bg-primary-20{background-color:#343945!important;}[data-ogsc] .nx-dark-border-primary-40{border-color:#656972!important;}[data-ogsb] .nx-dark-border-primary-40{border-color:#656972
15
+ !important;}[data-ogsc] .nx-dark-border-primary-50{border-color:#7e8189!important;}[data-ogsb] .nx-dark-border-primary-50{border-color:#7e8189!important;}[data-ogsc] .nx-light-only{display:none!important;}[data-ogsb] .nx-light-only{display:none!important;}[data-ogsc] .nx-dark-only{display:inline-block!important;}[data-ogsb] .nx-dark-only{display:inline-block!important;}
16
+ @media (prefers-color-scheme:dark){html{--lightningcss-light:;--lightningcss-dark:initial;}.nx-dark-bg-paper{background-color:#040a19!important;}.nx-dark-bg-card{background-color:#0f172b!important;background-color:lab(7.78673% 1.82345 -15.0537)!important;}.nx-dark-text-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}.nx-dark-text-card-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}.nx-dark-border-border{border-color:#1c212f
17
+ !important;}.nx-dark-text-muted-foreground{color:#cbd5e1!important;}.nx-dark-bg-primary{background-color:#fafafa!important;}.nx-dark-text-primary-foreground{color:#18181b!important;}.nx-dark-text-info{color:#93c5fd!important;}.nx-dark-border-primary-40{border-color:#656972!important;} }
18
+ </style>
19
+ </head>
20
+ <body xml:lang="en" dir="ltr" style="margin:0;padding:0;width:100%;height:100%;word-break:break-word;background-color:#f4f4f4;" class="nx-dark-bg-paper"><div style="display:none;">Your account was signed in from a new device.&#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
21
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
22
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
23
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
24
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
25
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
26
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
27
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &nbsp;</div><span style="display:none">
28
+ <!--[if mso]><xml><o:OfficeDocumentSettings><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings><w:WordDocument><w:DontUseAdvancedTypographyReadingMail/></w:WordDocument></xml>
29
+ <![endif]--></span><div role="article" aria-roledescription="email" lang="en" dir="ltr" style="font-size:medium;font-size:max(16px,1rem)">
30
+ <table class="nx-dark-bg-paper" role="presentation" cellpadding="0" cellspacing="0" dir="ltr" style="width:100%;background-color:#f4f4f4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont, 'Segoe UI',Roboto, 'Noto Sans',Ubuntu,Cantarell, 'Helvetica Neue',sans-serif;"><tr><td align="center" style="padding:32px 16px;">
31
+ <!--[if mso]>
32
+ <table role="none" cellpadding="0" cellspacing="0" style="width:600px" align="center"><tr><td>
33
+ <![endif]--><div style="margin:0 auto;max-width:600px;">
34
+ <table role="presentation" cellpadding="0" cellspacing="0" dir="ltr" style="width:100%;"><tr><td style="padding-bottom:24px;text-align:center;"><span class="nx-dark-text-foreground" style="font-size:18px;line-height:28px;font-weight:600;color:#020918;color:lab(2.35721% .367686 -8.51797);">{{ brand }}</span>
35
+ </td></tr><tr><td class="nx-dark-border-border nx-dark-bg-card nx-dark-text-card-foreground" style="border-radius:14px;border-color:#e2e8f0;border-style:solid;border-width:1px;border-color:lab(91.7353% -.998765 -4.76968);background-color:#fff;background-color:lab(100% 0 0);padding:32px;font-size:14px;line-height:20px;color:#020618;color:lab(1.76974% 1.32743 -9.28855);box-shadow:0 0 rgba(0,0,0,0),0 0 rgba(0,0,0,0),0 0 rgba(0,0,0,0),0 0 rgba(0,0,0,0),0 1px 3px rgba(0,0,0,.1),0 1px 2px -1px rgba(0,
36
+ 0,0,.1);"><h1 class="nx-dark-text-foreground" style="margin:0 0 16px;font-size:24px;line-height:32px;font-weight:600;color:#020918;color:lab(2.35721% .367686 -8.51797);">New sign-in to your account</h1><p class="nx-dark-text-foreground" style="margin:0 0 16px;font-size:14px;line-height:20px;color:#020918;color:lab(2.35721% .367686 -8.51797);">Hello {{ name }},</p>
37
+ <table role="presentation" cellpadding="0" cellspacing="0" style="margin-bottom:16px;width:100%;"><tr><td style="border-radius:8px;border:1px solid #f9b999;background-color:#fdeee5;padding:12px 16px;">
38
+ <table role="presentation" cellpadding="0" cellspacing="0" dir="ltr" style="width:100%;"><tr><td style="vertical-align:top;color:#020918;color:lab(2.35721% .367686 -8.51797);"><p style="margin:0;font-size:14px;line-height:20px;font-weight:600;">Your account was signed in from a device we had not seen.</p>
39
+ </td></tr></table>
40
+ </td></tr></table>
41
+ <table role="presentation" cellpadding="0" cellspacing="0" dir="ltr" style="margin-bottom:16px;width:100%;"><tr><td class="nx-dark-border-primary-40 nx-dark-text-muted-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;padding-right:8px;font-size:14px;line-height:20px;color:#5f718a;">Device
42
+ </td><td class="nx-dark-border-primary-40 nx-dark-text-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;text-align:right;font-size:14px;line-height:20px;color:#020918;color:lab(2.35721% .367686 -8.51797);">{{ device }}
43
+ </td></tr><tr><td class="nx-dark-border-primary-40 nx-dark-text-muted-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;padding-right:8px;font-size:14px;line-height:20px;color:#5f718a;">Location
44
+ </td><td class="nx-dark-border-primary-40 nx-dark-text-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;text-align:right;font-size:14px;line-height:20px;color:#020918;color:lab(2.35721% .367686 -8.51797);">{{ location }}
45
+ </td></tr><tr><td class="nx-dark-border-primary-40 nx-dark-text-muted-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;padding-right:8px;font-size:14px;line-height:20px;color:#5f718a;">Time
46
+ </td><td class="nx-dark-border-primary-40 nx-dark-text-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;text-align:right;font-size:14px;line-height:20px;color:#020918;color:lab(2.35721% .367686 -8.51797);">{{ time }}
47
+ </td></tr></table><p class="nx-dark-text-foreground" style="margin:0 0 16px;font-size:14px;line-height:20px;color:#020918;color:lab(2.35721% .367686 -8.51797);">If this was you, there is nothing to do. If this was not you, secure your account now.</p><div><a style="display:inline-block;border-radius:9999px;background-color:#27272a;padding:10px 16px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont, 'Segoe UI',Roboto, 'Noto Sans',Ubuntu,Cantarell, 'Helvetica Neue',sans-serif;
48
+ font-size:14px;line-height:16px;font-weight:500;color:#f8fafc;color:lab(98.1434% -.369519 -1.05966);text-decoration:none;" href="{{ link }}" class="nx-dark-bg-primary nx-dark-text-primary-foreground">
49
+ <!--[if mso]><i style="mso-font-width:114%;mso-text-raise:19px;" hidden>&emsp;</i>
50
+ <![endif]--> <span style="mso-text-raise:10px;">Secure my account</span>
51
+ <!--[if mso]><i style="mso-font-width:114%;" hidden>&emsp;&#8203;</i>
52
+ <![endif]--></a></div><div role="separator" style="line-height:24px;">&zwj;</div><p class="nx-dark-text-foreground" style="margin:0 0 16px;font-size:12px;line-height:16px;color:#5f718a;">If the button does not work, open this link: <a href="{{ link }}" class="nx-dark-text-info" style="color:#1d4ed8;text-decoration:underline;">{{ link }}</a></p>
53
+ </td></tr><tr><td class="nx-dark-text-muted-foreground" style="padding-left:24px;padding-right:24px;padding-top:24px;text-align:center;font-size:12px;line-height:16px;color:#5f718a;"><p style="margin:0 0 8px;">You received this e-mail because you have an account with {{ brand }}.</p><p style="margin:0;">{{ brand }}</p>
54
+ </td></tr></table></div>
55
+ <!--[if mso]>
56
+ </td></tr></table>
57
+ <![endif]-->
58
+ </td></tr></table></div>
59
+ </body>
60
+ </html>
@@ -0,0 +1,30 @@
1
+ Your account was signed in from a new device.
2
+
3
+ {{ brand }}
4
+
5
+ New sign-in to your account
6
+
7
+ Hello {{ name }},
8
+
9
+ Your account was signed in from a device we had not seen.
10
+
11
+ Device
12
+ {{ device }}
13
+
14
+ Location
15
+ {{ location }}
16
+
17
+ Time
18
+ {{ time }}
19
+
20
+ If this was you, there is nothing to do. If this was not you, secure your account now.
21
+
22
+ Secure my account
23
+
24
+ {{ link }}
25
+
26
+ If the button does not work, open this link: {{ link }}
27
+
28
+ You received this e-mail because you have an account with {{ brand }}.
29
+
30
+ {{ brand }}
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html lang="fr" dir="ltr" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" style="color-scheme:light dark;">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="x-apple-disable-message-reformatting">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <meta name="color-scheme" content="light dark">
8
+ <meta name="supported-color-schemes" content="light dark">
9
+ <style>[data-ogsc] .nx-dark-bg-paper{background-color:#040a19!important;}[data-ogsb] .nx-dark-bg-paper{background-color:#040a19!important;}[data-ogsc] .nx-dark-bg-card{background-color:#0f172b!important;background-color:lab(7.78673% 1.82345 -15.0537)!important;}[data-ogsb] .nx-dark-bg-card{background-color:#0f172b!important;background-color:lab(7.78673% 1.82345 -15.0537)!important;}[data-ogsc] .nx-dark-bg-background{background-color:#020918!important;background-color:lab(2.35721% .367686
10
+ -8.51797)!important;}[data-ogsb] .nx-dark-bg-background{background-color:#020918!important;background-color:lab(2.35721% .367686 -8.51797)!important;}[data-ogsc] .nx-dark-text-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}[data-ogsb] .nx-dark-text-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}[data-ogsc] .nx-dark-text-foreground-25{color:#404551!important;}[data-ogsb] .nx-dark-text-foreground-25{color:#404551!important;}
11
+ [data-ogsc] .nx-dark-text-card-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}[data-ogsb] .nx-dark-text-card-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}[data-ogsc] .nx-dark-border-border{border-color:#1c212f!important;}[data-ogsb] .nx-dark-border-border{border-color:#1c212f!important;}[data-ogsc] .nx-dark-bg-muted{background-color:#1e293b!important;}[data-ogsb] .nx-dark-bg-muted{background-color:#1e293b!important;}
12
+ [data-ogsc] .nx-dark-text-muted-foreground{color:#cbd5e1!important;}[data-ogsb] .nx-dark-text-muted-foreground{color:#cbd5e1!important;}[data-ogsc] .nx-dark-border-muted-foreground{border-color:#cbd5e1!important;}[data-ogsb] .nx-dark-border-muted-foreground{border-color:#cbd5e1!important;}[data-ogsc] .nx-dark-border-muted{border-color:#1e293b!important;}[data-ogsb] .nx-dark-border-muted{border-color:#1e293b!important;}[data-ogsc] .nx-dark-bg-primary{background-color:#fafafa!important;}
13
+ [data-ogsb] .nx-dark-bg-primary{background-color:#fafafa!important;}[data-ogsc] .nx-dark-text-primary{color:#fafafa!important;}[data-ogsb] .nx-dark-text-primary{color:#fafafa!important;}[data-ogsc] .nx-dark-text-primary-foreground{color:#18181b!important;}[data-ogsb] .nx-dark-text-primary-foreground{color:#18181b!important;}[data-ogsc] .nx-dark-text-info{color:#93c5fd!important;}[data-ogsb] .nx-dark-text-info{color:#93c5fd!important;}[data-ogsc] .nx-dark-border-primary{border-color:#fafafa
14
+ !important;}[data-ogsb] .nx-dark-border-primary{border-color:#fafafa!important;}[data-ogsc] .nx-dark-bg-primary-15{background-color:#272d3a!important;}[data-ogsb] .nx-dark-bg-primary-15{background-color:#272d3a!important;}[data-ogsc] .nx-dark-bg-primary-20{background-color:#343945!important;}[data-ogsb] .nx-dark-bg-primary-20{background-color:#343945!important;}[data-ogsc] .nx-dark-border-primary-40{border-color:#656972!important;}[data-ogsb] .nx-dark-border-primary-40{border-color:#656972
15
+ !important;}[data-ogsc] .nx-dark-border-primary-50{border-color:#7e8189!important;}[data-ogsb] .nx-dark-border-primary-50{border-color:#7e8189!important;}[data-ogsc] .nx-light-only{display:none!important;}[data-ogsb] .nx-light-only{display:none!important;}[data-ogsc] .nx-dark-only{display:inline-block!important;}[data-ogsb] .nx-dark-only{display:inline-block!important;}
16
+ @media (prefers-color-scheme:dark){html{--lightningcss-light:;--lightningcss-dark:initial;}.nx-dark-bg-paper{background-color:#040a19!important;}.nx-dark-bg-card{background-color:#0f172b!important;background-color:lab(7.78673% 1.82345 -15.0537)!important;}.nx-dark-text-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}.nx-dark-text-card-foreground{color:#f8fafc!important;color:lab(98.1434% -.369519 -1.05966)!important;}.nx-dark-border-border{border-color:#1c212f
17
+ !important;}.nx-dark-text-muted-foreground{color:#cbd5e1!important;}.nx-dark-bg-primary{background-color:#fafafa!important;}.nx-dark-text-primary-foreground{color:#18181b!important;}.nx-dark-text-info{color:#93c5fd!important;}.nx-dark-border-primary-40{border-color:#656972!important;} }
18
+ </style>
19
+ </head>
20
+ <body xml:lang="fr" dir="ltr" style="margin:0;padding:0;width:100%;height:100%;word-break:break-word;background-color:#f4f4f4;" class="nx-dark-bg-paper"><div style="display:none;">Votre compte a été utilisé depuis un nouvel appareil.&#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
21
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
22
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
23
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
24
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
25
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847;
26
+ &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &#8199;&#65279;&#847; &nbsp;</div><span style="display:none">
27
+ <!--[if mso]><xml><o:OfficeDocumentSettings><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings><w:WordDocument><w:DontUseAdvancedTypographyReadingMail/></w:WordDocument></xml>
28
+ <![endif]--></span><div role="article" aria-roledescription="email" lang="fr" dir="ltr" style="font-size:medium;font-size:max(16px,1rem)">
29
+ <table class="nx-dark-bg-paper" role="presentation" cellpadding="0" cellspacing="0" dir="ltr" style="width:100%;background-color:#f4f4f4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont, 'Segoe UI',Roboto, 'Noto Sans',Ubuntu,Cantarell, 'Helvetica Neue',sans-serif;"><tr><td align="center" style="padding:32px 16px;">
30
+ <!--[if mso]>
31
+ <table role="none" cellpadding="0" cellspacing="0" style="width:600px" align="center"><tr><td>
32
+ <![endif]--><div style="margin:0 auto;max-width:600px;">
33
+ <table role="presentation" cellpadding="0" cellspacing="0" dir="ltr" style="width:100%;"><tr><td style="padding-bottom:24px;text-align:center;"><span class="nx-dark-text-foreground" style="font-size:18px;line-height:28px;font-weight:600;color:#020918;color:lab(2.35721% .367686 -8.51797);">{{ brand }}</span>
34
+ </td></tr><tr><td class="nx-dark-border-border nx-dark-bg-card nx-dark-text-card-foreground" style="border-radius:14px;border-color:#e2e8f0;border-style:solid;border-width:1px;border-color:lab(91.7353% -.998765 -4.76968);background-color:#fff;background-color:lab(100% 0 0);padding:32px;font-size:14px;line-height:20px;color:#020618;color:lab(1.76974% 1.32743 -9.28855);box-shadow:0 0 rgba(0,0,0,0),0 0 rgba(0,0,0,0),0 0 rgba(0,0,0,0),0 0 rgba(0,0,0,0),0 1px 3px rgba(0,0,0,.1),0 1px 2px -1px rgba(0,
35
+ 0,0,.1);"><h1 class="nx-dark-text-foreground" style="margin:0 0 16px;font-size:24px;line-height:32px;font-weight:600;color:#020918;color:lab(2.35721% .367686 -8.51797);">Nouvelle connexion à votre compte</h1><p class="nx-dark-text-foreground" style="margin:0 0 16px;font-size:14px;line-height:20px;color:#020918;color:lab(2.35721% .367686 -8.51797);">Bonjour {{ name }},</p>
36
+ <table role="presentation" cellpadding="0" cellspacing="0" style="margin-bottom:16px;width:100%;"><tr><td style="border-radius:8px;border:1px solid #f9b999;background-color:#fdeee5;padding:12px 16px;">
37
+ <table role="presentation" cellpadding="0" cellspacing="0" dir="ltr" style="width:100%;"><tr><td style="vertical-align:top;color:#020918;color:lab(2.35721% .367686 -8.51797);"><p style="margin:0;font-size:14px;line-height:20px;font-weight:600;">Votre compte a été utilisé depuis un appareil que nous ne connaissions pas.</p>
38
+ </td></tr></table>
39
+ </td></tr></table>
40
+ <table role="presentation" cellpadding="0" cellspacing="0" dir="ltr" style="margin-bottom:16px;width:100%;"><tr><td class="nx-dark-border-primary-40 nx-dark-text-muted-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;padding-right:8px;font-size:14px;line-height:20px;color:#5f718a;">Appareil
41
+ </td><td class="nx-dark-border-primary-40 nx-dark-text-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;text-align:right;font-size:14px;line-height:20px;color:#020918;color:lab(2.35721% .367686 -8.51797);">{{ device }}
42
+ </td></tr><tr><td class="nx-dark-border-primary-40 nx-dark-text-muted-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;padding-right:8px;font-size:14px;line-height:20px;color:#5f718a;">Lieu
43
+ </td><td class="nx-dark-border-primary-40 nx-dark-text-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;text-align:right;font-size:14px;line-height:20px;color:#020918;color:lab(2.35721% .367686 -8.51797);">{{ location }}
44
+ </td></tr><tr><td class="nx-dark-border-primary-40 nx-dark-text-muted-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;padding-right:8px;font-size:14px;line-height:20px;color:#5f718a;">Heure
45
+ </td><td class="nx-dark-border-primary-40 nx-dark-text-foreground" style="border-bottom:1px solid;border-color:#a9a9aa;padding-top:8px;padding-bottom:8px;text-align:right;font-size:14px;line-height:20px;color:#020918;color:lab(2.35721% .367686 -8.51797);">{{ time }}
46
+ </td></tr></table><p class="nx-dark-text-foreground" style="margin:0 0 16px;font-size:14px;line-height:20px;color:#020918;color:lab(2.35721% .367686 -8.51797);">Si c'était vous, vous n'avez rien à faire. Si ce n'était pas vous, sécurisez votre compte dès maintenant.</p><div><a style="display:inline-block;border-radius:9999px;background-color:#27272a;padding:10px 16px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont, 'Segoe UI',Roboto, 'Noto Sans',Ubuntu,Cantarell, 'Helvetica Neue',sans-serif;font-size:14px;line-height:16px;font-weight:500;color:#f8fafc;color:lab(98.1434% -.369519 -1.05966);text-decoration:none;" href="{{ link }}" class="nx-dark-bg-primary nx-dark-text-primary-foreground">
47
+ <!--[if mso]><i style="mso-font-width:114%;mso-text-raise:19px;" hidden>&emsp;</i>
48
+ <![endif]--> <span style="mso-text-raise:10px;">Sécuriser mon compte</span>
49
+ <!--[if mso]><i style="mso-font-width:114%;" hidden>&emsp;&#8203;</i>
50
+ <![endif]--></a></div><div role="separator" style="line-height:24px;">&zwj;</div><p class="nx-dark-text-foreground" style="margin:0 0 16px;font-size:12px;line-height:16px;color:#5f718a;">Si le bouton ne fonctionne pas, ouvrez ce lien&nbsp;: <a href="{{ link }}" class="nx-dark-text-info" style="color:#1d4ed8;text-decoration:underline;">{{ link }}</a></p>
51
+ </td></tr><tr><td class="nx-dark-text-muted-foreground" style="padding-left:24px;padding-right:24px;padding-top:24px;text-align:center;font-size:12px;line-height:16px;color:#5f718a;"><p style="margin:0 0 8px;">Vous recevez cet e-mail parce que vous avez un compte chez {{ brand }}.</p><p style="margin:0;">{{ brand }}</p>
52
+ </td></tr></table></div>
53
+ <!--[if mso]>
54
+ </td></tr></table>
55
+ <![endif]-->
56
+ </td></tr></table></div>
57
+ </body>
58
+ </html>
@@ -0,0 +1,30 @@
1
+ Votre compte a été utilisé depuis un nouvel appareil.
2
+
3
+ {{ brand }}
4
+
5
+ Nouvelle connexion à votre compte
6
+
7
+ Bonjour {{ name }},
8
+
9
+ Votre compte a été utilisé depuis un appareil que nous ne connaissions pas.
10
+
11
+ Appareil
12
+ {{ device }}
13
+
14
+ Lieu
15
+ {{ location }}
16
+
17
+ Heure
18
+ {{ time }}
19
+
20
+ Si c'était vous, vous n'avez rien à faire. Si ce n'était pas vous, sécurisez votre compte dès maintenant.
21
+
22
+ Sécuriser mon compte
23
+
24
+ {{ link }}
25
+
26
+ Si le bouton ne fonctionne pas, ouvrez ce lien : {{ link }}
27
+
28
+ Vous recevez cet e-mail parce que vous avez un compte chez {{ brand }}.
29
+
30
+ {{ brand }}
@@ -81,6 +81,33 @@
81
81
  }
82
82
  }
83
83
  },
84
+ "new-sign-in": {
85
+ "variables": [
86
+ "brand",
87
+ "device",
88
+ "link",
89
+ "location",
90
+ "name",
91
+ "time"
92
+ ],
93
+ "urlVariables": [
94
+ "link"
95
+ ],
96
+ "subject": {
97
+ "en": "New sign-in to your account",
98
+ "fr": "Nouvelle connexion à votre compte"
99
+ },
100
+ "files": {
101
+ "en": {
102
+ "html": "en/new-sign-in.html",
103
+ "text": "en/new-sign-in.txt"
104
+ },
105
+ "fr": {
106
+ "html": "fr/new-sign-in.html",
107
+ "text": "fr/new-sign-in.txt"
108
+ }
109
+ }
110
+ },
84
111
  "password-changed": {
85
112
  "variables": [
86
113
  "brand",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nxgt/janus-mail",
3
- "version": "0.8.0",
4
- "description": "The e-mails of @nxgt/janus's flows — e-mail verification, password reset, sign-in code, sign-in link, step-up code, password changed, e-mail changed, two-factor enabled and disabled, recovery code used, welcome — rendered in English and French from a prebuilt Maizzle build, with your brand, sent through any @nxgt/mail transport",
3
+ "version": "0.9.0",
4
+ "description": "The e-mails of @nxgt/janus's flows — e-mail verification, password reset, sign-in code, sign-in link, step-up code, password changed, e-mail changed, two-factor enabled and disabled, recovery code used, new sign-in, welcome — rendered in English and French from a prebuilt Maizzle build, with your brand, sent through any @nxgt/mail transport",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -54,7 +54,7 @@
54
54
  "@maizzle/framework": "6.1.7",
55
55
  "@maizzle/tailwindcss": "1.5.6",
56
56
  "@formatjs/icu-messageformat-parser": "3.5.20",
57
- "@nxgt/janus": "^0.16.1",
57
+ "@nxgt/janus": "^0.17.0",
58
58
  "@nxgt/mail": "1.0.1",
59
59
  "@nxgt/mail-config": "1.0.1",
60
60
  "@nxgt/mail-i18n": "1.0.1",
@@ -66,7 +66,7 @@
66
66
  "zod": "^4.6.5"
67
67
  },
68
68
  "peerDependencies": {
69
- "@nxgt/janus": "^0.16.1",
69
+ "@nxgt/janus": "^0.17.0",
70
70
  "@nxgt/mail": ">=0.1.0 <2",
71
71
  "typescript": "^6.0.3"
72
72
  }