figma_schema/
type_style.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Deserialize, Serialize, Copy, Clone)]
4#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
5#[typeshare::typeshare]
6pub enum TextCase {
7 Upper,
8 Lower,
9 Title,
10 SmallCaps,
11 SmallCapsForced,
12}
13
14#[derive(Debug, Deserialize, Serialize, Copy, Clone)]
15#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
16#[typeshare::typeshare]
17pub enum TextDecoration {
18 Strikethrough,
19 Underline,
20}
21
22#[derive(Debug, Deserialize, Serialize)]
23#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
24#[typeshare::typeshare]
25pub enum TextAutoResize {
26 Height,
27 WidthAndHeight,
28 Truncate,
30}
31
32#[derive(Debug, Deserialize, Serialize)]
34#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
35#[typeshare::typeshare]
36pub enum HyperlinkType {
37 Url,
38 Node,
39}
40
41#[derive(Debug, Deserialize, Serialize)]
42#[serde(rename_all = "camelCase")]
43#[typeshare::typeshare]
44pub struct Hyperlink {
45 pub r#type: Option<HyperlinkType>,
46 pub url: Option<String>,
48 pub node_id: Option<String>,
50}
51
52#[derive(Debug, Deserialize, Serialize)]
56#[serde(rename_all = "camelCase")]
57#[typeshare::typeshare]
58pub struct TypeStyle {
59 pub font_family: String,
61 pub paragraph_spacing: Option<f64>,
63 #[serde(skip_serializing_if = "Option::is_none")]
65 pub italic: Option<bool>,
66 pub font_weight: f64,
68 pub font_size: f64,
70 #[serde(skip_serializing_if = "Option::is_none")]
72 pub text_case: Option<TextCase>,
73 #[serde(skip_serializing_if = "Option::is_none")]
75 pub text_decoration: Option<TextDecoration>,
76 pub text_auto_resize: Option<TextAutoResize>,
78 pub hyperlink: Option<Hyperlink>,
80 pub line_height_px: f64,
82}