ノートのサーバー情報(InstanceTicker)のデザイン/パフォーマンス改善(-webkit-text-stroke ver) (#16225)

* Revert "enhance(frontend): Instance Tickerのデザイン改善 (#15946)"

This reverts commit 04928ba7d1.

* enhance(frontend): Instance Tickerのデザイン改善(-webkit-text-stroke)

* 🎨

* use theme fg/bg

* use panel
This commit is contained in:
tamaina 2025-07-05 09:59:48 +09:00 committed by GitHub
parent 50f5b29290
commit d986da745b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 7 additions and 25 deletions

View File

@ -12,7 +12,6 @@ SPDX-License-Identifier: AGPL-3.0-only
<script lang="ts" setup> <script lang="ts" setup>
import { computed } from 'vue'; import { computed } from 'vue';
import tinycolor from 'tinycolor2';
import { instanceName as localInstanceName } from '@@/js/config.js'; import { instanceName as localInstanceName } from '@@/js/config.js';
import type { CSSProperties } from 'vue'; import type { CSSProperties } from 'vue';
import { instance as localInstance } from '@/instance.js'; import { instance as localInstance } from '@/instance.js';
@ -44,33 +43,10 @@ const faviconUrl = computed(() => {
return getProxiedImageUrlNullable(imageSrc); return getProxiedImageUrlNullable(imageSrc);
}); });
type ITickerColors = {
readonly bg: string;
readonly fg: string;
};
const TICKER_YUV_THRESHOLD = 191 as const;
const TICKER_FG_COLOR_LIGHT = '#ffffff' as const;
const TICKER_FG_COLOR_DARK = '#2f2f2fcc' as const;
function getTickerColors(bgHex: string): ITickerColors {
const tinycolorInstance = tinycolor(bgHex);
const { r, g, b } = tinycolorInstance.toRgb();
const yuv = 0.299 * r + 0.587 * g + 0.114 * b;
const fgHex = yuv > TICKER_YUV_THRESHOLD ? TICKER_FG_COLOR_DARK : TICKER_FG_COLOR_LIGHT;
return {
fg: fgHex,
bg: bgHex,
} as const satisfies ITickerColors;
}
const themeColorStyle = computed<CSSProperties>(() => { const themeColorStyle = computed<CSSProperties>(() => {
const themeColor = (props.host == null ? localInstance.themeColor : props.instance?.themeColor) ?? '#777777'; const themeColor = (props.host == null ? localInstance.themeColor : props.instance?.themeColor) ?? '#777777';
const colors = getTickerColors(themeColor);
return { return {
background: `linear-gradient(90deg, ${colors.bg}, ${colors.bg}00)`, background: `linear-gradient(90deg, ${themeColor}, ${themeColor}00)`,
color: colors.fg,
}; };
}); });
</script> </script>
@ -84,6 +60,7 @@ $height: 2ex;
height: $height; height: $height;
border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px;
overflow: clip; overflow: clip;
color: #fff;
// text-shadow使 // text-shadow使
@ -106,5 +83,10 @@ $height: 2ex;
font-weight: bold; font-weight: bold;
white-space: nowrap; white-space: nowrap;
overflow: visible; overflow: visible;
// text-shadow使
color: var(--MI_THEME-fg);
-webkit-text-stroke: var(--MI_THEME-panel) .225em;
paint-order: stroke fill;
} }
</style> </style>