mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-03-20 19:20:41 +00:00
* enhance(backend): pugをやめ、JSXベースのテンプレートに変更 (to misskey-dev dev branch) (#16889)
* wip
* wip
* wip
* wip
* fix lint
* attempt to fix test
* fix
* fix
* fix: oauthページの描画がおかしい問題を修正
* typo [ci skip]
* fix
* fix
* fix
* fix
* fix
* refactor
* fix
* fix
* fix broken lockfile
* fix: expose supported languages as global variable
* remove i18n package from root as it is no longer required [ci skip]
* fix
* fix: add i18n package.json to Docker target-builder stage for federation tests (#16909)
* Initial plan
* fix: add i18n package.json to Docker target-builder stage for federation tests
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
* fix: followup-test-federation for enh-remove-pug (#16910)
* fix: followup-test-federation for enh-remove-pug
* Revert "fix: add i18n package.json to Docker target-builder stage for federation tests (#16909)"
This reverts commit 14313468d3.
* fix: CSSが読み込まれない場合がある問題を修正
* fix [ci skip]
* fix: propsのデフォルト値をnull合体演算子から論理和演算子に変更(空文字に対処するため)
* remove @types/pug
* enhance: bootloaderを埋め込むように
* fix possible race condition
* remove esbuild
---------
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Co-authored-by: おさむのひと <46447427+samunohito@users.noreply.github.com>
89 lines
3.2 KiB
TypeScript
89 lines
3.2 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import { comment } from '@/server/web/views/_.js';
|
|
import type { CommonProps } from '@/server/web/views/_.js';
|
|
import { Splash } from '@/server/web/views/_splash.js';
|
|
import type { PropsWithChildren, Children } from '@kitajs/html';
|
|
|
|
export function BaseEmbed(props: PropsWithChildren<CommonProps<{
|
|
title?: string;
|
|
noindex?: boolean;
|
|
desc?: string;
|
|
img?: string;
|
|
serverErrorImageUrl?: string;
|
|
infoImageUrl?: string;
|
|
notFoundImageUrl?: string;
|
|
metaJson?: string;
|
|
embedCtxJson?: string;
|
|
|
|
titleSlot?: Children;
|
|
metaSlot?: Children;
|
|
}>>) {
|
|
const now = Date.now();
|
|
|
|
// 変数名をsafeで始めることでエラーをスキップ
|
|
const safeMetaJson = props.metaJson;
|
|
const safeEmbedCtxJson = props.embedCtxJson;
|
|
|
|
return (
|
|
<>
|
|
{'<!DOCTYPE html>'}
|
|
{comment}
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="application-name" content="Misskey" />
|
|
<meta name="referer" content="origin" />
|
|
<meta name="theme-color" content={props.themeColor ?? '#86b300'} />
|
|
<meta name="theme-color-orig" content={props.themeColor ?? '#86b300'} />
|
|
<meta property="og:site_name" content={props.instanceName || 'Misskey'} />
|
|
<meta property="instance_url" content={props.instanceUrl} />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover" />
|
|
<meta name="format-detection" content="telephone=no,date=no,address=no,email=no,url=no" />
|
|
<link rel="icon" href={props.icon ?? '/favicon.ico'} />
|
|
<link rel="apple-touch-icon" href={props.appleTouchIcon ?? '/apple-touch-icon.png'} />
|
|
|
|
{!props.config.frontendEmbedManifestExists ? <script type="module" src="/embed_vite/@vite/client"></script> : null}
|
|
|
|
{props.config.frontendEmbedEntry.css != null ? props.config.frontendEmbedEntry.css.map((href) => (
|
|
<link rel="stylesheet" href={`/embed_vite/${href}`} />
|
|
)) : null}
|
|
|
|
{props.titleSlot ?? <title safe>{props.title || 'Misskey'}</title>}
|
|
|
|
{props.metaSlot}
|
|
|
|
<meta name="robots" content="noindex" />
|
|
|
|
{props.frontendEmbedBootloaderCss != null ? <style safe>{props.frontendEmbedBootloaderCss}</style> : <link rel="stylesheet" href="/embed_vite/loader/style.css" />}
|
|
|
|
<script>
|
|
const VERSION = '{props.version}';
|
|
const CLIENT_ENTRY = {JSON.stringify(props.config.frontendEmbedEntry.file)};
|
|
const LANGS = {JSON.stringify(props.langs)};
|
|
</script>
|
|
|
|
{safeMetaJson != null ? <script type="application/json" id="misskey_meta" data-generated-at={now}>{safeMetaJson}</script> : null}
|
|
{safeEmbedCtxJson != null ? <script type="application/json" id="misskey_embedCtx" data-generated-at={now}>{safeEmbedCtxJson}</script> : null}
|
|
|
|
{props.frontendEmbedBootloaderJs != null ? <script>{props.frontendEmbedBootloaderJs}</script> : <script src="/embed_vite/loader/boot.js"></script>}
|
|
</head>
|
|
<body>
|
|
<noscript>
|
|
<p>
|
|
JavaScriptを有効にしてください<br />
|
|
Please turn on your JavaScript
|
|
</p>
|
|
</noscript>
|
|
<Splash icon={props.icon} />
|
|
{props.children}
|
|
</body>
|
|
</html>
|
|
</>
|
|
);
|
|
}
|
|
|