@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 +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/previews/recovery-key-scenarios.d.ts.map +1 -1
- package/dist/previews/recovery-key-scenarios.js +1 -1
- package/dist/previews/recovery-key-scenarios.js.map +1 -1
- package/dist/render.d.ts +4 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +8 -1
- package/dist/render.js.map +1 -1
- package/dist/templates/account-sign-in-changed.d.ts +11 -0
- package/dist/templates/account-sign-in-changed.d.ts.map +1 -0
- package/dist/templates/account-sign-in-changed.js +70 -0
- package/dist/templates/account-sign-in-changed.js.map +1 -0
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +1 -0
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/recovery-key.d.ts +1 -0
- package/dist/templates/recovery-key.d.ts.map +1 -1
- package/dist/templates/recovery-key.js +11 -3
- package/dist/templates/recovery-key.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/i18n.test.ts +9 -2
- package/src/__tests__/render.test.ts +4 -0
- package/src/index.ts +1 -0
- package/src/previews/recovery-key-scenarios.tsx +3 -0
- package/src/render.ts +17 -0
- package/src/templates/account-sign-in-changed.tsx +113 -0
- package/src/templates/index.ts +2 -0
- package/src/templates/recovery-key.tsx +26 -1
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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;
|
|
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,
|
|
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,
|
|
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
|
*
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
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}`);
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAC1B,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,yBAAyB,EACzB,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,EAC5B,0BAA0B,EAC1B,oCAAoC,EACpC,qBAAqB,EACrB,+BAA+B,EAC/B,0BAA0B,EAC1B,oCAAoC,EACpC,gBAAgB,EAChB,0BAA0B,EAC1B,0BAA0B,EAC1B,oCAAoC,EACpC,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,
|
|
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":"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"}
|
|
@@ -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"}
|
package/dist/templates/index.js
CHANGED
|
@@ -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"}
|
|
@@ -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;
|
|
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":";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;
|
|
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
|
@@ -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': {
|
|
53
|
-
|
|
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
|
@@ -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
|
+
}
|
package/src/templates/index.ts
CHANGED
|
@@ -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>“Recover via Email”</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>“Recuperar por correo”</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>«الاستعادة عبر البريد»</strong> في التطبيق
|
|
@@ -117,7 +132,12 @@ const STRINGS: Record<
|
|
|
117
132
|
},
|
|
118
133
|
};
|
|
119
134
|
|
|
120
|
-
export const RecoveryKey: React.FC<RecoveryKeyProps> = ({
|
|
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
|
}
|