From 04cc1fe69a098903dbc473cd1895c540556a4e06 Mon Sep 17 00:00:00 2001 From: simeng-li Date: Wed, 8 Mar 2023 10:46:10 +0800 Subject: [PATCH] feat(console,ui,phrases,schemas): update favicon and html title (#3302) --- .changeset-staged/eight-shoes-look.md | 17 ++++++ .../tabs/Branding/BrandingForm.tsx | 10 ++++ .../src/pages/SignInExperience/utils/form.ts | 1 + packages/phrases-ui/src/locales/de.ts | 1 + packages/phrases-ui/src/locales/en.ts | 1 + packages/phrases-ui/src/locales/fr.ts | 1 + packages/phrases-ui/src/locales/ko.ts | 1 + packages/phrases-ui/src/locales/pt-br.ts | 1 + packages/phrases-ui/src/locales/pt-pt.ts | 1 + packages/phrases-ui/src/locales/ru.ts | 1 + packages/phrases-ui/src/locales/tr-tr.ts | 1 + packages/phrases-ui/src/locales/zh-cn.ts | 1 + .../translation/admin-console/sign-in-exp.ts | 1 + .../translation/admin-console/sign-in-exp.ts | 1 + .../translation/admin-console/sign-in-exp.ts | 1 + .../translation/admin-console/sign-in-exp.ts | 1 + .../translation/admin-console/sign-in-exp.ts | 1 + .../translation/admin-console/sign-in-exp.ts | 1 + .../translation/admin-console/sign-in-exp.ts | 1 + .../translation/admin-console/sign-in-exp.ts | 1 + .../schemas/src/foundations/jsonb-types.ts | 1 + packages/ui/jest.config.ts | 1 + packages/ui/src/App.tsx | 11 +++- packages/ui/src/apple-touch-icon.png | Bin 8034 -> 0 bytes packages/ui/src/assets/apple-touch-icon.png | Bin 0 -> 83873 bytes packages/ui/src/assets/favicon.png | Bin 0 -> 592 bytes .../ui/src/containers/AppContent/index.tsx | 15 ++++- packages/ui/src/hooks/use-preview.ts | 1 - packages/ui/src/index.html | 2 - packages/ui/src/utils/sign-in-experience.ts | 55 ++++++++++++++++++ 30 files changed, 125 insertions(+), 6 deletions(-) create mode 100644 .changeset-staged/eight-shoes-look.md delete mode 100644 packages/ui/src/apple-touch-icon.png create mode 100644 packages/ui/src/assets/apple-touch-icon.png create mode 100644 packages/ui/src/assets/favicon.png diff --git a/.changeset-staged/eight-shoes-look.md b/.changeset-staged/eight-shoes-look.md new file mode 100644 index 000000000..a272c4e2b --- /dev/null +++ b/.changeset-staged/eight-shoes-look.md @@ -0,0 +1,17 @@ +--- +"@logto/console": minor +"@logto/phrases": minor +"@logto/phrases-ui": minor +"@logto/schemas": minor +"@logto/ui": minor +--- + +### Add dynamic favicon and html title + +- Add the favicon field in the sign-in-experience branding settings. Users would be able to upload their own favicon. Use local logto icon as a fallback + +- Set different html title for different pages. + - sign-in + - register + - forgot-password + - logto diff --git a/packages/console/src/pages/SignInExperience/tabs/Branding/BrandingForm.tsx b/packages/console/src/pages/SignInExperience/tabs/Branding/BrandingForm.tsx index 787662fa0..8d2eb33d9 100644 --- a/packages/console/src/pages/SignInExperience/tabs/Branding/BrandingForm.tsx +++ b/packages/console/src/pages/SignInExperience/tabs/Branding/BrandingForm.tsx @@ -27,6 +27,16 @@ const BrandingForm = () => { return (
{t('sign_in_exp.branding.title')}
+ + !value || uriValidator(value) || t('errors.invalid_uri_format'), + })} + hasError={Boolean(errors.branding?.favicon)} + errorMessage={errors.branding?.favicon?.message} + placeholder={t('sign_in_exp.branding.favicon')} + /> + .', terms_of_use: 'Nutzungsbedingungen', + sign_in: 'Anmelden', create_account: 'Konto erstellen', or: 'oder', enter_passcode: 'Der Bestätigungscode wurde an deine {{address}} gesendet', diff --git a/packages/phrases-ui/src/locales/en.ts b/packages/phrases-ui/src/locales/en.ts index bd22b1d15..5305392ca 100644 --- a/packages/phrases-ui/src/locales/en.ts +++ b/packages/phrases-ui/src/locales/en.ts @@ -46,6 +46,7 @@ const translation = { agree_with_terms: 'I have read and agree to the ', agree_with_terms_modal: 'To proceed, please agree to the .', terms_of_use: 'Terms of Use', + sign_in: 'Sign in', create_account: 'Create account', or: 'or', enter_passcode: 'The verification code has been sent to your {{address}} {{target}}', diff --git a/packages/phrases-ui/src/locales/fr.ts b/packages/phrases-ui/src/locales/fr.ts index fd48d9918..aaebb65e2 100644 --- a/packages/phrases-ui/src/locales/fr.ts +++ b/packages/phrases-ui/src/locales/fr.ts @@ -48,6 +48,7 @@ const translation = { agree_with_terms: "J'ai lu et accepté les ", agree_with_terms_modal: 'Pour continuer, veuillez accepter le .', terms_of_use: "Conditions d'utilisation", + sign_in: 'Connexion', create_account: 'Créer un compte', or: 'ou', enter_passcode: 'Le code a été envoyé à {{address}} {{target}}', diff --git a/packages/phrases-ui/src/locales/ko.ts b/packages/phrases-ui/src/locales/ko.ts index 2a5e6a406..4b6b8d324 100644 --- a/packages/phrases-ui/src/locales/ko.ts +++ b/packages/phrases-ui/src/locales/ko.ts @@ -48,6 +48,7 @@ const translation = { agree_with_terms: '나는 내용을 읽었으며, 이에 동의합니다.', agree_with_terms_modal: '진행하기 위해서는, 다음을 동의해주세요 .', terms_of_use: '이용약관', + sign_in: '로그인', create_account: '계정 생성', or: '또는', enter_passcode: '{{address}} {{target}} 으로 비밀번호가 전송되었어요.', diff --git a/packages/phrases-ui/src/locales/pt-br.ts b/packages/phrases-ui/src/locales/pt-br.ts index c2106d2b0..841f6025f 100644 --- a/packages/phrases-ui/src/locales/pt-br.ts +++ b/packages/phrases-ui/src/locales/pt-br.ts @@ -48,6 +48,7 @@ const translation = { agree_with_terms: 'Eu li e concordo com os ', agree_with_terms_modal: 'Para continuar, por favor, concorde com os .', terms_of_use: 'Termos de uso', + sign_in: 'Entrar', create_account: 'Criar conta', or: 'ou', enter_passcode: 'O código de verificação foi enviado para o seu {{address}} {{target}}', diff --git a/packages/phrases-ui/src/locales/pt-pt.ts b/packages/phrases-ui/src/locales/pt-pt.ts index ade6f63cb..a7a99fb8e 100644 --- a/packages/phrases-ui/src/locales/pt-pt.ts +++ b/packages/phrases-ui/src/locales/pt-pt.ts @@ -48,6 +48,7 @@ const translation = { agree_with_terms: 'Eu li e concordo com os ', agree_with_terms_modal: 'Para prosseguir, por favor, concorde com o .', terms_of_use: 'Termos de uso', + sign_in: 'Entrar', create_account: 'Criar uma conta', or: 'ou', enter_passcode: 'A senha foi enviada para o seu {{address}} {{target}}', diff --git a/packages/phrases-ui/src/locales/ru.ts b/packages/phrases-ui/src/locales/ru.ts index 56f207f41..865ca9f39 100644 --- a/packages/phrases-ui/src/locales/ru.ts +++ b/packages/phrases-ui/src/locales/ru.ts @@ -48,6 +48,7 @@ const translation = { agree_with_terms: 'Я прочитал и согласен с ', agree_with_terms_modal: 'Чтобы продолжить, пожалуйста, согласитесь с ', terms_of_use: 'Условиями использования', + sign_in: 'Войти', create_account: 'Создать аккаунт', or: 'или', enter_passcode: 'Код подтверждения был отправлен на {{address}}', diff --git a/packages/phrases-ui/src/locales/tr-tr.ts b/packages/phrases-ui/src/locales/tr-tr.ts index 65feb618b..ba8000d61 100644 --- a/packages/phrases-ui/src/locales/tr-tr.ts +++ b/packages/phrases-ui/src/locales/tr-tr.ts @@ -48,6 +48,7 @@ const translation = { agree_with_terms: 'Okudum ve anladım', agree_with_terms_modal: 'Devam etmek için lütfen i kabul edin.', terms_of_use: 'Kullanım Koşulları', + sign_in: 'Giriş Yap', create_account: 'Hesap Oluştur', or: 'veya', enter_passcode: 'Kod {{address}} {{target}} inize gönderildi.', diff --git a/packages/phrases-ui/src/locales/zh-cn.ts b/packages/phrases-ui/src/locales/zh-cn.ts index d9425779a..1a0bd775c 100644 --- a/packages/phrases-ui/src/locales/zh-cn.ts +++ b/packages/phrases-ui/src/locales/zh-cn.ts @@ -48,6 +48,7 @@ const translation = { agree_with_terms: '我已阅读并同意 ', agree_with_terms_modal: '请先同意 以继续', terms_of_use: '使用条款', + sign_in: '登录', create_account: '创建帐号', or: '或', enter_passcode: '验证码已经发送至你的{{ address }} {{target}}', diff --git a/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp.ts index 59c774587..228c74fe6 100644 --- a/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp.ts @@ -84,6 +84,7 @@ const sign_in_exp = { branding: { title: 'BRANDING', ui_style: 'Stil', + favicon: 'Browser favicon', // UNTRANSLATED styles: { logo_slogan: 'App logo mit Slogan', logo: 'Nur App logo', diff --git a/packages/phrases/src/locales/en/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/en/translation/admin-console/sign-in-exp.ts index ee41c80a2..09ddcd657 100644 --- a/packages/phrases/src/locales/en/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/en/translation/admin-console/sign-in-exp.ts @@ -27,6 +27,7 @@ const sign_in_exp = { branding: { title: 'BRANDING AREA', ui_style: 'Style', + favicon: 'Browser favicon', styles: { logo_slogan: 'App logo with slogan', logo: 'App logo only', diff --git a/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts index c5928e19c..44bd7e6fe 100644 --- a/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts @@ -29,6 +29,7 @@ const sign_in_exp = { branding: { title: 'ZONE DE MARQUE', ui_style: 'Style', + favicon: 'Browser favicon', // UNTRANSLATED styles: { logo_slogan: "Logo de l'application avec slogan", logo: "Logo de l'application seulement", diff --git a/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp.ts index 3ab9e9c55..88ef6c449 100644 --- a/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp.ts @@ -25,6 +25,7 @@ const sign_in_exp = { branding: { title: '브랜딩 영역', ui_style: '스타일', + favicon: 'Browser favicon', // UNTRANSLATED styles: { logo_slogan: '앱 로고 & 슬로건', logo: '앱 로고만', diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp.ts index 9a1cfd65b..a420e8c55 100644 --- a/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp.ts @@ -28,6 +28,7 @@ const sign_in_exp = { branding: { title: 'ÁREA DE MARCA', ui_style: 'Estilo', + favicon: 'Browser favicon', // UNTRANSLATED styles: { logo_slogan: 'Logo do aplicativo com slogan', logo: 'Somente logotipo do aplicativo', diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts index 430925197..25c01fd09 100644 --- a/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts @@ -27,6 +27,7 @@ const sign_in_exp = { branding: { title: 'ÁREA DE MARCA', ui_style: 'Estilo', + favicon: 'Browser favicon', // UNTRANSLATED styles: { logo_slogan: 'Logo da app com slogan', logo: 'Apenas o logo da app', diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts index bf18e9e1b..0f9a202ed 100644 --- a/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts @@ -28,6 +28,7 @@ const sign_in_exp = { branding: { title: 'MARKA ALANI', ui_style: 'Stil', + favicon: 'Browser favicon', // UNTRANSLATED styles: { logo_slogan: 'Sloganlı şekilde uygulama logosu', logo: 'Yalnızca uygulama logosu', diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts index e4df5e62d..c9cf49fb7 100644 --- a/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts +++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts @@ -26,6 +26,7 @@ const sign_in_exp = { branding: { title: '品牌定制区', ui_style: '样式', + favicon: '浏览器地址栏图标', styles: { logo_slogan: 'Logo 和标语', logo: '仅有 Logo', diff --git a/packages/schemas/src/foundations/jsonb-types.ts b/packages/schemas/src/foundations/jsonb-types.ts index 52192966e..57e46007d 100644 --- a/packages/schemas/src/foundations/jsonb-types.ts +++ b/packages/schemas/src/foundations/jsonb-types.ts @@ -113,6 +113,7 @@ export const brandingGuard = z.object({ logoUrl: z.string().url(), darkLogoUrl: z.string().url().optional(), slogan: z.string().optional(), + favicon: z.string().url().optional(), }); export type Branding = z.infer; diff --git a/packages/ui/jest.config.ts b/packages/ui/jest.config.ts index 2a12e9672..acb36ac41 100644 --- a/packages/ui/jest.config.ts +++ b/packages/ui/jest.config.ts @@ -7,6 +7,7 @@ const config: Config.InitialOptions = { setupFilesAfterEnv: ['/src/jest.setup.ts'], transform: { '\\.(svg)$': 'jest-transformer-svg', + '\\.(png)$': 'jest-transform-stub', }, }), // Will update common config soon diff --git a/packages/ui/src/App.tsx b/packages/ui/src/App.tsx index d94149f65..8db3ea361 100644 --- a/packages/ui/src/App.tsx +++ b/packages/ui/src/App.tsx @@ -23,7 +23,7 @@ import SocialLinkAccount from './pages/SocialLinkAccount'; import SocialSignIn from './pages/SocialSignInCallback'; import Springboard from './pages/Springboard'; import VerificationCode from './pages/VerificationCode'; -import { getSignInExperienceSettings } from './utils/sign-in-experience'; +import { getSignInExperienceSettings, setFavIcon } from './utils/sign-in-experience'; import './scss/normalized.scss'; @@ -44,8 +44,15 @@ const App = () => { (async () => { const settings = await getSignInExperienceSettings(); + + const { + customCss, + branding: { favicon }, + } = settings; + // eslint-disable-next-line @silverhand/fp/no-mutation - customCssRef.current.textContent = settings.customCss; + customCssRef.current.textContent = customCss; + setFavIcon(favicon); // Note: i18n must be initialized ahead of page render await initI18n(); diff --git a/packages/ui/src/apple-touch-icon.png b/packages/ui/src/apple-touch-icon.png deleted file mode 100644 index 893bb266f21949102b5618a5acd71a647b3222cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8034 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 Ly6{qEWY~WIq}&O8 diff --git a/packages/ui/src/assets/apple-touch-icon.png b/packages/ui/src/assets/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1afa02e818fa786d6e09d48a050b906f1f2e6011 GIT binary patch literal 83873 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

