Awesome
Blade Style
<p align="center"> <a href="https://github.com/cbl/blade-style/actions"><img src="https://github.com/cbl/blade-style/workflows/tests/badge.svg" alt="Build Status"></a> <a href="https://packagist.org/packages/cbl/blade-style"><img src="https://img.shields.io/github/license/cbl/blade-style?color=%2331c653" alt="License"></a> </p>A package to easily minify styles and make use of sass, less, etc in your blade components.
<button class="btn">{{ $slot }}</button>
<x-style lang="css">
.btn{
height: 2rem;
line-height: 2rem;
border-radius:3px;
}
</x-style>
Introduction
Already some javascript frameworks (e.g. Vue) brought an architecture where styles and html markup could be written in the same file. This design pattern is a considerable simplification of the workflow in frontend development.
With blade styles there is no need to run a compiler when working on your styles. Also, only the styles of required blade components are included. This saves you from loading large css files and the size can be reduced to a minimum.
Compiler
Currently there is a Sass
compiler for blade styles. If you want to build a
compiler for Less
or Stylus
, you can do so using the Sass
package as an
example.
Installation
The package can be easily installed via composer.
composer require cbl/blade-style
now the necessary assets must be published. This includes the style.php config and the storage folder where the compiled styles are stored.
php artisan vendor:publish --provider="BladeStyle\ServiceProvider"
Include Styles
The blade component x-styles
includes all required styles, so it may be placed
in the head.
<head>
...
<x-styles />
</head>
Usage
Each blade view can contain exactly one x-style
component. Your styles can
then be written inside the wrapper like so.
<img src="http://lorempixel.com/400/200/" class="my-image"/>
<x-style lang="css">
.my-image{
border: 1px solid #ccc;
border-radius: 3px;
}
</x-style>
You can build reusable blade components:
<button class="btn">{{ $slot }}</button>
<x-style lang="css">
.btn{
height: 2rem;
line-height: 2rem;
border-radius:3px;
}
</x-style>
Sass
You may set a CSS extension langauge in the lang
attribute, like so:
<button class="btn">My Button</button>
<x-style lang="scss">
$color: purple;
.btn{
background: $color;
}
</x-style>
Optimizing Styles
Blade styles share the same behavior as Views. As suggested in the
View documentation, the
style:cache
command can be added to your deployment workflow to ensure that
all styles are compiled and thus improve performance.
php artisan style:cache
You may use the style:clear
command to clear the style cache:
php artisan style:clear