-my $maker = Local::CSS::SpriteMaker->new(
- css_class_prefix => 'logo-',
- rc_override_classname => sub {
- my ($name) = @_;
- $name =~ s/-light/.logo-light/r;
+sub theme_prefix {
+ my ($theme, $decl, $default) = @_;
+ return $decl if $theme eq $default_theme || !$decl;
+ return '' if $decl eq $default;
+
+ $default =~ s/[^{]*{\n//;
+ $default =~ s/\n}[^}]*//;
+ $decl =~ s/^$_$//m for split "\n", $default;
+ $decl =~ s/\n+/\n/g;
+
+ my $prefix = "html.$theme";
+ my ($first_line) = $decl =~ /([^{]*){/;
+ $first_line =~ s/(,\s+)/$1 $prefix /g;
+ $first_line = "$prefix $first_line";
+ $decl =~ s/([^{]*){/$first_line\{/;
+ $decl
+}
+
+sub make_css {
+ my $css = join '', map { read_file $_ } <css/*.css>;
+
+ my (%themes);
+ for (<css/themes/*>) {
+ my ($theme) = m,themes/(.*)\.css,;
+ $themes{$theme} = read_css_into_blocks $_;
+ }
+ my @themes = sort grep { $_ ne $default_theme } keys %themes;
+
+ while (grep { scalar @$_ } values %themes) {
+ my %blocks = map { $_ => (shift @{$themes{$_}}) // '' } keys %themes;
+ $css .= $blocks{$default_theme};
+ $css .= theme_prefix $_, $blocks{$_}, $blocks{$default_theme} for @themes