Skip to content

Commit 051f40a

Browse files
refactor(i18n): extract texts into separate files
1 parent c159437 commit 051f40a

14 files changed

+81
-61
lines changed

lib/input/label/LabelAsterix.tsx

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,13 @@
1-
import { ttt } from "~ui/i18n/ttt"
1+
import { type LabelAsterixTexts, labelAsterixTextDefault } from "~ui/input/label/LabelAsterixTexts"
22
import { classMerge } from "~ui/utils/classMerge"
33
import type { MayHaveClass } from "~ui/utils/MayHaveClass"
44

55
export interface LabelAsterixProps extends MayHaveClass {
66
texts?: LabelAsterixTexts
77
}
88

9-
export type LabelAsterixTexts = {
10-
isRequired: string
11-
}
12-
139
export function LabelAsterix(p: LabelAsterixProps) {
14-
const texts =
15-
p.texts ??
16-
({
17-
isRequired: ttt("Required field"),
18-
} as const satisfies LabelAsterixTexts)
19-
10+
const texts = p.texts ?? labelAsterixTextDefault
2011
return (
2112
<span class={classMerge("text-primary", p.class)} title={texts.isRequired}>
2213
{" *"}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { ttt } from "~ui/i18n/ttt"
2+
3+
export type LabelAsterixTexts = {
4+
isRequired: string
5+
}
6+
7+
export const labelAsterixTextDefault = {
8+
isRequired: ttt("Required field"),
9+
} as const satisfies LabelAsterixTexts

lib/input/number/NumberInputS.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { mdiMinus, mdiMinusBox, mdiPlus, mdiPlusBox } from "@mdi/js"
22
import { type JSX } from "solid-js"
3-
import { ttt1 } from "~ui/i18n/ttt"
3+
import type { NumberInputText } from "~ui/input/number/NumberInputTexts"
4+
import { numberInputTextDefault } from "~ui/input/number/NumberInputTexts"
45
import { Input } from "~ui/input/input/Input"
56
import { buttonVariant, type ButtonVariant } from "~ui/interactive/button/buttonCva"
67
import { ButtonIconOnly } from "~ui/interactive/button/ButtonIconOnly"
@@ -25,11 +26,6 @@ export type NumberInputSProps = {
2526
texts?: NumberInputText
2627
}
2728

28-
type NumberInputText = {
29-
decreaseByX: (amount: number) => string
30-
increaseByX: (amount: number) => string
31-
}
32-
3329
export function NumberInputS(p: NumberInputSProps) {
3430
const hasMajor = p.incrDecrAmountMajor !== undefined
3531
const onChange: JSX.InputEventHandlerUnion<HTMLInputElement, InputEvent> | undefined = (e) => {
@@ -70,12 +66,7 @@ export function NumberInputS(p: NumberInputSProps) {
7066
}
7167
const defaultVariant = buttonVariant.ghost
7268

73-
const texts =
74-
p.texts ??
75-
({
76-
decreaseByX: (amount: number) => ttt1("Decrease by [X]", amount.toString()),
77-
increaseByX: (amount: number) => ttt1("Increase by [X]", amount.toString()),
78-
} as const satisfies NumberInputText)
69+
const texts = p.texts ?? numberInputTextDefault
7970

8071
return (
8172
<div class={classMerge("flex flex-row flex-nowrap items-center", p.class)}>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { ttt1 } from "~ui/i18n/ttt"
2+
3+
export type NumberInputText = {
4+
decreaseByX: (amount: number) => string
5+
increaseByX: (amount: number) => string
6+
}
7+
8+
export const numberInputTextDefault = {
9+
decreaseByX: (amount: number) => ttt1("Decrease by [X]", amount.toString()),
10+
increaseByX: (amount: number) => ttt1("Increase by [X]", amount.toString()),
11+
} as const satisfies NumberInputText

lib/input/select/SelectMultiple.tsx

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { mdiCheck, mdiClose, mdiPlus } from "@mdi/js"
22
import { Key } from "@solid-primitives/keyed"
33
import { For, mergeProps } from "solid-js"
4-
import { ttt, ttt1 } from "~ui/i18n/ttt"
4+
import type { SelectMultipleTexts } from "~ui/input/select/SelectMultipleTexts"
5+
import { selectMultipleTextDefault } from "~ui/input/select/SelectMultipleTexts"
56
import { buttonVariant } from "~ui/interactive/button/buttonCva"
67
import { ButtonIcon } from "~ui/interactive/button/ButtonIcon"
78
import type { CorvuPopoverProps } from "~ui/interactive/popover/CorvuPopover"
@@ -40,20 +41,8 @@ export interface SelectMultipleProps
4041
texts?: SelectMultipleTexts
4142
}
4243

43-
export type SelectMultipleTexts = {
44-
removeX: (x: string) => string
45-
addEntry: string
46-
noEntries: string
47-
}
48-
4944
export function SelectMultiple(p: SelectMultipleProps) {
50-
const texts =
51-
p.texts ??
52-
({
53-
removeX: (x: string) => ttt1("Remove [X]", x),
54-
addEntry: ttt("Add entry"),
55-
noEntries: ttt("No entries"),
56-
} as const satisfies SelectMultipleTexts)
45+
const texts = p.texts ?? selectMultipleTextDefault
5746

5847
const buttonClass = classMerge(p.addEntryClass, p.buttonProps.class)
5948
const buttonProps = mergeProps(p.buttonProps, {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { ttt, ttt1 } from "~ui/i18n/ttt"
2+
3+
export type SelectMultipleTexts = {
4+
removeX: (x: string) => string
5+
addEntry: string
6+
noEntries: string
7+
}
8+
9+
export const selectMultipleTextDefault = {
10+
removeX: (x: string) => ttt1("Remove [X]", x),
11+
addEntry: ttt("Add entry"),
12+
noEntries: ttt("No entries"),
13+
} as const satisfies SelectMultipleTexts

lib/input/select/SelectSingleNative.tsx

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Key } from "@solid-primitives/keyed"
22
import { classesDisabledDirectly } from "~ui/classes/classesDisabledDirectly"
3-
import { ttt } from "~ui/i18n/ttt"
3+
import type { SelectSingleNativeTexts } from "~ui/input/select/SelectSingleNativeTexts"
4+
import { selectSingleNativeTextDefault } from "~ui/input/select/SelectSingleNativeTexts"
45
import { classArr } from "~ui/utils/classArr"
56
import type { HasGetOptions } from "~ui/utils/HasGetOptions"
67
import type { HasValueSignalString } from "~ui/utils/HasValueSignalString"
@@ -23,16 +24,8 @@ export interface SelectSingleNativeProps
2324
texts?: SelectSingleNativeTexts
2425
}
2526

26-
export type SelectSingleNativeTexts = {
27-
noEntries: string
28-
}
29-
3027
export function SelectSingleNative(p: SelectSingleNativeProps) {
31-
const texts =
32-
p.texts ??
33-
({
34-
noEntries: ttt("No entries"),
35-
} as const satisfies SelectSingleNativeTexts)
28+
const texts = p.texts ?? selectSingleNativeTextDefault
3629

3730
return (
3831
<select
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { ttt } from "~ui/i18n/ttt"
2+
3+
export type SelectSingleNativeTexts = {
4+
noEntries: string
5+
}
6+
7+
export const selectSingleNativeTextDefault = {
8+
noEntries: ttt("No entries"),
9+
} as const satisfies SelectSingleNativeTexts

lib/interactive/dialog/NativeDialog.tsx

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { mdiClose } from "@mdi/js"
22
import { createUniqueId, mergeProps, Show, splitProps } from "solid-js"
3-
import { ttt } from "~ui/i18n/ttt"
3+
import type { NativeDialogTexts } from "~ui/interactive/dialog/NativeDialogTexts"
4+
import { nativeDialogTextDefault } from "~ui/interactive/dialog/NativeDialogTexts"
45
import { buttonVariant } from "~ui/interactive/button/buttonCva"
56
import { ButtonIcon, type ButtonIconProps } from "~ui/interactive/button/ButtonIcon"
67
import {
@@ -15,11 +16,7 @@ import "./NativeDialog.module.css"
1516

1617
export type DialogButtonProps = Omit<ButtonIconProps, "id" | "type">
1718

18-
export type NativeDialogTexts = {
19-
closeDialog: string
20-
}
21-
22-
interface DialogProps extends MayHaveClass, MayHaveChildren, Partial<DialogInternalProps> {
19+
export interface DialogProps extends MayHaveClass, MayHaveChildren, Partial<DialogInternalProps> {
2320
// trigger
2421
buttonProps: DialogButtonProps
2522
title: string
@@ -76,11 +73,7 @@ export function NativeDialog(pp: DialogProps) {
7673
const p = initProps(pp)
7774
const [a, buttonProps] = splitProps(p.buttonProps, ["onClick"])
7875

79-
const texts =
80-
p.texts ??
81-
({
82-
closeDialog: ttt("Close dialog"),
83-
} as const satisfies NativeDialogTexts)
76+
const texts = p.texts ?? nativeDialogTextDefault
8477

8578
return (
8679
<>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { ttt } from "~ui/i18n/ttt"
2+
3+
export type NativeDialogTexts = {
4+
closeDialog: string
5+
}
6+
7+
export const nativeDialogTextDefault = {
8+
closeDialog: ttt("Close dialog"),
9+
} as const satisfies NativeDialogTexts

0 commit comments

Comments
 (0)