[ 'colors' => [ 'primary' => '#586cb1', 'primary-darker' => '#4c60a3', 'link' => '#4c60a3', ], ], 'blue-light' => [ 'colors' => [ 'primary' => '#62a8ea', 'primary-darker' => '#62a8ea', 'link' => '#62a8ea', ], ], 'blue' => [ 'colors' => [ 'primary' => '#6d8be6', 'primary-darker' => '#6d8be6', 'link' => '#6d8be6', ], ], 'green' => [ 'colors' => [ 'primary' => '#4e9876', 'primary-darker' => '#458769', 'link' => '#458769', ], ], ]; /** * 默认颜色. * * @var array */ protected static $colors = [ 'info' => 'blue', 'success' => 'green', 'danger' => 'red', 'warning' => 'orange', 'indigo' => '#5c6bc6', 'blue' => '#3085d6', 'red' => '#ea5455', 'orange' => '#dda451', 'green' => '#21b978', 'cyan' => '#7367f0', 'purple' => '#5b69bc', 'custom' => '#59a9f8', 'pink' => '#ff8acc', 'dark' => '#22292f', 'white' => '#fff', 'white50' => 'hsla(0,0%,100%,.5)', // 其他蓝色 'blue1' => '#007ee5', 'blue2' => '#3d97dd', // 橘色 'orange1' => '#ffcc80', 'orange2' => '#F99037', // 黄色 'yellow' => '#edc30e', 'indigo-darker' => '#495abf', 'red-darker' => '#bd4147', 'blue-darker' => '#236bb0', 'cyan-darker' => '#6355ee', // 灰色 'gray' => '#b9c3cd', // 轻灰 'light' => '#f7f7f9', // 水鸭色 'tear' => '#01847f', 'tear1' => '#00b5b5', // 深色 'dark20' => '#f6fbff', 'dark30' => '#f4f7fa', 'dark35' => '#e7eef7', 'dark40' => '#ebf0f3', 'dark50' => '#d3dde5', 'dark60' => '#bacad6', 'dark70' => '#b3b9bf', 'dark80' => '#7c858e', 'dark85' => '#5c7089', 'dark90' => '#252d37', // 文本通用颜色 'font' => '#414750', // 灰色背景 'gray-bg' => '#f1f1f1', // 边框颜色 'border' => '#ebeff2', // 表单边框 'input-border' => '#d9d9d9', // 背景色 'background' => '#eff3f8', // 深色模式 // 背景色 'dark-mode-bg' => '#2c2c43', // 深色 'dark-mode-color' => '#222233', 'dark-mode-color2' => '#1e1e2d', 'dark-mode-font' => '##a8a9bb', ]; /** * 主题名称. * * @var string */ protected $name; /** * @var array */ protected $currentColors = []; /** * @var array */ protected $realColors; /** * Color constructor. * * @param string $name */ public function __construct(?string $name = null) { $this->name = ($name ?: config('admin.layout.color')) ?: static::DEFAULT_COLOR; $this->currentColors = array_merge( static::$colors, static::$extensions[$this->name]['colors'] ?? [] ); } /** * @return string */ public function getName() { return $this->name; } /** * 获取颜色. * * @param string $colorName * @param string $default * * @return string */ public function get(?string $colorName, ?string $default = null) { if ($this->realColors) { return $this->realColors[$colorName] ?? $default; } $result = $this->currentColors[$colorName] ?? $default; if ($result && ! empty($this->currentColors[$result])) { return $this->get($result, $default); } return $result; } /** * 获取所有颜色. * * @return array */ public function all() { if ($this->realColors === null) { foreach ($this->currentColors as $key => &$color) { $color = $this->get($key); } $this->realColors = &$this->currentColors; } return $this->realColors; } /** * 颜色转亮. * * @param string $color * @param int $amt * * @return string */ public function lighten(?string $color, int $amt) { return Helper::colorLighten($this->get($color, $color), $amt); } /** * 颜色转暗. * * @param string $color * @param int $amt * * @return string */ public function darken(string $color, int $amt) { return Helper::colorDarken($this->get($color, $color), $amt); } /** * 颜色透明度转化. * * @param string $color * @param float|string $alpha * * @return string */ public function alpha(?string $color, $alpha) { return Helper::colorAlpha($this->get($color, $color), $alpha); } /** * 获取颜色. * * @param string $method * @param array $arguments * * @return string */ public function __call(string $method, array $arguments = []) { return $this->darken( Helper::slug($method), $arguments[0] ?? 0 ); } /** * 扩展颜色. * * @param string $name * @param array $colors * * @return void */ public static function extend(string $name, array $colors) { static::$extensions[$name] = [ 'colors' => $colors, ]; } }