Files
AFFiNE-Mirror/blocksuite/affine/model/src/consts/text.ts

69 lines
1.5 KiB
TypeScript

import { z } from 'zod';
import type { Color } from '../themes/color.js';
import { createEnumMap } from '../utils/enum.js';
export enum TextAlign {
Center = 'center',
Left = 'left',
Right = 'right',
}
export const TextAlignMap = createEnumMap(TextAlign);
export enum TextVerticalAlign {
Bottom = 'bottom',
Center = 'center',
Top = 'top',
}
export type TextStyleProps = {
color: Color;
fontFamily: FontFamily;
fontSize: number;
fontStyle: FontStyle;
fontWeight: FontWeight;
textAlign: TextAlign;
};
export enum FontWeight {
Bold = '700',
Light = '300',
Medium = '500',
Regular = '400',
SemiBold = '600',
}
export const FontWeightMap = createEnumMap(FontWeight);
export enum FontStyle {
Italic = 'italic',
Normal = 'normal',
}
export enum FontFamily {
BebasNeue = 'blocksuite:surface:BebasNeue',
Inter = 'blocksuite:surface:Inter',
Kalam = 'blocksuite:surface:Kalam',
Lora = 'blocksuite:surface:Lora',
OrelegaOne = 'blocksuite:surface:OrelegaOne',
Poppins = 'blocksuite:surface:Poppins',
Satoshi = 'blocksuite:surface:Satoshi',
}
export const FontFamilyMap = createEnumMap(FontFamily);
export const FontFamilyList = Object.entries(FontFamilyMap) as {
[K in FontFamily]: [K, (typeof FontFamilyMap)[K]];
}[FontFamily][];
export enum TextResizing {
AUTO_WIDTH_AND_HEIGHT,
AUTO_HEIGHT,
}
export const FontFamilySchema = z.nativeEnum(FontFamily);
export const FontWeightSchema = z.nativeEnum(FontWeight);
export const FontStyleSchema = z.nativeEnum(FontStyle);
export const TextAlignSchema = z.nativeEnum(TextAlign);