Skip to content

Commit 6ee460c

Browse files
committed
Map grayscale name to generated CSS
1 parent f4bd588 commit 6ee460c

File tree

2 files changed

+30
-29
lines changed

2 files changed

+30
-29
lines changed

crates/color-generator/src/bin/generate.rs

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ fn main() {
66

77
// Parse arguments and flags
88
let mut accent_color = "";
9-
let mut gray_color = "#6b7280"; // Default gray
9+
let mut gray_scale = "gray"; // Default gray scale name
1010
let mut show_css = false;
1111
let mut color_name = "accent";
1212

@@ -24,11 +24,10 @@ fn main() {
2424
}
2525
}
2626
arg if arg.starts_with('#') => {
27-
if accent_color.is_empty() {
28-
accent_color = arg;
29-
} else {
30-
gray_color = arg;
31-
}
27+
accent_color = arg;
28+
}
29+
arg if ["gray", "mauve", "slate", "sage", "olive", "sand"].contains(&arg) => {
30+
gray_scale = arg;
3231
}
3332
_ => {
3433
eprintln!("Unknown argument: {}", args[i]);
@@ -40,30 +39,30 @@ fn main() {
4039

4140
if accent_color.is_empty() {
4241
eprintln!(
43-
"Usage: {} <accent-color> [gray-color] [--css] [--name <color-name>]",
42+
"Usage: {} <accent-color> [gray-scale] [--css] [--name <color-name>]",
4443
args[0]
4544
);
4645
eprintln!("Examples:");
4746
eprintln!(" {} \"#3b82f6\"", args[0]);
48-
eprintln!(" {} \"#3b82f6\" \"#6b7280\"", args[0]);
49-
eprintln!(" {} \"#10b981\" \"#64748b\" --css", args[0]);
47+
eprintln!(" {} \"#3b82f6\" sand", args[0]);
48+
eprintln!(" {} \"#10b981\" slate --css", args[0]);
5049
eprintln!(" {} \"#3b82f6\" --css --name blue", args[0]);
5150
eprintln!("");
51+
eprintln!("Gray scale options: gray, mauve, slate, sage, olive, sand (default: gray)");
52+
eprintln!("");
5253
eprintln!("Flags:");
5354
eprintln!(" --css Output raw CSS instead of color preview");
5455
eprintln!(" --name <name> Set the CSS variable prefix (default: accent)");
5556
std::process::exit(1);
5657
}
5758

58-
// Validate hex color formats
59-
for (name, color) in [("accent", accent_color), ("gray", gray_color)] {
60-
if !color.starts_with('#') || (color.len() != 7 && color.len() != 4) {
61-
eprintln!(
62-
"Error: Invalid {} color format '{}'. Use #RRGGBB or #RGB",
63-
name, color
64-
);
65-
std::process::exit(1);
66-
}
59+
// Validate accent color format
60+
if !accent_color.starts_with('#') || (accent_color.len() != 7 && accent_color.len() != 4) {
61+
eprintln!(
62+
"Error: Invalid accent color format '{}'. Use #RRGGBB or #RGB",
63+
accent_color
64+
);
65+
std::process::exit(1);
6766
}
6867

6968
// Create the color generator
@@ -72,10 +71,10 @@ fn main() {
7271
if show_css {
7372
// Output CSS for both light and dark modes
7473
let light_palette =
75-
generator.generate_scale(Appearance::Light, accent_color, gray_color, "#ffffff");
74+
generator.generate_scale(Appearance::Light, accent_color, gray_scale, "#ffffff");
7675

7776
let dark_palette =
78-
generator.generate_scale(Appearance::Dark, accent_color, gray_color, "#0f0f0f");
77+
generator.generate_scale(Appearance::Dark, accent_color, gray_scale, "#0f0f0f");
7978

8079
// Generate CSS for light mode
8180
let light_css = light_palette.generate_css(color_name, ":root, .light, .light-theme");
@@ -85,20 +84,20 @@ fn main() {
8584
println!("{}", dark_css);
8685
} else {
8786
// Generate palettes for both light and dark modes (original behavior)
88-
if gray_color == "#6b7280" {
87+
if gray_scale == "gray" {
8988
println!("🎨 Generating color palette for: {}", accent_color);
9089
} else {
9190
println!(
92-
"🎨 Generating color palette for accent: {} with gray: {}",
93-
accent_color, gray_color
91+
"🎨 Generating color palette for accent: {} with gray scale: {}",
92+
accent_color, gray_scale
9493
);
9594
}
9695
println!();
9796

9897
// Light mode
9998
println!("🌅 LIGHT MODE");
10099
let light_palette =
101-
generator.generate_scale(Appearance::Light, accent_color, gray_color, "#ffffff");
100+
generator.generate_scale(Appearance::Light, accent_color, gray_scale, "#ffffff");
102101

103102
print_palette(&light_palette, "Light");
104103

@@ -107,7 +106,7 @@ fn main() {
107106
// Dark mode
108107
println!("🌙 DARK MODE");
109108
let dark_palette =
110-
generator.generate_scale(Appearance::Dark, accent_color, gray_color, "#0f0f0f");
109+
generator.generate_scale(Appearance::Dark, accent_color, gray_scale, "#0f0f0f");
111110

112111
print_palette(&dark_palette, "Dark");
113112
}

crates/color-generator/src/lib.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ impl ColorGenerator {
309309
&self,
310310
appearance: Appearance,
311311
accent: &str,
312-
gray: &str,
312+
gray_name: &str,
313313
background: &str,
314314
) -> Scale {
315315
let all_scales = match appearance {
@@ -323,11 +323,13 @@ impl ColorGenerator {
323323
};
324324

325325
let background_color = parse_color(background);
326-
let gray_base_color = parse_color(gray);
327326
let accent_base_color = parse_color(accent);
328327

329-
let gray_scale_colors =
330-
self.get_scale_from_color(gray_base_color, gray_scales, background_color, appearance);
328+
let gray_scale_colors = gray_scales.get(gray_name).copied().unwrap_or_else(|| {
329+
*gray_scales
330+
.get("gray")
331+
.expect("Default gray scale must exist")
332+
});
331333

332334
let mut accent_scale_colors =
333335
self.get_scale_from_color(accent_base_color, all_scales, background_color, appearance);

0 commit comments

Comments
 (0)