oNY3#5m#CN3oEnh1u0vy4Wv~ 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 e{#>2bIsXAow5_hS3- { const { isMobile } = usePlatform(); + const location = useLocation(); + + useEffect(() => { + const { pathname } = location; + const title = parseHtmlTitle(pathname); + + if (title) { + // eslint-disable-next-line @silverhand/fp/no-mutation + document.title = title; + } + }, [location]); return (

diff --git a/packages/ui/src/hooks/use-preview.ts b/packages/ui/src/hooks/use-preview.ts index 7bfad88d0..753481dea 100644 --- a/packages/ui/src/hooks/use-preview.ts +++ b/packages/ui/src/hooks/use-preview.ts @@ -57,7 +57,6 @@ const usePreview = (context: Context): [boolean, PreviewConfig?] => { const { signInExperience: { socialConnectors, color, ...rest }, - language, mode, platform, isNative, diff --git a/packages/ui/src/index.html b/packages/ui/src/index.html index ed24fa51d..983769dcd 100644 --- a/packages/ui/src/index.html +++ b/packages/ui/src/index.html @@ -4,8 +4,6 @@ - - Logto diff --git a/packages/ui/src/utils/sign-in-experience.ts b/packages/ui/src/utils/sign-in-experience.ts index eecd56058..b4ad61ccb 100644 --- a/packages/ui/src/utils/sign-in-experience.ts +++ b/packages/ui/src/utils/sign-in-experience.ts @@ -4,8 +4,12 @@ */ import { SignInIdentifier } from '@logto/schemas'; +import i18next from 'i18next'; +import type { TFuncKey } from 'react-i18next'; import { getSignInExperience } from '@/apis/settings'; +import defaultAppleTouchLogo from '@/assets/apple-touch-icon.png'; +import defaultFavicon from '@/assets/favicon.png'; import type { SignInExperienceResponse } from '@/types'; import { filterSocialConnectors } from '@/utils/social-connectors'; @@ -30,3 +34,54 @@ export const isEmailOrPhoneMethod = ( method: SignInIdentifier ): method is SignInIdentifier.Email | SignInIdentifier.Phone => [SignInIdentifier.Email, SignInIdentifier.Phone].includes(method); + +export const parseHtmlTitle = (path: string) => { + if (path.startsWith('/sign-in') || path.startsWith('/callback') || path.startsWith('/consent')) { + return i18next.t<'translation', TFuncKey>('description.sign_in'); + } + + if (path.startsWith('/register') || path.startsWith('/social/link')) { + return i18next.t<'translation', TFuncKey>('description.create_account'); + } + + if (path.startsWith('/forgot-password')) { + return i18next.t<'translation', TFuncKey>('description.reset_password'); + } + + // Return undefined for all continue flow pages to keep title remain the same as the previous page + if (path.startsWith('/continue')) { + return; + } + + return 'Logto'; +}; + +export const setFavIcon = (icon?: string) => { + const iconLink = document.querySelector('link[rel="icon"]'); + const appleTouchIconLink = document.querySelector( + 'link[rel="apple-touch-icon"]' + ); + + /* eslint-disable @silverhand/fp/no-mutation */ + + if (iconLink) { + iconLink.href = icon ?? defaultFavicon; + } else { + const favIconLink = document.createElement('link'); + favIconLink.rel = 'shortcut icon'; + favIconLink.href = icon ?? defaultFavicon; + document.querySelectorAll('head')[0]?.append(favIconLink); + } + + if (appleTouchIconLink) { + appleTouchIconLink.href = icon ?? defaultAppleTouchLogo; + } else { + const appleTouchIconLink = document.createElement('link'); + appleTouchIconLink.rel = 'apple-touch-icon'; + appleTouchIconLink.href = icon ?? defaultAppleTouchLogo; + appleTouchIconLink.setAttribute('sizes', '180x180'); + document.querySelectorAll('head')[0]?.append(appleTouchIconLink); + } + + /* eslint-enable @silverhand/fp/no-mutation */ +};