@learncard/email-templates 1.1.0 → 1.2.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.
package/dist/index.d.ts CHANGED
@@ -18,7 +18,7 @@ export { resolveCatalogLocale } from './i18n';
18
18
  export type { NotificationLocale } from './i18n';
19
19
  export { renderEmail } from './render';
20
20
  export type { RenderedEmail, TemplateId, TemplateDataMap } from './render';
21
- export type { VerificationCodeData, EmailVerificationData, InboxClaimData, GuardianApprovalData, AccountApprovedData, RecoveryKeyData, EndorsementRequestData, CredentialAwaitingGuardianData, GuardianApprovedClaimData, GuardianCredentialApprovalData, GuardianEmailOtpData, GuardianRejectedCredentialData, CredentialUpdatedData, } from './render';
21
+ export type { VerificationCodeData, EmailVerificationData, InboxClaimData, GuardianApprovalData, AccountApprovedData, RecoveryKeyData, EndorsementRequestData, CredentialAwaitingGuardianData, GuardianApprovedClaimData, GuardianCredentialApprovalData, GuardianEmailOtpData, GuardianRejectedCredentialData, CredentialUpdatedData, AccountSignInChangedData, } from './render';
22
22
  export { renderSms } from './sms';
23
23
  export type { SmsTemplateId, SmsTemplateDataMap, SmsInboxClaimData, SmsVerificationData, } from './sms';
