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,