kartovitskii / laracolor
A Laravel package for generating consistent colors from strings
v1.1.0
2026-03-06 10:59 UTC
Requires
- php: ^8.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0|^12.0
This package is auto-updated.
Last update: 2026-05-06 11:32:03 UTC
README
Laracolor - это элегантный пакет для Laravel, который генерирует консистентные цвета на основе любой строки. Идеально подходит для создания цветных аватарок, тегов, категорий и других элементов интерфейса.
✨ Особенности
- 🎯 Консистентная генерация - одинаковый ввод всегда дает одинаковый цвет
- 🎨 8 готовых палитр - от пастельных до ярких
- ⚙️ Гибкая настройка - кастомные диапазоны saturation и lightness
- 🌈 HSL и RGB поддержка - работайте с цветами в любом формате
- 🎭 Контрастные цвета - автоматический подбор цвета текста
- 📊 Генерация градиентов - создавайте цветовые схемы
- 🚀 Кэширование - оптимизация производительности
- 🔧 Configurable - настройка через .env и конфиг
📦 Установка
Установите пакет через Composer:
composer require kartovitskii/laracolor
Публикация конфигурации
php artisan vendor:publish --provider="Kartovitskii\Laracolor\ColorServiceProvider" --tag="laracolor-config"
🚀 Быстрый старт
Базовое использование
use Kartovitskii\Laracolor\Facades\Laracolor; // Генерация цвета для пользователя $color = Laracolor::fromString('john.doe@example.com'); // Результат: #d4b8b8 (пастельно-розовый) // Для аватарок пользователей $userColor = Laracolor::fromString(auth()->user()->email);
В Blade шаблонах
<div class="user-avatar" style="background-color: {{ Laracolor::fromString($user->email) }}">
{{ substr($user->name, 0, 1) }}
</div>
<!-- С контрастным текстом -->
<div class="user-avatar" style="background-color: {{ Laracolor::fromString($user->email) }};
color: {{ Laracolor::getContrastColor($user->email) }}">
{{ substr($user->name, 0, 1) }}
</div>
🎨 Палитры
Laracolor поддерживает 8 различных палитр:
| Палитра | Описание | Пример |
|---|---|---|
pastel |
Мягкие, приглушенные тона | 🎨 #d4b8b8, #b8d4c8 |
vibrant |
Насыщенные, яркие цвета | 🎨 #ff6b6b, #4ecdc4 |
dark |
Темные, глубокие оттенки | 🎨 #2c3e50, #34495e |
light |
Светлые, воздушные тона | 🎨 #f8f9fa, #e9ecef |
muted |
Спокойные, неброские цвета | 🎨 #95a5a6, #7f8c8d |
warm |
Теплые оттенки (красные, оранжевые) | 🎨 #e67e22, #d35400 |
cold |
Холодные тона (синие, фиолетовые) | 🎨 #3498db, #9b59b6 |
random |
Полностью случайные цвета |
Использование палитр
// Пастельные тона (по умолчанию) $pastel = Laracolor::fromString('user1'); // Яркие цвета $vibrant = Laracolor::setPalette('vibrant')->fromString('user2'); // Теплые оттенки $warm = Laracolor::setPalette('warm')->fromString('user3');
📚 Документация
fromString(string $string): string
Генерирует HEX-цвет на основе строки.
$hex = Laracolor::fromString('hello world'); // #c4d4b8
toRgb(string $string): array
Возвращает RGB значения.
$rgb = Laracolor::toRgb('hello world'); // ['red' => 196, 'green' => 212, 'blue' => 184]
toHsl(string $string): array
Возвращает HSL значения.
$hsl = Laracolor::toHsl('hello world'); // ['hue' => 85.71, 'saturation' => 45.5, 'lightness' => 82.5]
Дополнительные методы
getContrastColor(string $string): string
Возвращает черный или белый цвет для контрастного текста.
$bgColor = Laracolor::fromString('user'); $textColor = Laracolor::getContrastColor('user'); // Используйте $textColor для текста на фоне $bgColor
getGradient(string $string, int $steps = 5): array
Генерирует градиент из указанного количества цветов.
$gradient = Laracolor::getGradient('brand', 5); // ['#8ba3c7', '#9bb3d7', '#abc3e7', '#bbd3f7', '#cbe3ff']
Настройка палитр
Через методы
$customColor = Laracolor::setSaturationRange(40, 60) ->setLightnessRange(50, 70) ->setHueOffset(120) // смещение оттенка ->fromString('custom');
Через конфигурацию
// config/laracolor.php 'custom_ranges' => [ 'saturation' => [ 'min' => 40, 'max' => 60, ], 'lightness' => [ 'min' => 50, 'max' => 70, ], ],
⚡ Кэширование
Включите кэширование для улучшения производительности:
LARACOLOR_CACHE_ENABLED=true LARACOLOR_CACHE_TTL=3600