Laravel Bootstrap 5 Blade components.
nawrasbukhari/laravel-bootstrap-components is a Laravel package for laravel bootstrap 5 blade components..
It currently has 0 GitHub stars and 10 downloads on Packagist (latest version 2.3.4).
Install it with composer require nawrasbukhari/laravel-bootstrap-components.
Discover more Laravel packages by nawrasbukhari
or browse all Laravel packages to compare alternatives.
Last updated
This package contains a set of useful Bootstrap Laravel Blade components. It promotes DRY principles and allows you to keep your HTML nice and clean. Components include alerts, badges, buttons, form inputs (with automatic error feedback), dropdowns, navs, pagination (responsive), and more. The components come with Laravel Livewire integration built in, so you can use them with or without Livewire.
Require the package via composer:
composer require nawrasbukhari/laravel-bootstrap-components
A Bootstrap alert:
<x-bs::alert
:label="__('It was successful!')"
color="info"
dismissible
/>
icon: Font Awesome icon to show before label e.g. cog, envelopelabel: label to display, can also be placed in the slotcolor: Bootstrap color e.g. primary, danger, successdismissible: set the alert to be dismissibleA Bootstrap badge:
<x-bs::badge
:label="__('Pending')"
color="warning"
/>
icon: Font Awesome icon to show before label e.g. cog, envelopelabel: label to display, can also be placed in the slotcolor: Bootstrap color e.g. primary, danger, successA Bootstrap button:
<x-bs::button
:label="__('Login')"
color="primary"
size="lg"
route="login"
/>
icon: Font Awesome icon to show before label e.g. cog, envelopelabel: label to display, can also be placed in the slotcolor: Bootstrap color e.g. primary, danger, successsize: Bootstrap button size e.g. sm, lgtype: button type e.g. button, submitroute: sets the href to a routeurl: sets the href to a urlhref: sets the hrefdismiss: a data-bs-dismiss value e.g. alert, modaltoggle: a data-bs-toggle value e.g. collapse, dropdownclick: Livewire action on clickconfirm: prompts the user for confirmation on clickA Bootstrap checkbox input:
<x-bs::check
:label="__('Agree')"
:checkLabel="__('I agree to the TOS')"
:help="__('Please accept the TOS.')"
switch
model="agree"
/>
label: label to display above the inputcheckLabel: label to display beside the inputhelp: helper label to display under the inputswitch: style the input as a switchmodel: Livewire model property keylazy: bind Livewire data on changeA Bootstrap close button:
<x-bs::close
dismiss="modal"
/>
color: Bootstrap close color e.g. whitedismiss: a data-bs-dismiss value e.g. alert, modalA Bootstrap color picker input:
<x-bs::color
:label="__('Favorite Color')"
:prepend="__('I like')"
:append="_('the most.')"
:help="__('Please pick a color.')"
model="favorite_color"
/>
label: label to display above the inputicon: Font Awesome icon to show before input e.g. cog, envelopeprepend: addon to display before input, can be used via named slotappend: addon to display after input, can be used via named slotsize: Bootstrap input size e.g. sm, lghelp: helper label to display under the inputmodel: Livewire model property keylazy: bind Livewire data on changeA Bootstrap datalist input:
<x-bs::datalist
:label="__('City Name')"
:options="['Toronto', 'Montreal', 'Las Vegas']"
:prepend="__('I live in')"
:append="_('right now.')"
:help="__('Please enter your city.')"
model="city_name"
/>
label: label to display above the inputoptions: array of input options e.g. ['Red', 'Blue']icon: Font Awesome icon to show before input e.g. cog, envelopeprepend: addon to display before input, can be used via named slotappend: addon to display after input, can be used via named slotsize: Bootstrap input size e.g. sm, lghelp: helper label to display under the inputmodel: Livewire model property keydebounce: time in ms to bind Livewire data on keyup e.g. 500lazy: bind Livewire data on changeA description list:
<x-bs::desc
:term="__('ID')"
:details="$user->id"
/>
tern: the description list termdetails: the description list details, can also be placed in the slotdate: date to use instead of details (for use with Laravel Timezone)A Bootstrap dropdown:
<x-bs::dropdown
:label="__('Filter')"
color="danger"
>
<x-bs::dropdown-item
:label="__('By Name')"
click="$set('filter', 'name')"
/>
<x-bs::dropdown-item
:label="__('By Age')"
click="$set('filter', 'age')"
/>
</x-bs::dropdown>
icon: Font Awesome icon to show before label e.g. cog, envelopelabel: dropdown label to display, can be used via named slotitems: dropdown items, can also be placed in the slotcolor: Bootstrap color e.g. primary, danger, successsize: Bootstrap button size e.g. sm, lgA Bootstrap dropdown menu item:
<x-bs::dropdown-item
:label="__('Login')"
route="login"
/>
icon: Font Awesome icon to show before label e.g. cog, envelopelabel: label to display, can also be placed in the slotroute: sets the href to a routeurl: sets the href to a urlhref: sets the hrefA Bootstrap form:
<x-bs::form submit="login">
<x-bs::input :label="__('Email')" type="email" model="email"/>
<x-bs::input :label="__('Password')" type="password" model="password"/>
<x-bs::button :label="__('Login')" type="submit"/>
</x-bs::form>
submit: Livewire action on submitA Font Awesome icon:
<x-bs::icon
name="cog"
/>
name: Font Awesome icon name e.g. cog, rocketstyle: Font Awesome icon style e.g. solid, regular, brandssize: Font Awesome icon size e.g. sm, lg, 3x, 5xcolor: Bootstrap color e.g. primary, danger, successspin: sets the icon to use a spin animationpulse: sets the icon to use a pulse animationAn image:
<x-bs::image
asset="images/logo.png"
height="24"
rounded
/>
asset: sets the src to an assetsrc: sets the srcfluid: sets the image to be fluid widththumbnail: sets the image to use thumbnail stylingrounded: sets the image to have rounded cornersA Bootstrap text input:
<x-bs::input
:label="__('Email Address')"
type="email"
:help="__('Please enter your email.')"
model="email_address"
>
<x-slot name="prepend">
<i class="fa fa-envelope"></i>
</x-slot>
</x-bs::input>
label: label to display above the inputtype: input type e.g. text, emailicon: Font Awesome icon to show before input e.g. cog, envelopeprepend: addon to display before input, can be used via named slotappend: addon to display after input, can be used via named slotsize: Bootstrap input size e.g. sm, lghelp: helper label to display under the inputmodel: Livewire model property keydebounce: time in ms to bind Livewire data on keyup e.g. 500lazy: bind Livewire data on changeA hyperlink:
<x-bs::link
:label="__('Users')"
route="users"
/>
icon: Font Awesome icon to show before label e.g. cog, envelopelabel: label to display, can also be placed in the slotroute: sets the href to a routeurl: sets the href to a urlhref: sets the hrefA Bootstrap nav dropdown:
<x-bs::nav-dropdown
:label="Auth::user()->name"
>
<x-bs::dropdown-item
:label="__('Update Profile')"
click="$emit('showModal', 'profile.update')"
/>
<x-bs::dropdown-item
:label="__('Logout')"
click="logout"
/>
</x-bs::nav-dropdown>
icon: Font Awesome icon to show before label e.g. cog, envelopelabel: dropdown label to display, can be used via named slotitems: dropdown items, can also be placed in the slotA Bootstrap nav link:
<x-bs::nav-link
:label="__('Users')"
route="users"
/>
icon: Font Awesome icon to show before label e.g. cog, envelopelabel: label to display, can also be placed in the slotroute: sets the href to a routeurl: sets the href to a urlhref: sets the hrefResponsive Bootstrap pagination links:
<x-bs::pagination
:links="App\Models\User::paginate()"
justify="center"
/>
links: paginated Laravel modelsjustify: Bootstrap justification e.g. start, endA Bootstrap progress bar:
<x-bs::progress
:label="__('25% Complete')"
percent="25"
color="success"
height="10"
animated
striped
/>
label: label to display inside the progress barpercent: percentage of the progress barcolor: Bootstrap color e.g. primary, danger, successheight: height of the progress bar in pixelsanimated: animate the progress barstriped: use striped styling for the progress barA Bootstrap radio input:
<x-bs::radio
:label="__('Gender')"
:options="['Male', 'Female']"
:help="__('Please select your gender.')"
switch
model="gender"
/>
label: label to display above the inputoptions: array of input options e.g. ['Red', 'Blue']help: helper label to display under the inputswitch: sets the input to use a switch stylemodel: Livewire model property keylazy: bind Livewire data on changeA Bootstrap select input:
<x-bs::select
:label="__('Your Country')"
:placeholder="__('Select Country')"
:options="['Australia', 'Canada', 'USA']"
:prepend="__('I live in')"
:append="_('right now.')"
:help="__('Please select your country.')"
model="your_country"
/>
label: label to display above the inputplaceholder: placeholder to use for the empty first optionoptions: array of input options e.g. ['Red', 'Blue']icon: Font Awesome icon to show before input e.g. cog, envelopeprepend: addon to display before input, can be used via named slotappend: addon to display after input, can be used via named slotsize: Bootstrap input size e.g. sm, lghelp: helper label to display under the inputmodel: Livewire model property keylazy: bind Livewire data on changeA Bootstrap textarea input:
<x-bs::textarea
:label="__('Biography')"
rows="5"
:help="__('Please tell us about yourself.')"
model="biography"
/>
label: label to display above the inputicon: Font Awesome icon to show before input e.g. cog, envelopeprepend: addon to display before input, can be used via named slotappend: addon to display after input, can be used via named slotsize: Bootstrap input size e.g. sm, lghelp: helper label to display under the inputmodel: Livewire model property keydebounce: time in ms to bind Livewire data on keyup e.g. 500lazy: bind Livewire data on changeThis trait makes form data model manipulation a breeze. No more having to create a Livewire component property for every single form input. All form data will be placed inside the $model property array.
Get the model data as a collection:
$collection = $this->model();
Set a single value:
$this->setModel('name', 'Kevin');
Set values using Eloquent model data:
$this->setModel(User::first());
Set values using an array:
$this->setModel([
'name' => 'Kevin',
'email' => '[email protected]',
]);
Add an empty array item:
$this->addModelItem('locations');
Remove an array item by its key:
$this->removeModelItem('locations', 3);
Order an array item by its key & direction:
$this->orderModelItem('locations', 3, 'up');
The direction should be up or down.
Package components work with this trait via the model attribute:
<x-bs::input :label="__('Name')" model="name"/>
<x-bs::input :label="__('Email')" type="email" model="email"/>
Use the validateModel method to validate model data:
$this->validateModel([
'name' => ['required'],
'email' => ['required', 'email'],
]);
This method works just like the Livewire validate method, so you can specify your rules in a separate rules method if you prefer.
Use your own component views by publishing the package views:
php artisan vendor:publish --tag=laravel-bootstrap-components:views
Now edit the files inside resources/views/vendor/bs. The package will use these files to render the components.
Use your own font icons by publishing the package config:
php artisan vendor:publish --tag=laravel-bootstrap-components:config
Now edit the icon_class_prefix value inside config/laravel-bootstrap-components.php. The package will use this class to render the icons.