dannyguevara1/zest
Composer 安装命令:
composer require dannyguevara1/zest
包简介
Laravel component toolkit for rapid UI development
关键字:
README 文档
README
Zest es una herramienta minimalista para gestionar clases CSS en aplicaciones Laravel. Permite crear, organizar y reutilizar clases CSS mediante un sistema de presets, facilitando el mantenimiento y la consistencia del código.
Características
- Sistema de presets: Define conjuntos reutilizables de clases CSS
- API fluida: Utiliza una interfaz de encadenamiento de métodos para construir clases
- Directivas Blade: Integración con Blade mediante directivas
@presety@presetIf - Sin opiniones de estilo: Zest no impone ningún framework CSS o sistema de diseño
- Liviano y enfocado: Hace una cosa y la hace bien - gestionar clases CSS
Instalación
composer require dannyguevara1/zest
Opcionalmente, publica el archivo de configuración:
php artisan vendor:publish --tag=zest-config
Uso básico
Definiendo presets
Define presets globales en el archivo de configuración o mediante código:
// En config/zest.php 'presets' => [ 'btn' => 'inline-flex items-center justify-center font-medium rounded', 'btn-primary' => 'bg-blue-600 text-white hover:bg-blue-700', 'card' => 'bg-white rounded-lg shadow overflow-hidden', ], // O mediante código use Dannyguevara1\Zest\Facades\Zest; Zest::definePreset('btn', 'inline-flex items-center justify-center font-medium rounded'); Zest::definePresets([ 'btn-primary' => 'bg-blue-600 text-white hover:bg-blue-700', 'card' => 'bg-white rounded-lg shadow overflow-hidden', ]);
Usando presets en vistas Blade
<button class="{{ Zest::preset('btn')->preset('btn-primary') }}"> Enviar formulario </button>
Usando la API fluida para combinar clases
<div class="{{ Zest::classBuilder() ->add('flex items-center') ->preset('card') ->addIf($hasError, 'border-red-500') ->addIf($isActive, 'border-green-500') }}"> Contenido </div>
Usando las directivas de Blade
<button class="@preset('btn') @presetIf($isPrimary, 'btn-primary')"> Botón </button>
Organizando tus presets
Recomendamos organizar tus presets con prefijos claros según el tipo de componente:
// Botones 'btn' => 'base-styles...', 'btn-primary' => 'variant-styles...', 'btn-sm' => 'size-styles...', // Tarjetas 'card' => 'base-styles...', 'card-header' => 'part-styles...', 'card-body' => 'part-styles...',
Integrando con tus componentes Blade
Zest es una herramienta excelente para usar en componentes Blade personalizados:
<!-- resources/views/components/button.blade.php --> @props(['variant' => 'default', 'size' => 'md']) <button {{ $attributes->class([ Zest::preset('btn'), Zest::preset('btn-'.$variant), Zest::preset('btn-size-'.$size) ]) }}> {{ $slot }} </button>
API
Facade Zest
Zest::classBuilder($initialClasses = null): Crea una nueva instancia de ClassComposerZest::definePreset($name, $classes): Define un preset globalZest::definePresets($presetsArray): Define múltiples presets globalesZest::getPreset($name): Obtiene un preset por su nombreZest::preset($name): Crea un ClassComposer y aplica un preset
Clase ClassComposer
add($classes): Añade clases CSSaddIf($condition, $classes): Añade clases CSS condicionalmentepreset($name): Aplica un presetpresetIf($condition, $name): Aplica un preset condicionalmente
Ejemplos avanzados
Componente de botón
// AppServiceProvider.php public function boot() { Zest::definePresets([ 'btn' => 'inline-flex items-center justify-center font-medium transition-colors rounded-md', 'btn-primary' => 'bg-blue-600 text-white hover:bg-blue-700', 'btn-secondary' => 'bg-gray-200 text-gray-800 hover:bg-gray-300', 'btn-sm' => 'text-sm px-3 py-1.5', 'btn-md' => 'px-4 py-2', 'btn-lg' => 'text-lg px-5 py-3', ]); }
<!-- button.blade.php --> @props(['variant' => 'primary', 'size' => 'md']) <button {{ $attributes->class([ '@preset("btn")', '@preset("btn-'.$variant.'")', '@preset("btn-'.$size.'")', ]) }}> {{ $slot }} </button>
Componente de tabla
// AppServiceProvider.php public function boot() { Zest::definePresets([ 'table' => 'min-w-full divide-y divide-gray-200', 'table-head' => 'bg-gray-50', 'table-th' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider', 'table-body' => 'bg-white divide-y divide-gray-200', 'table-td' => 'px-6 py-4 whitespace-nowrap text-sm text-gray-500', ]); }
<!-- table.blade.php --> <table class="@preset('table')"> <thead class="@preset('table-head')"> <tr> @foreach($headers as $header) <th class="@preset('table-th')">{{ $header }}</th> @endforeach </tr> </thead> <tbody class="@preset('table-body')"> @foreach($rows as $row) <tr> @foreach($row as $cell) <td class="@preset('table-td')">{{ $cell }}</td> @endforeach </tr> @endforeach </tbody> </table>
Licencia
MIT
dannyguevara1/zest 适用场景与选型建议
dannyguevara1/zest 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 04 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「ui」 「components」 「laravel」 「blade」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 dannyguevara1/zest 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 dannyguevara1/zest 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 dannyguevara1/zest 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Web Font Loader gives you added control when using linked fonts via @font-face.
Ariadne Component Library: xml writer and parser Component
Ariadne Component Library: Cache Component
Ariadne Component Library: hierarchical configuration management Component
Ariadne Component Library: user and group rights management Component
Ariadne Component Library: W3C style events Component
统计信息
- 总下载量: 4
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 6
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-04-09