1use vertigo::Css;
2
3#[derive(Clone)]
4pub struct CMarkStyle {
5 pub blockquote: Css,
6 pub codeblock: Css,
7 pub container: Css,
8 pub dd: Css,
9 pub del: Css,
10 pub dl: Css,
11 pub dt: Css,
12 pub em: Css,
13 pub h1: Css,
14 pub h2: Css,
15 pub h3: Css,
16 pub h4: Css,
17 pub h5: Css,
18 pub h6: Css,
19 pub img: Css,
20 pub li: Css,
21 pub a: Css,
22 pub ol: Css,
23 pub p: Css,
24 pub strong: Css,
25 pub sub: Css,
26 pub sup: Css,
27 pub table: Css,
28 pub tbody: Css,
29 pub td: Css,
30 pub th: Css,
31 pub thead: Css,
32 pub tr: Css,
33 pub ul: Css,
34}
35
36impl Default for CMarkStyle {
37 fn default() -> Self {
38 Self {
39 blockquote: Css::default(),
40 codeblock: Css::default(),
41 container: Css::default(),
42 dd: Css::default(),
43 del: Css::default(),
44 dl: Css::default(),
45 dt: Css::default(),
46 em: Css::default(),
47 h1: Css::default(),
48 h2: Css::default(),
49 h3: Css::default(),
50 h4: Css::default(),
51 h5: Css::default(),
52 h6: Css::default(),
53 img: Css::default(),
54 li: Css::default(),
55 a: Css::default(),
56 ol: Css::default(),
57 p: Css::default(),
58 strong: Css::default(),
59 sub: Css::default(),
60 sup: Css::default(),
61 table: Css::str("border: 1"),
62 tbody: Css::default(),
63 td: Css::default(),
64 th: Css::default(),
65 thead: Css::default(),
66 tr: Css::default(),
67 ul: Css::default(),
68 }
69 }
70}
71
72impl CMarkStyle {
73 pub fn browser_defaults() -> Self {
76 Self {
77 p: Css::str("margin: 0.75em 0; line-height: 1.6;"),
78 h1: Css::str("font-size: 2em; font-weight: 700; margin: 0.67em 0;"),
79 h2: Css::str("font-size: 1.5em; font-weight: 700; margin: 0.75em 0;"),
80 h3: Css::str("font-size: 1.25em; font-weight: 600; margin: 0.83em 0;"),
81 h4: Css::str("font-size: 1.1em; font-weight: 600; margin: 0.83em 0;"),
82 h5: Css::str("font-size: 1em; font-weight: 600; margin: 0.83em 0;"),
83 h6: Css::str("font-size: 0.875em; font-weight: 600; margin: 0.83em 0; color: #6b7280;"),
84 ul: Css::str("list-style-type: disc; padding-left: 1.5em; margin: 0.5em 0;"),
85 ol: Css::str("list-style-type: decimal; padding-left: 1.5em; margin: 0.5em 0;"),
86 li: Css::str("margin: 0.25em 0;"),
87 blockquote: Css::str(
88 "border-left: 4px solid #d1d5db; padding-left: 1em; margin: 0.75em 0; color: #6b7280; font-style: italic;",
89 ),
90 codeblock: Css::str(
91 "background: #f3f4f6; border-radius: 0.375em; padding: 0.75em 1em; overflow-x: auto; font-family: monospace; font-size: 0.875em; margin: 0.75em 0; display: block;",
92 ),
93 a: Css::str("color: #4f46e5; text-decoration: underline;"),
94 strong: Css::str("font-weight: 700;"),
95 em: Css::str("font-style: italic;"),
96 table: Css::str("border-collapse: collapse; width: 100%; margin: 0.75em 0; border: 1"),
97 th: Css::str(
98 "border: 1px solid #d1d5db; padding: 0.5em 0.75em; background: #f9fafb; font-weight: 600; text-align: left;",
99 ),
100 td: Css::str("border: 1px solid #d1d5db; padding: 0.5em 0.75em;"),
101 ..Self::default()
102 }
103 }
104}