Material-Color/generate.php

137 lines
2.7 KiB
PHP
Raw Normal View History

2018-01-28 00:06:27 -07:00
<?php
2018-01-28 18:15:24 -07:00
$use_variables = false;
2018-01-28 20:44:08 -07:00
$classes = [
"alert" => ["background-color" => "m", "color" => "t!"],
"alert .alert-link" => ["color" => "t!"],
"alert .alert-heading" => ["color" => "t!"],
"badge" => ["background-color" => "m", "color" => "t"],
"btn" => ["background-color" => "m", "color" => "t"],
"bg" => ["background-color" => "m"],
"list-group-item" => ["background-color" => "m", "color" => "t"],
"border" => ["border-color" => "m", "border-width" => "1px"],
"text" => ["color" => "m"]
];
2018-01-28 00:06:27 -07:00
$colors = [
2018-01-28 20:44:08 -07:00
"red" => "#f44336",
"pink" => "#e91e63",
"purple" => "#9c27b0",
"deep-purple" => "#673ab7",
"indigo" => "#3f51b5",
"blue" => "#2196f3",
"light-blue" => "#03a9f4",
"cyan" => "#00bcd4",
"teal" => "#009688",
"green" => "#4caf50",
"light-green" => "#8bc34a",
"lime" => "#cddc39",
"yellow" => "#ffeb3b",
"amber" => "#ffc107",
"orange" => "#ff9800",
"deep-orange" => "#ff5722",
"brown" => "#795548",
"grey" => "#9e9e9e",
"blue-grey" => "#607d8b"
2018-01-28 00:06:27 -07:00
];
$texts = [
2018-01-28 20:44:08 -07:00
"red" => "white",
"pink" => "white",
"purple" => "white",
"deep-purple" => "white",
"indigo" => "white",
"blue" => "white",
"light-blue" => "black",
"cyan" => "black",
"teal" => "white",
"green" => "white",
"light-green" => "black",
"lime" => "black",
"yellow" => "black",
"amber" => "black",
"orange" => "black",
"deep-orange" => "white",
"brown" => "white",
"grey" => "black",
"blue-grey" => "white"
2018-01-28 00:06:27 -07:00
];
2018-01-28 18:15:24 -07:00
/* License header */
$year = date('Y');
echo <<<END
/* Material-Color.css
* Copyright (c) $year Netsyms Technologies
* MIT License
* https://source.netsyms.com/Netsyms/Material-Color
*/
END;
/* Make CSS variables */
if ($use_variables) {
echo ":root {\n";
foreach ($colors as $k => $v) {
if (strpos($k, "text-") !== FALSE) {
continue;
}
echo "\t--material-color-$k: $v;\n";
2018-01-28 00:06:27 -07:00
}
2018-01-28 18:15:24 -07:00
echo "}\n\n";
2018-01-28 00:06:27 -07:00
}
2018-01-28 18:15:24 -07:00
/* The fun bit */
2018-01-28 20:44:08 -07:00
foreach ($classes as $c => $props) {
2018-01-28 00:06:27 -07:00
foreach ($colors as $k => $v) {
2018-01-28 20:44:08 -07:00
$t = $texts[$k];
2018-01-28 18:15:24 -07:00
// Save a few bytes
2018-01-28 20:44:08 -07:00
if ($t == "white") {
$t = "#fff";
} else if ($t == "black") {
$t = "#000";
2018-01-28 18:15:24 -07:00
}
2018-01-28 20:44:08 -07:00
// Color setup
2018-01-28 18:15:24 -07:00
if ($use_variables) {
2018-01-28 20:44:08 -07:00
$m = "var(--material-color-$k)";
2018-01-28 18:15:24 -07:00
} else {
2018-01-28 20:44:08 -07:00
$m = $v;
2018-01-28 18:15:24 -07:00
}
2018-01-28 20:44:08 -07:00
// Class
if (strpos($c, " ") !== FALSE) {
$classes = explode(" ", $c);
foreach ($classes as $cl) {
if (strpos($cl, ".") === 0) {
echo "$cl ";
} else {
echo ".$cl-$k ";
}
}
echo "{\n";
} else {
echo ".$c-$k {\n";
2018-01-28 18:15:24 -07:00
}
2018-01-28 20:44:08 -07:00
foreach ($props as $prop => $val) {
echo "\t$prop: ";
if (strpos($val, "m") === 0) {
echo $m;
} else if (strpos($val, "t") === 0) {
echo $t;
} else {
echo $val;
}
if (strpos($val, "!") === 1) {
echo " !important";
}
echo ";\n";
}
// Finish it off
2018-01-28 18:15:24 -07:00
echo "}\n";
2018-01-28 00:06:27 -07:00
}
}
?>