返回 presentation-ai
types.ts
根目录 / src / components / ui / font-picker / types.ts
1 export interface FontPickerProps extends React.ComponentPropsWithoutRef<"div"> {
2 defaultValue?: string;
3 noMatches?: string;
4 autoLoad?: boolean;
5 loaderOnly?: boolean;
6 loadAllVariants?: boolean;
7 loadFonts?: string[] | FontToVariant[] | string;
8 googleFonts?: string[] | Font[] | string | ((font: Font) => boolean);
9 fontCategories?: string[] | string;
10 localFonts?: Font[] | undefined;
11 mode?: "combo" | "list";
12 fontVariants?: (fontVariants: FontToVariant) => void;
13 value?: (value: string) => void;
14 fontsLoaded?: (fontsLoaded: boolean) => void;
15 fontsLoadedTimeout?: number;
16 selectClassName?: string;
17 }
18
19 export interface Font {
20 category: string;
21 name: string;
22 sane: string;
23 cased: string;
24 variants: Variant[];
25 isLocal?: boolean;
26 subsets?: string[];
27 }
28
29 export interface FourFonts {
30 regular?: number;
31 bold?: number;
32 italic?: number;
33 boldItalic?: number;
34 }
35
36 export type Variant = FontVariant | string;
37
38 export interface FontVariant {
39 italic: boolean;
40 weight: number;
41 }
42
43 export interface FontToVariant {
44 fontName: string;
45 variants: Variant[];
46 }
47
48 export function toString(v: Variant) {
49 if (typeof v === "string") {
50 return v;
51 }
52 return (v.italic ? "1" : "0") + "," + v.weight;
53 }
54
55 export const defaultFont: Font = {
56 category: "sans-serif",
57 name: "Open Sans",
58 sane: "open_sans",
59 cased: "open sans",
60 variants: [
61 "0,300",
62 "0,400",
63 "0,500",
64 "0,600",
65 "0,700",
66 "0,800",
67 "1,300",
68 "1,400",
69 "1,500",
70 "1,600",
71 "1,700",
72 "1,800",
73 ],
74 };
75
75 lines TYPESCRIPT