24
24
  export { resolveTenantFromRequest, registerOriginMapping, registerTenantBranding, } from './tenant-registry';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3E,YAAY,EACR,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,sBAAsB,EACtB,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,oBAAoB,EACpB,8BAA8B,EAC9B,qBAAqB,GACxB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,YAAY,EACR,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACtB,MAAM,OAAO,CAAC;AAGf,OAAO,EACH,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3E,YAAY,EACR,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,sBAAsB,EACtB,8BAA8B,EAC9B,yBAAyB,EACzB,8BAA8B,EAC9B,oBAAoB,EACpB,8BAA8B,EAC9B,qBAAqB,EACrB,wBAAwB,GAC3B,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,YAAY,EACR,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACtB,MAAM,OAAO,CAAC;AAGf,OAAO,EACH,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG/D,iBAAiB;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAG9C,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAkBvC,gBAAgB;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQlC,gCAAgC;AAChC,OAAO,EACH,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,yEAAyE;AACzE,uEAAuE;AACvE,8EAA8E;AAC9E,+DAA+D;AAC/D,yDAAyD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG/D,iBAAiB;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAG9C,kBAAkB;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAmBvC,gBAAgB;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQlC,gCAAgC;AAChC,OAAO,EACH,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,yEAAyE;AACzE,uEAAuE;AACvE,8EAA8E;AAC9E,+DAA+D;AAC/D,yDAAyD"}
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-key-scenarios.d.ts","sourceRoot":"","sources":["../../src/previews/recovery-key-scenarios.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,CAAC,OAAO,UAAU,oBAAoB,sBAsB3C"}
1
+ {"version":3,"file":"recovery-key-scenarios.d.ts","sourceRoot":"","sources":["../../src/previews/recovery-key-scenarios.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,CAAC,OAAO,UAAU,oBAAoB,sBAyB3C"}
@@ -2,6 +2,6 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  import { RecoveryKey } from '../templates/recovery-key';
3
3
  import { LEARNCARD_BRANDING, VETPASS_BRANDING, ScenarioDivider } from './_fixtures';
4
4
  export default function RecoveryKeyScenarios() {
5
- return (_jsxs(_Fragment, { children: [_jsx(ScenarioDivider, { label: "Default \u2014 LearnCard branding" }), _jsx(RecoveryKey, { branding: LEARNCARD_BRANDING, recoveryKey: "mango-delta-fox-echo-bravo-seven-lima-niner" }), _jsx(ScenarioDivider, { label: "Long recovery key (wrapping test)" }), _jsx(RecoveryKey, { branding: LEARNCARD_BRANDING, recoveryKey: "alpha-bravo-charlie-delta-echo-foxtrot-golf-hotel-india-juliet-kilo-lima" }), _jsx(ScenarioDivider, { label: "VetPass tenant branding" }), _jsx(RecoveryKey, { branding: VETPASS_BRANDING, recoveryKey: "sierra-tango-uniform-victor-whiskey-xray" })] }));
5
+ return (_jsxs(_Fragment, { children: [_jsx(ScenarioDivider, { label: "Default \u2014 LearnCard branding" }), _jsx(RecoveryKey, { branding: LEARNCARD_BRANDING, recoveryKey: "mango-delta-fox-echo-bravo-seven-lima-niner", confirmationCode: "123456" }), _jsx(ScenarioDivider, { label: "Long recovery key (wrapping test)" }), _jsx(RecoveryKey, { branding: LEARNCARD_BRANDING, recoveryKey: "alpha-bravo-charlie-delta-echo-foxtrot-golf-hotel-india-juliet-kilo-lima", confirmationCode: "654321" }), _jsx(ScenarioDivider, { label: "VetPass tenant branding" }), _jsx(RecoveryKey, { branding: VETPASS_BRANDING, recoveryKey: "sierra-tango-uniform-victor-whiskey-xray", confirmationCode: "987654" })] }));
6
6
  }
7
7
  //# sourceMappingURL=recovery-key-scenarios.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-key-scenarios.js","sourceRoot":"","sources":["../../src/previews/recovery-key-scenarios.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpF,MAAM,CAAC,OAAO,UAAU,oBAAoB;IACxC,OAAO,CACH,8BACI,KAAC,eAAe,IAAC,KAAK,EAAC,mCAA8B,GAAG,EACxD,KAAC,WAAW,IACR,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAC,6CAA6C,GAC3D,EAEF,KAAC,eAAe,IAAC,KAAK,EAAC,mCAAmC,GAAG,EAC7D,KAAC,WAAW,IACR,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAC,0EAA0E,GACxF,EAEF,KAAC,eAAe,IAAC,KAAK,EAAC,yBAAyB,GAAG,EACnD,KAAC,WAAW,IACR,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAC,0CAA0C,GACxD,IACH,CACN,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"recovery-key-scenarios.js","sourceRoot":"","sources":["../../src/previews/recovery-key-scenarios.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpF,MAAM,CAAC,OAAO,UAAU,oBAAoB;IACxC,OAAO,CACH,8BACI,KAAC,eAAe,IAAC,KAAK,EAAC,mCAA8B,GAAG,EACxD,KAAC,WAAW,IACR,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAC,6CAA6C,EACzD,gBAAgB,EAAC,QAAQ,GAC3B,EAEF,KAAC,eAAe,IAAC,KAAK,EAAC,mCAAmC,GAAG,EAC7D,KAAC,WAAW,IACR,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAC,0EAA0E,EACtF,gBAAgB,EAAC,QAAQ,GAC3B,EAEF,KAAC,eAAe,IAAC,KAAK,EAAC,yBAAyB,GAAG,EACnD,KAAC,WAAW,IACR,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAC,0CAA0C,EACtD,gBAAgB,EAAC,QAAQ,GAC3B,IACH,CACN,CAAC;AACN,CAAC"}
package/dist/render.d.ts CHANGED
@@ -63,6 +63,8 @@ export interface TemplateDataMap {
63
63
  'guardian-rejected-credential': GuardianRejectedCredentialData;
64
64
  /** brain-service: managed credential refresh update notice (LC-2198) */
65
65
  'credential-updated': CredentialUpdatedData;
66
+ /** lca-api: lost-login identity rebind security notification */
67
+ 'account-sign-in-changed': AccountSignInChangedData;
66
68
  }
67
69
  export type TemplateId = keyof TemplateDataMap;
68
70
  export interface VerificationCodeData {
@@ -109,6 +111,7 @@ export interface AccountApprovedData {
109
111
  }
110
112
  export interface RecoveryKeyData {
111
113
  recoveryKey: string;
114
+ confirmationCode: string;
112
115
  }
113
116
  export interface EndorsementRequestData {
114
117
  shareLink: string;
@@ -185,6 +188,7 @@ export interface CredentialUpdatedData {
185
188
  name?: string;
186
189
  };
187
190
  }
191
+ export type AccountSignInChangedData = Record<string, never>;
188
192
  /**
189
193
  * Render a fully branded email for the given template.
190
194
  *
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
package/dist/render.js CHANGED
@@ -10,7 +10,7 @@
10
10
  import { render } from '@react-email/render';
11
11
  import * as React from 'react';
12
12
  import { resolveBranding } from './branding';
13
- import { VerificationCode, getVerificationCodeSubject, InboxClaim, getInboxClaimSubject, GuardianApproval, getGuardianApprovalSubject, AccountApproved, getAccountApprovedSubject, RecoveryKey, getRecoveryKeySubject, EndorsementRequest, getEndorsementRequestSubject, CredentialAwaitingGuardian, getCredentialAwaitingGuardianSubject, GuardianApprovedClaim, getGuardianApprovedClaimSubject, GuardianCredentialApproval, getGuardianCredentialApprovalSubject, GuardianEmailOtp, getGuardianEmailOtpSubject, GuardianRejectedCredential, getGuardianRejectedCredentialSubject, EmailVerification, getEmailVerificationSubject, CredentialUpdated, getCredentialUpdatedSubject, } from './templates';
13
+ import { VerificationCode, getVerificationCodeSubject, InboxClaim, getInboxClaimSubject, GuardianApproval, getGuardianApprovalSubject, AccountApproved, getAccountApprovedSubject, RecoveryKey, getRecoveryKeySubject, EndorsementRequest, getEndorsementRequestSubject, CredentialAwaitingGuardian, getCredentialAwaitingGuardianSubject, GuardianApprovedClaim, getGuardianApprovedClaimSubject, GuardianCredentialApproval, getGuardianCredentialApprovalSubject, GuardianEmailOtp, getGuardianEmailOtpSubject, GuardianRejectedCredential, getGuardianRejectedCredentialSubject, EmailVerification, getEmailVerificationSubject, CredentialUpdated, getCredentialUpdatedSubject, AccountSignInChanged, getAccountSignInChangedSubject, } from './templates';
14
14
  // ---------------------------------------------------------------------------
15
15
  // renderEmail()
16
16
  // ---------------------------------------------------------------------------
@@ -155,6 +155,13 @@ function buildElement(templateId, branding, data, locale) {
155
155
  subject: getCredentialUpdatedSubject(branding, locale),
156
156
  };
157
157
  }
158
+ case 'account-sign-in-changed': {
159
+ const props = { branding, locale };
160
+ return {
161
+ element: React.createElement(AccountSignInChanged, props),
162
+ subject: getAccountSignInChangedSubject(branding, locale),
163
+ };
164
+ }
158
165
  default: {
159
166
  const _exhaustive = templateId;
160
167
  throw new Error(`Unknown template: ${_exhaustive}`);
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ import type { TenantBranding } from '../branding';
3
+ export interface AccountSignInChangedProps {
4
+ branding: TenantBranding;
5
+ locale?: string;
6
+ }
7
+ export declare const AccountSignInChanged: React.FC<AccountSignInChangedProps>;
8
+ /** Return the localized subject for an account sign-in change notification. */
9
+ export declare const getAccountSignInChangedSubject: (_branding: TenantBranding, locale?: string) => string;
10
+ export default function Preview(): React.ReactElement;
11
+ //# sourceMappingURL=account-sign-in-changed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-sign-in-changed.d.ts","sourceRoot":"","sources":["../../src/templates/account-sign-in-changed.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,MAAM,WAAW,yBAAyB;IACtC,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAgDD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAmBpE,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,8BAA8B,GACvC,WAAW,cAAc,EACzB,SAAS,MAAM,KAChB,MAAuD,CAAC;AAyB3D,MAAM,CAAC,OAAO,UAAU,OAAO,IAAI,KAAK,CAAC,YAAY,CAEpD"}
@@ -0,0 +1,70 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text } from '@react-email/components';
3
+ import { DEFAULT_BRANDING } from '../branding';
4
+ import { Layout } from '../components/Layout';
5
+ import { interpolate, resolveCatalogLocale, SHARED } from '../i18n';
6
+ const STRINGS = {
7
+ en: {
8
+ preview: 'Your account sign-in was changed',
9
+ heading: 'Your Sign-In Was Changed',
10
+ body: 'Your {brandName} account was restored and connected to a new sign-in.',
11
+ warning: 'If this was not you, contact support immediately.',
12
+ subject: 'Your account sign-in was changed',
13
+ sincerely: 'Sincerely,',
14
+ },
15
+ es: {
16
+ preview: 'Se cambió el inicio de sesión de tu cuenta',
17
+ heading: 'Se cambió tu inicio de sesión',
18
+ body: 'Tu cuenta de {brandName} se restauró y se conectó a un nuevo inicio de sesión.',
19
+ warning: 'Si no fuiste tú, comunícate con soporte de inmediato.',
20
+ subject: 'Se cambió el inicio de sesión de tu cuenta',
21
+ sincerely: 'Atentamente,',
22
+ },
23
+ fr: {
24
+ preview: 'La connexion à votre compte a été modifiée',
25
+ heading: 'Votre connexion a été modifiée',
26
+ body: 'Votre compte {brandName} a été restauré et associé à une nouvelle connexion.',
27
+ warning: 'Si vous n’êtes pas à l’origine de cette action, contactez immédiatement l’assistance.',
28
+ subject: 'La connexion à votre compte a été modifiée',
29
+ sincerely: 'Cordialement,',
30
+ },
31
+ ar: {
32
+ preview: 'تم تغيير تسجيل الدخول إلى حسابك',
33
+ heading: 'تم تغيير تسجيل الدخول',
34
+ body: 'تمت استعادة حسابك في {brandName} وربطه بتسجيل دخول جديد.',
35
+ warning: 'إذا لم تكن أنت من أجرى هذا التغيير، فتواصل مع الدعم فورًا.',
36
+ subject: 'تم تغيير تسجيل الدخول إلى حسابك',
37
+ sincerely: 'مع التحيات،',
38
+ },
39
+ };
40
+ export const AccountSignInChanged = ({ branding, locale }) => {
41
+ const strings = STRINGS[resolveCatalogLocale(locale)];
42
+ return (_jsxs(Layout, { branding: branding, locale: locale, preview: strings.preview, children: [_jsx(Text, { style: heading, children: strings.heading }), _jsx(Text, { style: paragraph, children: interpolate(strings.body, { brandName: branding.brandName }) }), _jsx(Text, { style: warning, children: strings.warning }), _jsxs(Text, { style: signOff, children: [strings.sincerely, _jsx("br", {}), interpolate(SHARED[resolveCatalogLocale(locale)].teamSignature, {
43
+ brandName: branding.brandName,
44
+ })] })] }));
45
+ };
46
+ /** Return the localized subject for an account sign-in change notification. */
47
+ export const getAccountSignInChangedSubject = (_branding, locale) => STRINGS[resolveCatalogLocale(locale)].subject;
48
+ const heading = {
49
+ color: '#111827',
50
+ fontSize: '24px',
51
+ fontWeight: 600,
52
+ lineHeight: '32px',
53
+ };
54
+ const paragraph = {
55
+ color: '#374151',
56
+ fontSize: '16px',
57
+ lineHeight: '24px',
58
+ };
59
+ const warning = {
60
+ ...paragraph,
61
+ fontWeight: 600,
62
+ };
63
+ const signOff = {
64
+ ...paragraph,
65
+ marginTop: '24px',
66
+ };
67
+ export default function Preview() {
68
+ return _jsx(AccountSignInChanged, { branding: DEFAULT_BRANDING });
69
+ }
70
+ //# sourceMappingURL=account-sign-in-changed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-sign-in-changed.js","sourceRoot":"","sources":["../../src/templates/account-sign-in-changed.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAI/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAOpE,MAAM,OAAO,GAUT;IACA,EAAE,EAAE;QACA,OAAO,EAAE,kCAAkC;QAC3C,OAAO,EAAE,0BAA0B;QACnC,IAAI,EAAE,uEAAuE;QAC7E,OAAO,EAAE,mDAAmD;QAC5D,OAAO,EAAE,kCAAkC;QAC3C,SAAS,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACA,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE,+BAA+B;QACxC,IAAI,EAAE,gFAAgF;QACtF,OAAO,EAAE,uDAAuD;QAChE,OAAO,EAAE,4CAA4C;QACrD,SAAS,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACA,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE,gCAAgC;QACzC,IAAI,EAAE,8EAA8E;QACpF,OAAO,EACH,uFAAuF;QAC3F,OAAO,EAAE,4CAA4C;QACrD,SAAS,EAAE,eAAe;KAC7B;IACD,EAAE,EAAE;QACA,OAAO,EAAE,iCAAiC;QAC1C,OAAO,EAAE,uBAAuB;QAChC,IAAI,EAAE,0DAA0D;QAChE,OAAO,EAAE,4DAA4D;QACrE,OAAO,EAAE,iCAAiC;QAC1C,SAAS,EAAE,aAAa;KAC3B;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;IAC9F,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtD,OAAO,CACH,MAAC,MAAM,IAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,aAChE,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,YAAG,OAAO,CAAC,OAAO,GAAQ,EAC9C,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YACjB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,GAC1D,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,YAAG,OAAO,CAAC,OAAO,GAAQ,EAC9C,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,aACf,OAAO,CAAC,SAAS,EAClB,cAAM,EACL,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE;wBAC7D,SAAS,EAAE,QAAQ,CAAC,SAAS;qBAChC,CAAC,IACC,IACF,CACZ,CAAC;AACN,CAAC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC1C,SAAyB,EACzB,MAAe,EACT,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAE3D,MAAM,OAAO,GAAwB;IACjC,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,MAAM;CACrB,CAAC;AAEF,MAAM,SAAS,GAAwB;IACnC,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,MAAM;CACrB,CAAC;AAEF,MAAM,OAAO,GAAwB;IACjC,GAAG,SAAS;IACZ,UAAU,EAAE,GAAG;CAClB,CAAC;AAEF,MAAM,OAAO,GAAwB;IACjC,GAAG,SAAS;IACZ,SAAS,EAAE,MAAM;CACpB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,OAAO;IAC3B,OAAO,KAAC,oBAAoB,IAAC,QAAQ,EAAE,gBAAgB,GAAI,CAAC;AAChE,CAAC"}
@@ -24,4 +24,6 @@ export { EmailVerification, getEmailVerificationSubject } from './email-verifica
24
24
  export type { EmailVerificationProps } from './email-verification';
25
25
  export { CredentialUpdated, getCredentialUpdatedSubject } from './credential-updated';
26
26
  export type { CredentialUpdatedProps } from './credential-updated';
27
+ export { AccountSignInChanged, getAccountSignInChangedSubject } from './account-sign-in-changed';
28
+ export type { AccountSignInChangedProps } from './account-sign-in-changed';
27
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE1F,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAChF,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACzF,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACnG,YAAY,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACpF,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE1F,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAChF,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACzF,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AACnG,YAAY,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACpF,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AACjG,YAAY,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -11,4 +11,5 @@ export { GuardianEmailOtp, getGuardianEmailOtpSubject } from './guardian-email-o
11
11
  export { GuardianRejectedCredential, getGuardianRejectedCredentialSubject, } from './guardian-rejected-credential';
12
12
  export { EmailVerification, getEmailVerificationSubject } from './email-verification';
13
13
  export { CredentialUpdated, getCredentialUpdatedSubject } from './credential-updated';
14
+ export { AccountSignInChanged, getAccountSignInChangedSubject } from './account-sign-in-changed';
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGnF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGjE,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGnF,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAGzF,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAGnG,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGpF,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGnF,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGjE,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGnF,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAGzF,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAGnG,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGpF,OAAO,EACH,0BAA0B,EAC1B,oCAAoC,GACvC,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAEtF,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC"}
@@ -8,6 +8,7 @@ import type { TenantBranding } from '../branding';
8
8
  export interface RecoveryKeyProps {
9
9
  branding: TenantBranding;
10
10
  recoveryKey: string;
11
+ confirmationCode: string;
11
12
  /** Recipient locale (BCP-47). Defaults to English. */
12
13
  locale?: string;
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-key.d.ts","sourceRoot":"","sources":["../../src/templates/recovery-key.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOlD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAkGD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA8BlD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,UAAU,cAAc,EAAE,SAAS,MAAM,KAAG,MACb,CAAC;AAsCtE,MAAM,CAAC,OAAO,UAAU,OAAO,sBAO9B"}
1
+ {"version":3,"file":"recovery-key.d.ts","sourceRoot":"","sources":["../../src/templates/recovery-key.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOlD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAgHD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAuClD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,UAAU,cAAc,EAAE,SAAS,MAAM,KAAG,MACb,CAAC;AAsCtE,MAAM,CAAC,OAAO,UAAU,OAAO,sBAQ9B"}
@@ -16,6 +16,8 @@ const STRINGS = {
16
16
  greeting: 'Hello,',
17
17
  body: b => `Keep this email safe. You can use the recovery key below to regain access to your ${b} account if you lose your device.`,
18
18
  codeLabel: 'Recovery Key \u2014 do NOT share this with anyone',
19
+ confirmationCodeLabel: 'Confirmation code',
20
+ confirmationInstruction: 'Enter this code in the app to confirm that you received your recovery key.',
19
21
  recoverInstruction: () => (_jsxs(_Fragment, { children: ["To recover your account, choose ", _jsx("strong", { children: "\u201CRecover via Email\u201D" }), " in the app and paste the recovery key above when prompted."] })),
20
22
  notRequested: 'If you did not request this, you can safely ignore this email.',
21
23
  passport: '{brandName} is your private, digital passport for learning and work. It lets you securely collect and share your verified skills and achievements online.',
@@ -28,6 +30,8 @@ const STRINGS = {
28
30
  greeting: 'Hola,',
29
31
  body: b => `Guarda este correo en un lugar seguro. Puedes usar la clave de recuperación siguiente para recuperar el acceso a tu cuenta de ${b} si pierdes tu dispositivo.`,
30
32
  codeLabel: 'Clave de recuperación \u2014 NO la compartas con nadie',
33
+ confirmationCodeLabel: 'Código de confirmación',
34
+ confirmationInstruction: 'Introduce este código en la aplicación para confirmar que recibiste tu clave de recuperación.',
31
35
  recoverInstruction: () => (_jsxs(_Fragment, { children: ["Para recuperar tu cuenta, elige ", _jsx("strong", { children: "\u201CRecuperar por correo\u201D" }), ' ', "en la app y pega la clave de recuperaci\u00F3n anterior cuando se te solicite."] })),
32
36
  notRequested: 'Si no solicitaste esto, puedes ignorar este correo con seguridad.',
33
37
  passport: '{brandName} es tu pasaporte digital y privado para el aprendizaje y el trabajo. Te permite recopilar y compartir de forma segura tus habilidades y logros verificados en línea.',
@@ -40,6 +44,8 @@ const STRINGS = {
40
44
  greeting: 'Bonjour,',
41
45
  body: b => `Conservez cet e-mail en sécurité. Vous pouvez utiliser la clé de récupération ci-dessous pour retrouver l\u2019accès à votre compte ${b} si vous perdez votre appareil.`,
42
46
  codeLabel: 'Clé de récupération \u2014 NE la partagez avec PERSONNE',
47
+ confirmationCodeLabel: 'Code de confirmation',
48
+ confirmationInstruction: 'Saisissez ce code dans l’application pour confirmer que vous avez reçu votre clé de récupération.',
43
49
  recoverInstruction: () => (_jsxs(_Fragment, { children: ["Pour r\u00E9cup\u00E9rer votre compte, choisissez", ' ', _jsx("strong", { children: "\u00AB\u00A0R\u00E9cup\u00E9rer par e-mail\u00A0\u00BB" }), " dans l\\u2019application et collez la cl\u00E9 de r\u00E9cup\u00E9ration ci-dessus lorsque cela vous est demand\u00E9."] })),
44
50
  notRequested: 'Si vous n\u2019êtes pas à l\u2019origine de cette demande, vous pouvez ignorer cet e-mail en toute sécurité.',
45
51
  passport: '{brandName} est votre passeport numérique privé pour l\u2019apprentissage et le travail. Il vous permet de collecter et de partager en toute sécurité vos compétences et réalisations vérifiées en ligne.',
@@ -52,6 +58,8 @@ const STRINGS = {
52
58
  greeting: 'مرحبًا،',
53
59
  body: b => `احتفظ بهذا البريد في مكان آمن. يمكنك استخدام مفتاح الاستعادة أدناه لاستعادة الوصول إلى حسابك في ${b} إذا فقدت جهازك.`,
54
60
  codeLabel: 'مفتاح الاستعادة \u2014 لا تشاركه مع أي شخص إطلاقًا',
61
+ confirmationCodeLabel: 'رمز التأكيد',
62
+ confirmationInstruction: 'أدخل هذا الرمز في التطبيق لتأكيد استلام مفتاح الاستعادة الخاص بك.',
55
63
  recoverInstruction: () => (_jsxs(_Fragment, { children: ["\u0644\u0627\u0633\u062A\u0639\u0627\u062F\u0629 \u062D\u0633\u0627\u0628\u0643\u060C \u0627\u062E\u062A\u0631 ", _jsx("strong", { children: "\u00AB\u0627\u0644\u0627\u0633\u062A\u0639\u0627\u062F\u0629 \u0639\u0628\u0631 \u0627\u0644\u0628\u0631\u064A\u062F\u00BB" }), " \u0641\u064A \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0648\u0627\u0644\u0635\u0642 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0627\u0633\u062A\u0639\u0627\u062F\u0629 \u0623\u0639\u0644\u0627\u0647 \u0639\u0646\u062F \u0627\u0644\u0645\u0637\u0627\u0644\u0628\u0629 \u0628\u0630\u0644\u0643."] })),
56
64
  notRequested: 'إذا لم تطلب ذلك، يمكنك تجاهل هذه الرسالة بأمان.',
57
65
  passport: '{brandName} هو جواز سفرك الرقمي والخاص للتعلّم والعمل. يتيح لك جمع ومشاركة مهاراتك وإنجازاتك الموثّقة بأمان عبر الإنترنت.',
@@ -59,9 +67,9 @@ const STRINGS = {
59
67
  subject: b => `مفتاح الاستعادة الخاص بك في ${b}`,
60
68
  },
61
69
  };
62
- export const RecoveryKey = ({ branding, recoveryKey, locale }) => {
70
+ export const RecoveryKey = ({ branding, recoveryKey, confirmationCode, locale, }) => {
63
71
  const s = STRINGS[resolveCatalogLocale(locale)];
64
- return (_jsxs(Layout, { branding: branding, locale: locale, preview: s.preview(branding.brandName), children: [_jsx(Text, { style: heading, children: s.heading(branding.brandName) }), _jsx(Text, { style: paragraph, children: s.greeting }), _jsx(Text, { style: paragraph, children: s.body(branding.brandName) }), _jsx(CodeBlock, { code: recoveryKey, label: s.codeLabel, variant: "key" }), _jsx(Text, { style: paragraph, children: s.recoverInstruction() }), _jsx(Text, { style: muted, children: s.notRequested }), _jsx(Text, { style: paragraph, children: interpolate(s.passport, { brandName: branding.brandName }) }), _jsxs(Text, { style: signOff, children: [s.sincerely, _jsx("br", {}), interpolate(SHARED[resolveCatalogLocale(locale)].teamSignature, {
72
+ return (_jsxs(Layout, { branding: branding, locale: locale, preview: s.preview(branding.brandName), children: [_jsx(Text, { style: heading, children: s.heading(branding.brandName) }), _jsx(Text, { style: paragraph, children: s.greeting }), _jsx(Text, { style: paragraph, children: s.body(branding.brandName) }), _jsx(CodeBlock, { code: recoveryKey, label: s.codeLabel, variant: "key" }), _jsx(CodeBlock, { code: confirmationCode, label: s.confirmationCodeLabel, variant: "code" }), _jsx(Text, { style: paragraph, children: s.confirmationInstruction }), _jsx(Text, { style: paragraph, children: s.recoverInstruction() }), _jsx(Text, { style: muted, children: s.notRequested }), _jsx(Text, { style: paragraph, children: interpolate(s.passport, { brandName: branding.brandName }) }), _jsxs(Text, { style: signOff, children: [s.sincerely, _jsx("br", {}), interpolate(SHARED[resolveCatalogLocale(locale)].teamSignature, {
65
73
  brandName: branding.brandName,
66
74
  })] })] }));
67
75
  };
@@ -97,6 +105,6 @@ const signOff = {
97
105
  // Preview
98
106
  // ---------------------------------------------------------------------------
99
107
  export default function Preview() {
100
- return (_jsx(RecoveryKey, { branding: DEFAULT_BRANDING, recoveryKey: "mango-delta-fox-echo-bravo-seven-lima-niner" }));
108
+ return (_jsx(RecoveryKey, { branding: DEFAULT_BRANDING, recoveryKey: "mango-delta-fox-echo-bravo-seven-lima-niner", confirmationCode: "123456" }));
101
109
  }
102
110
  //# sourceMappingURL=recovery-key.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recovery-key.js","sourceRoot":"","sources":["../../src/templates/recovery-key.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recovery-key.js","sourceRoot":"","sources":["../../src/templates/recovery-key.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAI/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAUpE,MAAM,OAAO,GAgBT;IACA,EAAE,EAAE;QACA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,qCAAqC;QAC5D,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe;QACtC,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,CAAC,CAAC,EAAE,CACN,qFAAqF,CAAC,mCAAmC;QAC7H,SAAS,EAAE,mDAAmD;QAC9D,qBAAqB,EAAE,mBAAmB;QAC1C,uBAAuB,EACnB,4EAA4E;QAChF,kBAAkB,EAAE,GAAG,EAAE,CAAC,CACtB,kEACoC,6DAAgD,mEAEjF,CACN;QACD,YAAY,EAAE,gEAAgE;QAC9E,QAAQ,EACJ,2JAA2J;QAC/J,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe;KACzC;IACD,EAAE,EAAE;QACA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,+BAA+B,CAAC,qCAAqC;QACnF,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,+BAA+B,CAAC,EAAE;QAChD,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,CAAC,CAAC,EAAE,CACN,iIAAiI,CAAC,6BAA6B;QACnK,SAAS,EAAE,wDAAwD;QACnE,qBAAqB,EAAE,wBAAwB;QAC/C,uBAAuB,EACnB,+FAA+F;QACnG,kBAAkB,EAAE,GAAG,EAAE,CAAC,CACtB,kEACoC,gEAAmD,EAAC,GAAG,sFAExF,CACN;QACD,YAAY,EAAE,mEAAmE;QACjF,QAAQ,EACJ,iLAAiL;QACrL,SAAS,EAAE,cAAc;QACzB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,+BAA+B,CAAC,EAAE;KACnD;IACD,EAAE,EAAE;QACA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,6BAA6B,CAAC,kCAAkC;QAC9E,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,6BAA6B,CAAC,EAAE;QAC9C,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,CAAC,CAAC,EAAE,CACN,uIAAuI,CAAC,iCAAiC;QAC7K,SAAS,EAAE,yDAAyD;QACpE,qBAAqB,EAAE,sBAAsB;QAC7C,uBAAuB,EACnB,mGAAmG;QACvG,kBAAkB,EAAE,GAAG,EAAE,CAAC,CACtB,mFAC4C,GAAG,EAC3C,sFAA+D,+HAGhE,CACN;QACD,YAAY,EACR,8GAA8G;QAClH,QAAQ,EACJ,2MAA2M;QAC/M,SAAS,EAAE,eAAe;QAC1B,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,6BAA6B,CAAC,EAAE;KACjD;IACD,EAAE,EAAE;QACA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,+BAA+B,CAAC,wBAAwB;QACtE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,+BAA+B,CAAC,EAAE;QAChD,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,CAAC,CAAC,EAAE,CACN,mGAAmG,CAAC,kBAAkB;QAC1H,SAAS,EAAE,oDAAoD;QAC/D,qBAAqB,EAAE,aAAa;QACpC,uBAAuB,EACnB,mEAAmE;QACvE,kBAAkB,EAAE,GAAG,EAAE,CAAC,CACtB,iJACyB,0JAAmD,kTAEzE,CACN;QACD,YAAY,EAAE,iDAAiD;QAC/D,QAAQ,EACJ,2HAA2H;QAC/H,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,+BAA+B,CAAC,EAAE;KACnD;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACpD,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,MAAM,GACT,EAAE,EAAE;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhD,OAAO,CACH,MAAC,MAAM,IAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,aAC9E,KAAC,IAAI,IAAC,KAAK,EAAE,OAAO,YAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAQ,EAE5D,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YAAG,CAAC,CAAC,QAAQ,GAAQ,EAE3C,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAQ,EAE3D,KAAC,SAAS,IAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAC,KAAK,GAAG,EAElE,KAAC,SAAS,IAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,qBAAqB,EAAE,OAAO,EAAC,MAAM,GAAG,EAEpF,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YAAG,CAAC,CAAC,uBAAuB,GAAQ,EAE1D,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YAAG,CAAC,CAAC,kBAAkB,EAAE,GAAQ,EAEvD,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,CAAC,CAAC,YAAY,GAAQ,EAE3C,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YACjB,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,GACxD,EAEP,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,aACf,CAAC,CAAC,SAAS,EACZ,cAAM,EACL,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE;wBAC7D,SAAS,EAAE,QAAQ,CAAC,SAAS;qBAChC,CAAC,IACC,IACF,CACZ,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAwB,EAAE,MAAe,EAAU,EAAE,CACvF,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAEtE,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,OAAO,GAAwB;IACjC,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,SAAS,GAAwB;IACnC,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,KAAK,GAAwB;IAC/B,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,OAAO,GAAwB;IACjC,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,UAAU;CACrB,CAAC;AAEF,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,CAAC,OAAO,UAAU,OAAO;IAC3B,OAAO,CACH,KAAC,WAAW,IACR,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAC,6CAA6C,EACzD,gBAAgB,EAAC,QAAQ,GAC3B,CACL,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@learncard/email-templates",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Git-managed, tenant-branded email and SMS templates for LearnCard services",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -49,8 +49,14 @@ const FIXTURES: { [K in TemplateId]: TemplateDataMap[K] } = {
49
49
  },
50
50
  'account-approved': { user: { displayName: 'New User' } },
51
51
  'account-approved-email': { user: { displayName: 'New User' } },
52
- 'recovery-key': { recoveryKey: 'mango-delta-fox-echo-bravo-seven-lima-niner' },
53
- 'recovery-key-backup': { recoveryKey: 'mango-delta-fox-echo-bravo-seven-lima-niner' },
52
+ 'recovery-key': {
53
+ recoveryKey: 'mango-delta-fox-echo-bravo-seven-lima-niner',
54
+ confirmationCode: '123456',
55
+ },
56
+ 'recovery-key-backup': {
57
+ recoveryKey: 'mango-delta-fox-echo-bravo-seven-lima-niner',
58
+ confirmationCode: '123456',
59
+ },
54
60
  'endorsement-request': {
55
61
  shareLink: 'https://learncard.app/share/xyz',
56
62
  recipient: { name: 'Dr. Emily Chen' },
@@ -85,6 +91,7 @@ const FIXTURES: { [K in TemplateId]: TemplateDataMap[K] } = {
85
91
  credential: { name: 'Perfect Attendance Award' },
86
92
  recipient: { email: 'student@example.com' },
87
93
  },
94
+ 'account-sign-in-changed': {},
88
95
  };
89
96
 
90
97
  const ALL_TEMPLATE_IDS = Object.keys(FIXTURES) as TemplateId[];
@@ -83,10 +83,12 @@ const TEMPLATE_FIXTURES: { [K in TemplateId]: TemplateDataMap[K] } = {
83
83
 
84
84
  'recovery-key': {
85
85
  recoveryKey: 'ABCD-EFGH-1234-5678',
86
+ confirmationCode: '123456',
86
87
  },
87
88
 
88
89
  'recovery-key-backup': {
89
90
  recoveryKey: 'WXYZ-9876-LMNO-4321',
91
+ confirmationCode: '654321',
90
92
  },
91
93
 
92
94
  'endorsement-request': {
@@ -135,6 +137,7 @@ const TEMPLATE_FIXTURES: { [K in TemplateId]: TemplateDataMap[K] } = {
135
137
  issuer: { name: 'Inbox Demo School' },
136
138
  credential: { name: 'Introduction to Biology' },
137
139
  },
140
+ 'account-sign-in-changed': {},
138
141
  };
139
142
 
140
143
  const ALL_TEMPLATE_IDS = Object.keys(TEMPLATE_FIXTURES) as TemplateId[];
@@ -251,6 +254,7 @@ describe('renderEmail — content assertions', () => {
251
254
  const { html } = await renderEmail('recovery-key', DEFAULT_BRANDING, data);
252
255
 
253
256
  expect(html).toContain('ABCD-EFGH-1234-5678');
257
+ expect(html).toContain('123456');
254
258
  });
255
259
 
256
260
  it('endorsement-request includes the share link and message', async () => {
package/src/index.ts CHANGED
@@ -38,6 +38,7 @@ export type {
38
38
  GuardianEmailOtpData,
39
39
  GuardianRejectedCredentialData,
40
40
  CredentialUpdatedData,
41
+ AccountSignInChangedData,
41
42
  } from './render';
42
43
 
43
44
  // SMS rendering
@@ -14,18 +14,21 @@ export default function RecoveryKeyScenarios() {
14
14
  <RecoveryKey
15
15
  branding={LEARNCARD_BRANDING}
16
16
  recoveryKey="mango-delta-fox-echo-bravo-seven-lima-niner"
17
+ confirmationCode="123456"
17
18
  />
18
19
 
19
20
  <ScenarioDivider label="Long recovery key (wrapping test)" />
20
21
  <RecoveryKey
21
22
  branding={LEARNCARD_BRANDING}
22
23
  recoveryKey="alpha-bravo-charlie-delta-echo-foxtrot-golf-hotel-india-juliet-kilo-lima"
24
+ confirmationCode="654321"
23
25
  />
24
26
 
25
27
  <ScenarioDivider label="VetPass tenant branding" />
26
28
  <RecoveryKey
27
29
  branding={VETPASS_BRANDING}
28
30
  recoveryKey="sierra-tango-uniform-victor-whiskey-xray"
31
+ confirmationCode="987654"
29
32
  />
30
33
  </>
31
34
  );
package/src/render.ts CHANGED
@@ -41,6 +41,8 @@ import {
41
41
  getEmailVerificationSubject,
42
42
  CredentialUpdated,
43
43
  getCredentialUpdatedSubject,
44
+ AccountSignInChanged,
45
+ getAccountSignInChangedSubject,
44
46
  } from './templates';
45
47
 
46
48
  import type {
@@ -56,6 +58,7 @@ import type {
56
58
  GuardianRejectedCredentialProps,
57
59
  EmailVerificationProps,
58
60
  CredentialUpdatedProps,
61
+ AccountSignInChangedProps,
59
62
  } from './templates';
60
63
 
61
64
  // ---------------------------------------------------------------------------
@@ -152,6 +155,8 @@ export interface TemplateDataMap {
152
155
 
153
156
  /** brain-service: managed credential refresh update notice (LC-2198) */
154
157
  'credential-updated': CredentialUpdatedData;
158
+ /** lca-api: lost-login identity rebind security notification */
159
+ 'account-sign-in-changed': AccountSignInChangedData;
155
160
  }
156
161
 
157
162
  export type TemplateId = keyof TemplateDataMap;
@@ -190,6 +195,7 @@ export interface AccountApprovedData {
190
195
 
191
196
  export interface RecoveryKeyData {
192
197
  recoveryKey: string;
198
+ confirmationCode: string;
193
199
  }
194
200
 
195
201
  export interface EndorsementRequestData {
@@ -235,6 +241,8 @@ export interface CredentialUpdatedData {
235
241
  credential?: { name?: string };
236
242
  }
237
243
 
244
+ export type AccountSignInChangedData = Record<string, never>;
245
+
238
246
  // ---------------------------------------------------------------------------
239
247
  // renderEmail()
240
248
  // ---------------------------------------------------------------------------
@@ -442,6 +450,15 @@ function buildElement(
442
450
  };
443
451
  }
444
452
 
453
+ case 'account-sign-in-changed': {
454
+ const props: AccountSignInChangedProps = { branding, locale };
455
+
456
+ return {
457
+ element: React.createElement(AccountSignInChanged, props),
458
+ subject: getAccountSignInChangedSubject(branding, locale),
459
+ };
460
+ }
461
+
445
462
  default: {
446
463
  const _exhaustive: never = templateId;
447
464
  throw new Error(`Unknown template: ${_exhaustive}`);
@@ -0,0 +1,113 @@
1
+ import { Text } from '@react-email/components';
2
+ import * as React from 'react';
3
+
4
+ import type { TenantBranding } from '../branding';
5
+ import { DEFAULT_BRANDING } from '../branding';
6
+ import { Layout } from '../components/Layout';
7
+ import type { NotificationLocale } from '../i18n';
8
+ import { interpolate, resolveCatalogLocale, SHARED } from '../i18n';
9
+
10
+ export interface AccountSignInChangedProps {
11
+ branding: TenantBranding;
12
+ locale?: string;
13
+ }
14
+
15
+ const STRINGS: Record<
16
+ NotificationLocale,
17
+ {
18
+ preview: string;
19
+ heading: string;
20
+ body: string;
21
+ warning: string;
22
+ subject: string;
23
+ sincerely: string;
24
+ }
25
+ > = {
26
+ en: {
27
+ preview: 'Your account sign-in was changed',
28
+ heading: 'Your Sign-In Was Changed',
29
+ body: 'Your {brandName} account was restored and connected to a new sign-in.',
30
+ warning: 'If this was not you, contact support immediately.',
31
+ subject: 'Your account sign-in was changed',
32
+ sincerely: 'Sincerely,',
33
+ },
34
+ es: {
35
+ preview: 'Se cambió el inicio de sesión de tu cuenta',
36
+ heading: 'Se cambió tu inicio de sesión',
37
+ body: 'Tu cuenta de {brandName} se restauró y se conectó a un nuevo inicio de sesión.',
38
+ warning: 'Si no fuiste tú, comunícate con soporte de inmediato.',
39
+ subject: 'Se cambió el inicio de sesión de tu cuenta',
40
+ sincerely: 'Atentamente,',
41
+ },
42
+ fr: {
43
+ preview: 'La connexion à votre compte a été modifiée',
44
+ heading: 'Votre connexion a été modifiée',
45
+ body: 'Votre compte {brandName} a été restauré et associé à une nouvelle connexion.',
46
+ warning:
47
+ 'Si vous n’êtes pas à l’origine de cette action, contactez immédiatement l’assistance.',
48
+ subject: 'La connexion à votre compte a été modifiée',
49
+ sincerely: 'Cordialement,',
50
+ },
51
+ ar: {
52
+ preview: 'تم تغيير تسجيل الدخول إلى حسابك',
53
+ heading: 'تم تغيير تسجيل الدخول',
54
+ body: 'تمت استعادة حسابك في {brandName} وربطه بتسجيل دخول جديد.',
55
+ warning: 'إذا لم تكن أنت من أجرى هذا التغيير، فتواصل مع الدعم فورًا.',
56
+ subject: 'تم تغيير تسجيل الدخول إلى حسابك',
57
+ sincerely: 'مع التحيات،',
58
+ },
59
+ };
60
+
61
+ export const AccountSignInChanged: React.FC<AccountSignInChangedProps> = ({ branding, locale }) => {
62
+ const strings = STRINGS[resolveCatalogLocale(locale)];
63
+
64
+ return (
65
+ <Layout branding={branding} locale={locale} preview={strings.preview}>
66
+ <Text style={heading}>{strings.heading}</Text>
67
+ <Text style={paragraph}>
68
+ {interpolate(strings.body, { brandName: branding.brandName })}
69
+ </Text>
70
+ <Text style={warning}>{strings.warning}</Text>
71
+ <Text style={signOff}>
72
+ {strings.sincerely}
73
+ <br />
74
+ {interpolate(SHARED[resolveCatalogLocale(locale)].teamSignature, {
75
+ brandName: branding.brandName,
76
+ })}
77
+ </Text>
78
+ </Layout>
79
+ );
80
+ };
81
+
82
+ /** Return the localized subject for an account sign-in change notification. */
83
+ export const getAccountSignInChangedSubject = (
84
+ _branding: TenantBranding,
85
+ locale?: string
86
+ ): string => STRINGS[resolveCatalogLocale(locale)].subject;
87
+
88
+ const heading: React.CSSProperties = {
89
+ color: '#111827',
90
+ fontSize: '24px',
91
+ fontWeight: 600,
92
+ lineHeight: '32px',
93
+ };
94
+
95
+ const paragraph: React.CSSProperties = {
96
+ color: '#374151',
97
+ fontSize: '16px',
98
+ lineHeight: '24px',
99
+ };
100
+
101
+ const warning: React.CSSProperties = {
102
+ ...paragraph,
103
+ fontWeight: 600,
104
+ };
105
+
106
+ const signOff: React.CSSProperties = {
107
+ ...paragraph,
108
+ marginTop: '24px',
109
+ };
110
+
111
+ export default function Preview(): React.ReactElement {
112
+ return <AccountSignInChanged branding={DEFAULT_BRANDING} />;
113
+ }
@@ -45,3 +45,5 @@ export type { EmailVerificationProps } from './email-verification';
45
45
 
46
46
  export { CredentialUpdated, getCredentialUpdatedSubject } from './credential-updated';
47
47
  export type { CredentialUpdatedProps } from './credential-updated';
48
+ export { AccountSignInChanged, getAccountSignInChangedSubject } from './account-sign-in-changed';
49
+ export type { AccountSignInChangedProps } from './account-sign-in-changed';
@@ -17,6 +17,7 @@ import { resolveCatalogLocale, interpolate, SHARED } from '../i18n';
17
17
  export interface RecoveryKeyProps {
18
18
  branding: TenantBranding;
19
19
  recoveryKey: string;
20
+ confirmationCode: string;
20
21
  /** Recipient locale (BCP-47). Defaults to English. */
21
22
  locale?: string;
22
23
  }
@@ -29,6 +30,8 @@ const STRINGS: Record<
29
30
  greeting: string;
30
31
  body: (brandName: string) => string;
31
32
  codeLabel: string;
33
+ confirmationCodeLabel: string;
34
+ confirmationInstruction: string;
32
35
  recoverInstruction: () => React.ReactNode;
33
36
  notRequested: string;
34
37
  passport: string;
@@ -43,6 +46,9 @@ const STRINGS: Record<
43
46
  body: b =>
44
47
  `Keep this email safe. You can use the recovery key below to regain access to your ${b} account if you lose your device.`,
45
48
  codeLabel: 'Recovery Key \u2014 do NOT share this with anyone',
49
+ confirmationCodeLabel: 'Confirmation code',
50
+ confirmationInstruction:
51
+ 'Enter this code in the app to confirm that you received your recovery key.',
46
52
  recoverInstruction: () => (
47
53
  <>
48
54
  To recover your account, choose <strong>&ldquo;Recover via Email&rdquo;</strong> in
@@ -62,6 +68,9 @@ const STRINGS: Record<
62
68
  body: b =>
63
69
  `Guarda este correo en un lugar seguro. Puedes usar la clave de recuperación siguiente para recuperar el acceso a tu cuenta de ${b} si pierdes tu dispositivo.`,
64
70
  codeLabel: 'Clave de recuperación \u2014 NO la compartas con nadie',
71
+ confirmationCodeLabel: 'Código de confirmación',
72
+ confirmationInstruction:
73
+ 'Introduce este código en la aplicación para confirmar que recibiste tu clave de recuperación.',
65
74
  recoverInstruction: () => (
66
75
  <>
67
76
  Para recuperar tu cuenta, elige <strong>&ldquo;Recuperar por correo&rdquo;</strong>{' '}
@@ -81,6 +90,9 @@ const STRINGS: Record<
81
90
  body: b =>
82
91
  `Conservez cet e-mail en sécurité. Vous pouvez utiliser la clé de récupération ci-dessous pour retrouver l\u2019accès à votre compte ${b} si vous perdez votre appareil.`,
83
92
  codeLabel: 'Clé de récupération \u2014 NE la partagez avec PERSONNE',
93
+ confirmationCodeLabel: 'Code de confirmation',
94
+ confirmationInstruction:
95
+ 'Saisissez ce code dans l’application pour confirmer que vous avez reçu votre clé de récupération.',
84
96
  recoverInstruction: () => (
85
97
  <>
86
98
  Pour récupérer votre compte, choisissez{' '}
@@ -103,6 +115,9 @@ const STRINGS: Record<
103
115
  body: b =>
104
116
  `احتفظ بهذا البريد في مكان آمن. يمكنك استخدام مفتاح الاستعادة أدناه لاستعادة الوصول إلى حسابك في ${b} إذا فقدت جهازك.`,
105
117
  codeLabel: 'مفتاح الاستعادة \u2014 لا تشاركه مع أي شخص إطلاقًا',
118
+ confirmationCodeLabel: 'رمز التأكيد',
119
+ confirmationInstruction:
120
+ 'أدخل هذا الرمز في التطبيق لتأكيد استلام مفتاح الاستعادة الخاص بك.',
106
121
  recoverInstruction: () => (
107
122
  <>
108
123
  لاستعادة حسابك، اختر <strong>&laquo;الاستعادة عبر البريد&raquo;</strong> في التطبيق
@@ -117,7 +132,12 @@ const STRINGS: Record<
117
132
  },
118
133
  };
119
134
 
120
- export const RecoveryKey: React.FC<RecoveryKeyProps> = ({ branding, recoveryKey, locale }) => {
135
+ export const RecoveryKey: React.FC<RecoveryKeyProps> = ({
136
+ branding,
137
+ recoveryKey,
138
+ confirmationCode,
139
+ locale,
140
+ }) => {
121
141
  const s = STRINGS[resolveCatalogLocale(locale)];
122
142
 
123
143
  return (
@@ -130,6 +150,10 @@ export const RecoveryKey: React.FC<RecoveryKeyProps> = ({ branding, recoveryKey,
130
150
 
131
151
  <CodeBlock code={recoveryKey} label={s.codeLabel} variant="key" />
132
152
 
153
+ <CodeBlock code={confirmationCode} label={s.confirmationCodeLabel} variant="code" />
154
+
155
+ <Text style={paragraph}>{s.confirmationInstruction}</Text>
156
+
133
157
  <Text style={paragraph}>{s.recoverInstruction()}</Text>
134
158
 
135
159
  <Text style={muted}>{s.notRequested}</Text>
@@ -193,6 +217,7 @@ export default function Preview() {
193
217
  <RecoveryKey
194
218
  branding={DEFAULT_BRANDING}
195
219
  recoveryKey="mango-delta-fox-echo-bravo-seven-lima-niner"
220
+ confirmationCode="123456"
196
221
  />
197
222
  );
198
223
  }