wasm_toolkit/document_ops/
css_variables.rs1use wasm_bindgen::JsCast;
2use web_sys::{CssStyleDeclaration, Element, HtmlElement};
3
4use crate::{WasmDocument, WasmToolkitError, WasmToolkitResult};
5
6impl WasmDocument {
7 pub fn get_document_element(&self) -> WasmToolkitResult<Element> {
8 self.inner()
9 .document_element()
10 .ok_or(WasmToolkitError::MissingDocumentElement)
11 }
12
13 pub fn get_document_html_element(&self) -> WasmToolkitResult<HtmlElement> {
14 self.get_document_element()?
15 .dyn_into::<HtmlElement>()
16 .or(Err(WasmToolkitError::UnableToCastElementToHtmlElement))
17 }
18
19 pub fn root_css(&self) -> WasmToolkitResult<CssStyleDeclaration> {
20 Ok(self.get_document_html_element()?.style())
21 }
22
23 pub fn set_css_variable(&self, key: &str, value: &str) -> WasmToolkitResult<()> {
24 self.root_css()?
25 .set_property(key, value)
26 .or(Err(WasmToolkitError::UnableToSetCssProperty))
27 }
28
29 pub fn set_background_color(&self, value: &str) -> WasmToolkitResult<()> {
30 self.set_css_variable("--background-color", value)
31 }
32
33 pub fn set_background_color_pitch_black(&self) -> WasmToolkitResult<()> {
34 self.set_css_variable("--background-color", "#000000")
35 }
36
37 pub fn set_background_color_system_dark(&self) -> WasmToolkitResult<()> {
38 self.set_background_color_pitch_black()
39 }
40
41 pub fn set_background_color_system_light(&self) -> WasmToolkitResult<()> {
42 self.set_css_variable("--background-color", "#1a1a1a")
43 }
44
45 pub fn set_primary_color(&self, value: &str) -> WasmToolkitResult<()> {
46 self.set_css_variable("--primary-color", value)
47 }
48
49 pub fn set_secondary_color(&self, value: &str) -> WasmToolkitResult<()> {
50 self.set_css_variable("--secondary-color", value)
51 }
52
53 pub fn set_accent_color(&self, value: &str) -> WasmToolkitResult<()> {
54 self.set_css_variable("--accent-color", value)
55 }
56
57 pub fn set_font_sans(&self, value: &str) -> WasmToolkitResult<()> {
58 self.set_css_variable("--font-sans", value)
59 }
60
61 pub fn set_font_mono(&self, value: &str) -> WasmToolkitResult<()> {
62 self.set_css_variable("--font-mono", value)
63 }
64}