MaterialColors.php
110 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Helper methods for material-design colors. |
| 4 | * |
| 5 | * @package kirki-framework/control-palette |
| 6 | * @author Themeum |
| 7 | * @copyright Copyright (c) 2023, Themeum |
| 8 | * @license https://opensource.org/licenses/MIT |
| 9 | * @since 1.0 |
| 10 | */ |
| 11 | |
| 12 | namespace Kirki\Util; |
| 13 | |
| 14 | /** |
| 15 | * A simple object containing static methods. |
| 16 | * |
| 17 | * @since 1.0 |
| 18 | */ |
| 19 | class MaterialColors { |
| 20 | |
| 21 | /** |
| 22 | * Gets an array of material-design colors. |
| 23 | * |
| 24 | * @static |
| 25 | * @access public |
| 26 | * @since 1.0 |
| 27 | * @param string $context Allows us to get subsets of the palette. |
| 28 | * @return array |
| 29 | */ |
| 30 | public static function get_colors( $context = 'primary' ) { |
| 31 | $colors = [ |
| 32 | 'primary' => [ '#ffffff', '#000000', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4caf50', '#8bc34a', '#cddc39', '#ffeb3b', '#ffc107', '#ff9800', '#ff5722', '#795548', '#9e9e9e', '#607d8b' ], |
| 33 | 'red' => [ '#ffebee', '#ffcdd2', '#ef9a9a', '#e57373', '#ef5350', '#f44336', '#e53935', '#d32f2f', '#c62828', '#b71c1c', '#ff8a80', '#ff5252', '#ff1744', '#d50000' ], |
| 34 | 'pink' => [ '#fce4ec', '#f8bbd0', '#f48fb1', '#f06292', '#ec407a', '#e91e63', '#d81b60', '#c2185b', '#ad1457', '#880e4f', '#ff80ab', '#ff4081', '#f50057', '#c51162' ], |
| 35 | 'purple' => [ '#f3e5f5', '#e1bee7', '#ce93d8', '#ba68c8', '#ab47bc', '#9c27b0', '#8e24aa', '#7b1fa2', '#6a1b9a', '#4a148c', '#ea80fc', '#e040fb', '#d500f9', '#aa00ff' ], |
| 36 | 'deep-purple' => [ '#ede7f6', '#d1c4e9', '#b39ddb', '#9575cd', '#7e57c2', '#673ab7', '#5e35b1', '#512da8', '#4527a0', '#311b92', '#b388ff', '#7c4dff', '#651fff', '#6200ea' ], |
| 37 | 'indigo' => [ '#e8eaf6', '#c5cae9', '#9fa8da', '#7986cb', '#5c6bc0', '#3f51b5', '#3949ab', '#303f9f', '#283593', '#1a237e', '#8c9eff', '#536dfe', '#3d5afe', '#304ffe' ], |
| 38 | 'blue' => [ '#e3f2fd', '#bbdefb', '#90caf9', '#64b5f6', '#42a5f5', '#2196f3', '#1e88e5', '#1976d2', '#1565c0', '#0d47a1', '#82b1ff', '#448aff', '#2979ff', '#2962ff' ], |
| 39 | 'light-blue' => [ '#e1f5fe', '#b3e5fc', '#81d4fa', '#4fc3f7', '#29b6fc', '#03a9f4', '#039be5', '#0288d1', '#0277bd', '#01579b', '#80d8ff', '#40c4ff', '#00b0ff', '#0091ea' ], |
| 40 | 'cyan' => [ '#e0f7fa', '#b2ebf2', '#80deea', '#4dd0e1', '#26c6da', '#00bcd4', '#00acc1', '#0097a7', '#00838f', '#006064', '#84ffff', '#18ffff', '#00e5ff', '#00b8d4' ], |
| 41 | 'teal' => [ '#e0f2f1', '#b2dfdb', '#80cbc4', '#4db6ac', '#26a69a', '#009688', '#00897b', '#00796b', '#00695c', '#004d40', '#a7ffeb', '#64ffda', '#1de9b6', '#00bfa5' ], |
| 42 | 'green' => [ '#e8f5e9', '#c8e6c9', '#a5d6a7', '#81c784', '#66bb6a', '#4caf50', '#43a047', '#388e3c', '#2e7d32', '#1b5e20', '#b9f6ca', '#69f0ae', '#00e676', '#00c853' ], |
| 43 | 'light-green' => [ '#f1f8e9', '#dcedc8', '#c5e1a5', '#aed581', '#9ccc65', '#8bc34a', '#7cb342', '#689f38', '#558b2f', '#33691e', '#ccff90', '#b2ff59', '#76ff03', '#64dd17' ], |
| 44 | 'lime' => [ '#f9fbe7', '#f0f4c3', '#e6ee9c', '#dce775', '#d4e157', '#cddc39', '#c0ca33', '#a4b42b', '#9e9d24', '#827717', '#f4ff81', '#eeff41', '#c6ff00', '#aeea00' ], |
| 45 | 'yellow' => [ '#fffde7', '#fff9c4', '#fff590', '#fff176', '#ffee58', '#ffeb3b', '#fdd835', '#fbc02d', '#f9a825', '#f57f17', '#ffff82', '#ffff00', '#ffea00', '#ffd600' ], |
| 46 | 'amber' => [ '#fff8e1', '#ffecb3', '#ffe082', '#ffd54f', '#ffca28', '#ffc107', '#ffb300', '#ffa000', '#ff8f00', '#ff6f00', '#ffe57f', '#ffd740', '#ffc400', '#ffab00' ], |
| 47 | 'orange' => [ '#fff3e0', '#ffe0b2', '#ffcc80', '#ffb74d', '#ffa726', '#ff9800', '#fb8c00', '#f57c00', '#ef6c00', '#e65100', '#ffd180', '#ffab40', '#ff9100', '#ff6d00' ], |
| 48 | 'deep-orange' => [ '#fbe9a7', '#ffccbc', '#ffab91', '#ff8a65', '#ff7043', '#ff5722', '#f4511e', '#e64a19', '#d84315', '#bf360c', '#ff9e80', '#ff6e40', '#ff3d00', '#dd2600' ], |
| 49 | 'brown' => [ '#efebe9', '#d7ccc8', '#bcaaa4', '#a1887f', '#8d6e63', '#795548', '#6d4c41', '#5d4037', '#4e342e', '#3e2723' ], |
| 50 | 'grey' => [ '#fafafa', '#f5f5f5', '#eeeeee', '#e0e0e0', '#bdbdbd', '#9e9e9e', '#757575', '#616161', '#424242', '#212121', '#000000', '#ffffff' ], |
| 51 | 'blue-grey' => [ '#eceff1', '#cfd8dc', '#b0bbc5', '#90a4ae', '#78909c', '#607d8b', '#546e7a', '#455a64', '#37474f', '#263238' ], |
| 52 | ]; |
| 53 | |
| 54 | switch ( $context ) { |
| 55 | case '50': |
| 56 | case '100': |
| 57 | case '200': |
| 58 | case '300': |
| 59 | case '400': |
| 60 | case '500': |
| 61 | case '600': |
| 62 | case '700': |
| 63 | case '800': |
| 64 | case '900': |
| 65 | case 'A100': |
| 66 | case 'A200': |
| 67 | case 'A400': |
| 68 | case 'A700': |
| 69 | $key = absint( $context ) / 100; |
| 70 | if ( 'A100' === $context ) { |
| 71 | $key = 10; |
| 72 | unset( $colors['grey'] ); |
| 73 | } elseif ( 'A200' === $context ) { |
| 74 | $key = 11; |
| 75 | unset( $colors['grey'] ); |
| 76 | } elseif ( 'A400' === $context ) { |
| 77 | $key = 12; |
| 78 | unset( $colors['grey'] ); |
| 79 | } elseif ( 'A700' === $context ) { |
| 80 | $key = 13; |
| 81 | unset( $colors['grey'] ); |
| 82 | } |
| 83 | unset( $colors['primary'] ); |
| 84 | $position_colors = []; |
| 85 | foreach ( $colors as $color_family ) { |
| 86 | if ( isset( $color_family[ $key ] ) ) { |
| 87 | $position_colors[] = $color_family[ $key ]; |
| 88 | } |
| 89 | } |
| 90 | return $position_colors; |
| 91 | case 'all': |
| 92 | unset( $colors['primary'] ); |
| 93 | $all_colors = []; |
| 94 | foreach ( $colors as $color_family ) { |
| 95 | foreach ( $color_family as $color ) { |
| 96 | $all_colors[] = $color; |
| 97 | } |
| 98 | } |
| 99 | return $all_colors; |
| 100 | case 'primary': |
| 101 | return $colors['primary']; |
| 102 | default: |
| 103 | if ( isset( $colors[ $context ] ) ) { |
| 104 | return $colors[ $context ]; |
| 105 | } |
| 106 | return $colors['primary']; |
| 107 | } |
| 108 | } |
| 109 | } |
| 110 |