diff --git a/src/app/components/TextComponent.tsx b/src/app/components/TextComponent.tsx index 85fbb48f..c5caf2a6 100644 --- a/src/app/components/TextComponent.tsx +++ b/src/app/components/TextComponent.tsx @@ -22,9 +22,8 @@ interface PartData extends StyleData { interface Props { component: unknown, base?: StyleData, - shadow?: boolean, } -export function TextComponent({ component, base = { color: 'white' }, shadow = true }: Props) { +export function TextComponent({ component, base = { color: 'white' } }: Props) { const { version } = useVersion() const { lang } = useLocale() @@ -38,12 +37,7 @@ export function TextComponent({ component, base = { color: 'white' }, shadow = t const { value: language } = useAsync(() => getLanguage(version, lang), [version, lang]) return
- {shadow &&
- {parts.map(p => )} -
} -
- {parts.map(p => )} -
+ {parts.map(p => )}
} @@ -89,7 +83,7 @@ function inherit(component: object, base: PartData) { } } -const TextColors = { +const TextColors: Record = { black: ['#000', '#000'], dark_blue: ['#00A', '#00002A'], dark_green: ['#0A0', '#002A00'], @@ -108,15 +102,12 @@ const TextColors = { white: ['#FFF', '#3F3F3F'], } -type TextColorKey = keyof typeof TextColors -const TextColorKeys = Object.keys(TextColors) - -function TextPart({ part, shadow, lang }: { part: PartData, shadow?: boolean, lang: Record }) { +function TextPart({ part, lang }: { part: PartData, lang: Record }) { if (part.translate) { const str = resolveTranslate(part.translate, part.fallback, part.with, lang) - return {str} + return {str} } - return {part.text} + return {part.text} } function resolveTranslate(translate: string, fallback: string | undefined, with_: any[] | undefined, lang: Record): string { @@ -131,11 +122,10 @@ function resolveTranslate(translate: string, fallback: string | undefined, with_ return replaceTranslation(str, params) } -function createStyle(style: StyleData, shadow?: boolean) { +function createStyle(style: StyleData) { return { - color: style.color && (TextColorKeys.includes(style.color) - ? TextColors[style.color as TextColorKey][shadow ? 1 : 0] - : shadow ? 'transparent' : style.color), + color: style.color ? (TextColors[style.color]?.[0] ?? style.color) : undefined, + '--shadow-color': style.color ? TextColors[style.color]?.[1] : undefined, fontWeight: (style.bold === true) ? 'bold' : undefined, fontStyle: (style.italic === true) ? 'italic' : undefined, textDecoration: (style.underlined === true) diff --git a/src/styles/global.css b/src/styles/global.css index c80eb75a..17a7f999 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -1862,14 +1862,11 @@ hr { font-size: 20px; position: relative; white-space: pre; - line-height: 1.1 ; + line-height: 1.1; } -.text-component > .text-foreground { - position: absolute; - z-index: 1; - left: -2px; - top: -2px; +.text-component span { + text-shadow: 2px 2px var(--shadow-color, transparent); } .text-component span:empty:before { @@ -1888,9 +1885,8 @@ hr { font-size: calc(var(--dialog-px) * 12); } -.dialog-preview .text-component > .text-foreground { - left: calc(var(--dialog-px) * -1.2); - top: calc(var(--dialog-px) * -1.2); +.dialog-preview .text-component span { + text-shadow: calc(var(--dialog-px) * 1.2) calc(var(--dialog-px) * 1.2) var(--shadow-color, transparent); } .dialog-button,