import { getThemeStore } from '@src/theme';
import { t } from '@src/translations';
import type { SettingField, SettingsTab, SettingsValues } from '@src/types';
export interface TextStyle {
backgroundColor: string;
borderColor: string;
}
export interface TextContentStyle {
text: string;
fontSize: number;
isBold: boolean;
isItalic: boolean;
textColor: string;
}
export type TextSettings = SettingsValues & TextStyle & TextContentStyle;
export function createDefaultSettings(): TextSettings {
const { colors } = getThemeStore();
return {
text: t('Text'),
fontSize: 14,
isBold: false,
isItalic: false,
textColor: colors.chartPriceLineText,
backgroundColor: '#00000000',
borderColor: '#00000000',
};
}
export function getTextSettingsTabs(settings: TextSettings): SettingsTab[] {
const styleFields: SettingField[] = [
{
key: 'borderColor',
label: t('Border color'),
type: 'color',
defaultValue: settings.borderColor,
toolbar: {
control: 'color',
role: 'line',
},
},
{
key: 'backgroundColor',
label: t('Background color'),
type: 'color',
defaultValue: settings.backgroundColor,
toolbar: {
control: 'color',
role: 'fill',
},
},
];
const textFields: SettingField[] = [
{
key: 'fontSize',
label: t('Font size'),
type: 'number',
defaultValue: settings.fontSize,
min: 8,
max: 72,
},
{
key: 'text',
label: t('Text'),
type: 'textarea',
defaultValue: settings.text,
placeholder: t('Enter text'),
},
{
key: 'isBold',
label: t('Bold'),
type: 'boolean',
defaultValue: settings.isBold,
},
{
key: 'isItalic',
label: t('Italics'),
type: 'boolean',
defaultValue: settings.isItalic,
},
{
key: 'textColor',
label: t('Text color'),
type: 'color',
defaultValue: settings.textColor,
toolbar: {
control: 'color',
role: 'text',
},
},
];
return [
{
key: 'style',
label: t('Style'),
fields: styleFields,
},
{
key: 'text',
label: t('Text'),
fields: textFields,
},
];
}