@nxgt/janus-mail 0.8.0 → 0.9.1

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,15 @@ 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 says "Unknown" in
350
+ the recipient's locale. `janusMail.newSignIn:
351
+ email must be a string` is the `user.newDeviceSignedIn` event itself given
352
+ as the recipient — read the user first.
353
+
343
354
  `janusMail.recoveryCodeUsed: when must be a string` is the second argument
344
355
  missing, or its `when` given as the event's `Date`: pass the text to show,
345
356
  formatted in the recipient's locale and time zone —
@@ -522,7 +533,7 @@ avoids the read altogether. (In this repository: run `bun run build`.)
522
533
 
523
534
  The default templates read `mails/` with `node:fs`, through
524
535
  `@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).
536
+ twelve templates yourself; an inlined build is on the [roadmap](roadmap.md).
526
537
 
527
538
  ### An e-mail stays light in dark mode
528
539
 
@@ -655,8 +666,9 @@ whole.
655
666
  ### `TS2739: Type '{ … }' is missing the following properties from type 'JanusMailTemplates<…>'`
656
667
 
657
668
  `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).
669
+ all twelve. With five or more missing, the code is `TS2740` and the list ends
670
+ `…, and <n> more.` — `…, and 7 more.` for a `templates` holding one
671
+ template. See [Adding a locale](guide/locales.md#adding-a-locale).
660
672
 
661
673
  ### `TS2741: Property 'recoveryCodeUsed' is missing in type '{ … }' but required in type 'JanusMailTemplates<…>'.`
662
674
 
@@ -685,6 +697,16 @@ yours. Add `stepUp` — it is given `brand`, `name`, `code`, `expiresIn` and
685
697
  [`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
698
  See [Templates](guide/templates.md#what-each-template-is-given).
687
699
 
700
+ ### `TS2741: Property 'newSignIn' is missing in type '{ … }' but required in type 'JanusMailTemplates<…>'.`
701
+
702
+ `templates` written before 0.9, with a locale beyond `en` and `fr`: since
703
+ 0.9.0 there are twelve templates, and with such a locale every one is
704
+ yours. Add `newSignIn` — it is given `brand`, `name`, `device`, `location`,
705
+ `time` and `link` — even if you never send it; in JavaScript the same
706
+ `templates` is
707
+ [`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).
708
+ See [Templates](guide/templates.md#what-each-template-is-given).
709
+
688
710
  ### `TS2345: Argument of type 'StepUpByEmail<…> | StepUpByApp<…>' is not assignable to parameter of type 'Pick<StepUpByEmail<unknown>, …>'.`
689
711
 
690
712
  What `auth.stepUp.request(user)` answered, passed to `mail.stepUp` without
@@ -732,10 +754,24 @@ has no codes to count; check it first, as in
732
754
 
733
755
  ### `TS2322: Type 'Date' is not assignable to type 'string'.`
734
756
 
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:
757
+ On `when`: the event's `occurredAt` passed as it is — or, on `newSignIn`'s
758
+ `time`, the session's `createdAt`. Both are the text the e-mail shows —
759
+ format the date in the recipient's locale and time zone first:
737
760
 
738
761
  ```ts
739
762
  const when = new Intl.DateTimeFormat(user.locale, { dateStyle: 'long', timeStyle: 'short', timeZone: 'Europe/Paris' })
740
763
  .format(event.occurredAt);
741
764
  ```
765
+
766
+ ### `TS2322: Type 'string | null' is not assignable to type 'string'.`, on `location`
767
+
768
+ Also, without `exactOptionalPropertyTypes` in your tsconfig:
769
+ `Type 'string | null' is not assignable to type 'string | undefined'.`
770
+
771
+ On `newSignIn`'s `location`: a geo-IP lookup's answer, `null` when it found
772
+ nothing, passed as it is. `location` is optional: leave it out, and the
773
+ e-mail says "Unknown" — "Inconnu" in French:
774
+
775
+ ```ts
776
+ await mail.newSignIn(to, { device, time, ...(city === null ? {} : { location: city }) });
777
+ ```
@@ -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,25 @@
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 {{ device }}
12
+ Location {{ location }}
13
+ Time {{ time }}
14
+
15
+ If this was you, there is nothing to do. If this was not you, secure your account now.
16
+
17
+ Secure my account
18
+
19
+ {{ link }}
20
+
21
+ If the button does not work, open this link: {{ link }}
22
+
23
+ You received this e-mail because you have an account with {{ brand }}.
24
+
25
+ {{ 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,25 @@
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 {{ device }}
12
+ Lieu {{ location }}
13
+ Heure {{ time }}
14
+
15
+ Si c'était vous, vous n'avez rien à faire. Si ce n'était pas vous, sécurisez votre compte dès maintenant.
16
+
17
+ Sécuriser mon compte
18
+
19
+ {{ link }}
20
+
21
+ Si le bouton ne fonctionne pas, ouvrez ce lien : {{ link }}
22
+
23
+ Vous recevez cet e-mail parce que vous avez un compte chez {{ brand }}.
24
+
25
+ {{ 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.1",
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,11 +54,11 @@
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.1",
58
58
  "@nxgt/mail": "1.0.1",
59
- "@nxgt/mail-config": "1.0.1",
59
+ "@nxgt/mail-config": "1.0.2",
60
60
  "@nxgt/mail-i18n": "1.0.1",
61
- "@nxgt/mail-presets": "1.1.0",
61
+ "@nxgt/mail-presets": "1.1.1",
62
62
  "@nxgt/mail-ui": "1.0.1",
63
63
  "@types/bun": "^1.4.2",
64
64
  "vue": "3.5.43",
@@ -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.1",
70
70
  "@nxgt/mail": ">=0.1.0 <2",
71
71
  "typescript": "^6.0.3"
72
72
  }