|
|
|
@@ -12,7 +12,10 @@ use crate::{
|
|
|
|
|
errors,
|
|
|
|
|
schemes::{
|
|
|
|
|
q_style::{ColorExpand, NeutralSwatch, SchemeSetting},
|
|
|
|
|
q_style_2::{color_set::ColorSet, swatch::Swatch},
|
|
|
|
|
q_style_2::{
|
|
|
|
|
color_set::ColorSet,
|
|
|
|
|
swatch::{Swatch, generate_neutral_swatch_list},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@@ -46,7 +49,10 @@ impl ColorUnit {
|
|
|
|
|
let mut css_variables = Vec::new();
|
|
|
|
|
|
|
|
|
|
css_variables.extend(self.root.to_css_variables(prefix, name));
|
|
|
|
|
css_variables.extend(self.surface.to_css_variables(prefix, name));
|
|
|
|
|
css_variables.extend(
|
|
|
|
|
self.surface
|
|
|
|
|
.to_css_variables(prefix, &format!("{name}-surface")),
|
|
|
|
|
);
|
|
|
|
|
css_variables.extend(self.swatch.to_css_variables(prefix, name));
|
|
|
|
|
|
|
|
|
|
css_variables
|
|
|
|
@@ -56,7 +62,10 @@ impl ColorUnit {
|
|
|
|
|
let mut css_auto_scheme_collection = LinkedHashMap::new();
|
|
|
|
|
|
|
|
|
|
css_auto_scheme_collection.extend(self.root.to_css_auto_scheme_collection(name));
|
|
|
|
|
css_auto_scheme_collection.extend(self.surface.to_css_auto_scheme_collection(name));
|
|
|
|
|
css_auto_scheme_collection.extend(
|
|
|
|
|
self.surface
|
|
|
|
|
.to_css_auto_scheme_collection(&format!("{name}-surface")),
|
|
|
|
|
);
|
|
|
|
|
css_auto_scheme_collection.extend(self.swatch.to_css_auto_scheme_collection(name));
|
|
|
|
|
|
|
|
|
|
css_auto_scheme_collection
|
|
|
|
@@ -66,7 +75,10 @@ impl ColorUnit {
|
|
|
|
|
let mut scss_variables = Vec::new();
|
|
|
|
|
|
|
|
|
|
scss_variables.extend(self.root.to_scss_variables(prefix, name));
|
|
|
|
|
scss_variables.extend(self.surface.to_scss_variables(prefix, name));
|
|
|
|
|
scss_variables.extend(
|
|
|
|
|
self.surface
|
|
|
|
|
.to_scss_variables(prefix, &format!("{name}-surface")),
|
|
|
|
|
);
|
|
|
|
|
scss_variables.extend(self.swatch.to_scss_variables(prefix, name));
|
|
|
|
|
|
|
|
|
|
scss_variables
|
|
|
|
@@ -76,7 +88,7 @@ impl ColorUnit {
|
|
|
|
|
let mut js_object_fields = Vec::new();
|
|
|
|
|
|
|
|
|
|
js_object_fields.extend(self.root.to_javascript_fields(name));
|
|
|
|
|
js_object_fields.extend(self.surface.to_javascript_fields(name));
|
|
|
|
|
js_object_fields.extend(self.surface.to_javascript_fields(&format!("{name}Surface")));
|
|
|
|
|
js_object_fields.extend(self.swatch.to_javascript_fields(name));
|
|
|
|
|
|
|
|
|
|
js_object_fields
|
|
|
|
@@ -195,13 +207,10 @@ impl Baseline {
|
|
|
|
|
neutral_lightest.l
|
|
|
|
|
};
|
|
|
|
|
let neutral_swatch = Arc::new(NeutralSwatch::new(*neutral_lightest, *neutral_darkest));
|
|
|
|
|
let outline_color =
|
|
|
|
|
neutral_swatch.get(neutral_lightest.l * if is_dark { 0.5 } else { 0.7 });
|
|
|
|
|
let outline_variant_color =
|
|
|
|
|
neutral_swatch.get(neutral_lightest.l * if is_dark { 0.3 } else { 0.8 });
|
|
|
|
|
let outline_color = neutral_swatch.get(if is_dark { 0.25 } else { 0.7 });
|
|
|
|
|
let outline_variant_color = neutral_swatch.get(if is_dark { 0.2 } else { 0.8 });
|
|
|
|
|
let shadow_color = neutral_swatch.get(0.1);
|
|
|
|
|
let overlay_color =
|
|
|
|
|
neutral_swatch.get(neutral_lightest.l * if is_dark { 0.4 } else { 0.5 });
|
|
|
|
|
let overlay_color = neutral_swatch.get(0.3);
|
|
|
|
|
|
|
|
|
|
let neutral_color = neutral_swatch.get(if is_dark { 0.35 } else { 0.65 });
|
|
|
|
|
let neutral_variant_color = neutral_swatch.get(if is_dark { 0.45 } else { 0.55 });
|
|
|
|
@@ -301,6 +310,11 @@ impl Baseline {
|
|
|
|
|
if let Some(accent) = &self.accent {
|
|
|
|
|
css_variables.extend(accent.to_css_variables(scheme_mode, "accent"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
css_variables.extend(self.danger.to_css_variables(scheme_mode, "danger"));
|
|
|
|
|
css_variables.extend(self.success.to_css_variables(scheme_mode, "success"));
|
|
|
|
|
css_variables.extend(self.warn.to_css_variables(scheme_mode, "warn"));
|
|
|
|
|
css_variables.extend(self.info.to_css_variables(scheme_mode, "info"));
|
|
|
|
|
css_variables.extend(self.neutral.to_css_variables(scheme_mode, "neutral"));
|
|
|
|
|
css_variables.extend(
|
|
|
|
|
self.neutral_variant
|
|
|
|
@@ -311,10 +325,11 @@ impl Baseline {
|
|
|
|
|
self.surface_variant
|
|
|
|
|
.to_css_variables(scheme_mode, "surface-variant"),
|
|
|
|
|
);
|
|
|
|
|
css_variables.extend(self.danger.to_css_variables(scheme_mode, "danger"));
|
|
|
|
|
css_variables.extend(self.success.to_css_variables(scheme_mode, "success"));
|
|
|
|
|
css_variables.extend(self.warn.to_css_variables(scheme_mode, "warn"));
|
|
|
|
|
css_variables.extend(self.info.to_css_variables(scheme_mode, "info"));
|
|
|
|
|
|
|
|
|
|
let neutral_swatch = generate_neutral_swatch_list(&self.neutral_swatch);
|
|
|
|
|
for (n, c) in neutral_swatch {
|
|
|
|
|
css_variables.push(format!("--color-{scheme_mode}-swatch-neutral-{n}: #{c};"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
css_variables.push(format!(
|
|
|
|
|
"--color-{scheme_mode}-shadow: #{};",
|
|
|
|
@@ -334,7 +349,8 @@ impl Baseline {
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
for (name, color_unit) in &self.custom_colors {
|
|
|
|
|
css_variables.extend(color_unit.to_css_variables(scheme_mode, name));
|
|
|
|
|
let lowercased_name = name.to_lowercase();
|
|
|
|
|
css_variables.extend(color_unit.to_css_variables(scheme_mode, &lowercased_name));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
css_variables
|
|
|
|
@@ -353,6 +369,10 @@ impl Baseline {
|
|
|
|
|
if let Some(accent) = &self.accent {
|
|
|
|
|
css_variables.extend(accent.to_css_auto_scheme_collection("accent"));
|
|
|
|
|
}
|
|
|
|
|
css_variables.extend(self.danger.to_css_auto_scheme_collection("danger"));
|
|
|
|
|
css_variables.extend(self.success.to_css_auto_scheme_collection("success"));
|
|
|
|
|
css_variables.extend(self.warn.to_css_auto_scheme_collection("warn"));
|
|
|
|
|
css_variables.extend(self.info.to_css_auto_scheme_collection("info"));
|
|
|
|
|
css_variables.extend(self.neutral.to_css_auto_scheme_collection("neutral"));
|
|
|
|
|
css_variables.extend(
|
|
|
|
|
self.neutral_variant
|
|
|
|
@@ -364,6 +384,11 @@ impl Baseline {
|
|
|
|
|
.to_css_auto_scheme_collection("surface-variant"),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
let neutral_swatch = generate_neutral_swatch_list(&self.neutral_swatch);
|
|
|
|
|
for (n, c) in neutral_swatch {
|
|
|
|
|
css_variables.insert(format!("swatch-neutral-{n}"), c);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
css_variables.insert("shadow".to_string(), map_oklch_to_srgb_hex(&self.shadow));
|
|
|
|
|
css_variables.insert("overlay".to_string(), map_oklch_to_srgb_hex(&self.overlay));
|
|
|
|
|
css_variables.insert("outline".to_string(), map_oklch_to_srgb_hex(&self.outline));
|
|
|
|
@@ -373,7 +398,8 @@ impl Baseline {
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
for (name, color) in &self.custom_colors {
|
|
|
|
|
css_variables.extend(color.to_css_auto_scheme_collection(name));
|
|
|
|
|
let lowercased_name = name.to_lowercase();
|
|
|
|
|
css_variables.extend(color.to_css_auto_scheme_collection(&lowercased_name));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
css_variables
|
|
|
|
@@ -393,6 +419,10 @@ impl Baseline {
|
|
|
|
|
if let Some(accent) = &self.accent {
|
|
|
|
|
scss_variables.extend(accent.to_scss_variables(scheme_mode, "accent"));
|
|
|
|
|
}
|
|
|
|
|
scss_variables.extend(self.danger.to_scss_variables(scheme_mode, "danger"));
|
|
|
|
|
scss_variables.extend(self.success.to_scss_variables(scheme_mode, "success"));
|
|
|
|
|
scss_variables.extend(self.warn.to_scss_variables(scheme_mode, "warn"));
|
|
|
|
|
scss_variables.extend(self.info.to_scss_variables(scheme_mode, "info"));
|
|
|
|
|
|
|
|
|
|
scss_variables.extend(self.neutral.to_scss_variables(scheme_mode, "neutral"));
|
|
|
|
|
scss_variables.extend(
|
|
|
|
@@ -405,23 +435,33 @@ impl Baseline {
|
|
|
|
|
.to_scss_variables(scheme_mode, "surface-variant"),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
let neutral_swatch = generate_neutral_swatch_list(&self.neutral_swatch);
|
|
|
|
|
for (n, c) in neutral_swatch {
|
|
|
|
|
scss_variables.push(format!("$color-{scheme_mode}-swatch-neutral-{n}: #{c};"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
scss_variables.push(format!(
|
|
|
|
|
"--color-{scheme_mode}-shadow: #{};",
|
|
|
|
|
"$color-{scheme_mode}-shadow: #{};",
|
|
|
|
|
map_oklch_to_srgb_hex(&self.shadow)
|
|
|
|
|
));
|
|
|
|
|
scss_variables.push(format!(
|
|
|
|
|
"--color-{scheme_mode}-overlay: #{};",
|
|
|
|
|
"$color-{scheme_mode}-overlay: #{};",
|
|
|
|
|
map_oklch_to_srgb_hex(&self.overlay)
|
|
|
|
|
));
|
|
|
|
|
scss_variables.push(format!(
|
|
|
|
|
"--color-{scheme_mode}-outlint: #{};",
|
|
|
|
|
"$color-{scheme_mode}-outlint: #{};",
|
|
|
|
|
map_oklch_to_srgb_hex(&self.outline)
|
|
|
|
|
));
|
|
|
|
|
scss_variables.push(format!(
|
|
|
|
|
"--color-{scheme_mode}-outline-variant: #{};",
|
|
|
|
|
"$color-{scheme_mode}-outline-variant: #{};",
|
|
|
|
|
map_oklch_to_srgb_hex(&self.outline_variant)
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
for (name, color) in &self.custom_colors {
|
|
|
|
|
let lowercased_name = name.to_lowercase();
|
|
|
|
|
scss_variables.extend(color.to_scss_variables(scheme_mode, &lowercased_name));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
scss_variables
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -463,6 +503,18 @@ impl Baseline {
|
|
|
|
|
javascript_fields.push(format!("{indent}{line:4}"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for line in self.danger.to_javascript_fields("danger").iter() {
|
|
|
|
|
javascript_fields.push(format!("{indent}{line:4}"));
|
|
|
|
|
}
|
|
|
|
|
for line in self.success.to_javascript_fields("success").iter() {
|
|
|
|
|
javascript_fields.push(format!("{indent}{line:4}"));
|
|
|
|
|
}
|
|
|
|
|
for line in self.warn.to_javascript_fields("warn").iter() {
|
|
|
|
|
javascript_fields.push(format!("{indent}{line:4}"));
|
|
|
|
|
}
|
|
|
|
|
for line in self.info.to_javascript_fields("info").iter() {
|
|
|
|
|
javascript_fields.push(format!("{indent}{line:4}"));
|
|
|
|
|
}
|
|
|
|
|
for line in self.neutral.to_javascript_fields("neutral").iter() {
|
|
|
|
|
javascript_fields.push(format!("{indent}{line:4}"));
|
|
|
|
|
}
|
|
|
|
@@ -484,6 +536,11 @@ impl Baseline {
|
|
|
|
|
javascript_fields.push(format!("{indent}{line:4}"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let neurtal_swatch = generate_neutral_swatch_list(&self.neutral_swatch);
|
|
|
|
|
for (n, c) in neurtal_swatch {
|
|
|
|
|
javascript_fields.push(format!("{indent}neutralSwatch{n}: '#{c}',"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
javascript_fields.push(format!(
|
|
|
|
|
"{indent}shadow: '#{}',",
|
|
|
|
|
map_oklch_to_srgb_hex(&self.shadow)
|
|
|
|
@@ -502,7 +559,8 @@ impl Baseline {
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
for (name, color) in &self.custom_colors {
|
|
|
|
|
let color_lines = color.to_javascript_fields(name);
|
|
|
|
|
let lowercased_name = name.to_lowercase();
|
|
|
|
|
let color_lines = color.to_javascript_fields(&lowercased_name);
|
|
|
|
|
javascript_fields.extend(color_lines.iter().map(|s| format!("{indent}{s}")));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|