PHPackages                             simtabi/gechemba - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. simtabi/gechemba

ActiveLibrary[Framework](/categories/framework)

simtabi/gechemba
================

Bootstrap 5 components for Laravel Livewire.

03PHP

Since Nov 16Pushed 4y agoCompare

[ Source](https://github.com/simtabi/gechemba)[ Packagist](https://packagist.org/packages/simtabi/gechemba)[ RSS](/packages/simtabi-gechemba/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Laravel Livewire Forms
======================

[](#laravel-livewire-forms)

Laravel Livewire form component with declarative Bootstrap 5 fields and buttons.

Requirements
------------

[](#requirements)

- Bootstrap 5

Installation
------------

[](#installation)

```
composer require simtabi/gechemba
```

Usage
-----

[](#usage)

Make a new form:

```
php artisan make:form users.create-user-form
```

Declare fields:

```
public function fields()
{
    return [
        Input::make('name', 'Name'),
        Input::make('email', 'Email')->type('email'),
        Input::make('password', 'Password')->type('password'),
    ];
}
```

Declare buttons:

```
public function buttons()
{
    return [
        Button::make('Create User')->click('createUser'),
        Button::make('Cancel', 'secondary')->url('/'),
    ];
}
```

Declare rules:

```
public function rules()
{
    return [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8'],
    ];
}
```

Declare an action (notice the use of `->click('createUser')` in the button example above:

```
public function createUser()
{
    $this->validate();

    User::create([
        'name' => $this->data('name'),
        'email' => $this->data('email'),
        'password' => Hash::make($this->data('password')),
    ]);

    return redirect('/');
}
```

Full Page Forms
---------------

[](#full-page-forms)

Create a full page form by specifying a `title`, `layout` and `route` to use:

```
class Login extends FormComponent
{
    public $title = 'Login';
    public $layout = 'layouts.card';

    public function route()
    {
        return Route::get('/login', static::class)
            ->name('login')
            ->middleware('guest');
    }
```

The `route` method is made available by using my [laravel-livewire-routes](https://github.com/simtabi/laravel-livewire-routes) package.

Setting Initial Data
--------------------

[](#setting-initial-data)

You can set the initial form data / defaults via the `data` array property in your component `mount` method:

```
class UpdateUserForm extends FormComponent
{
    public $title = 'Update User';

    public function route()
    {
        return Route::get('/users/update/{user}', static::class)
            ->name('users.update')
            ->middleware('auth');
    }

    public function mount(User $user)
    {
        $this->data = $user->toArray();
    }
```

Accessing Data
--------------

[](#accessing-data)

Use the `data` method in the component to access current form data (you can use dot notation for array values):

```
public function createUser()
{
    User::create([
        'name' => $this->data('name'),
        'email' => $this->data('email'),
        'likes_turtles' => $this->data('answers.likes_turtles'),
    ]);
}
```

Data Binding
------------

[](#data-binding)

Most fields allow you to change the way livewire binds data via helper methods that are chained to fields e.g.:

```
Input::make('name', 'Name'), // defaults to defer
Input::make('name', 'Name')->instant(), // bind on keyup
Input::make('name', 'Name')->defer(), // bind on action
Input::make('name', 'Name')->lazy(), // bind on change
Input::make('name', 'Name')->debounce(500), // bind after 500ms delay
```

Sizing
------

[](#sizing)

Many fields also allow you to specify a size for the input e.g.:

```
Input::make('name', 'Name'), // defaults to normal sizing
Input::make('name', 'Name')->small(), // small sizing
Input::make('name', 'Name')->large(), // large sizing
```

Disabling
---------

[](#disabling)

Some fields allow you to disable or set them to readonly, and even plaintext for inputs:

```
Input::make('name', 'Name')->disabled(),
Input::make('name', 'Name')->readonly(),
Input::make('name', 'Name')->plaintext(),
```

Helper Text
-----------

[](#helper-text)

Specify helper text for a field by using the `help` method:

```
Input::make('name', 'Name')->help('Please tell us your name!'),
```

Available Fields
----------------

[](#available-fields)

### Alert `($message, $style = 'success')`

[](#alert-message-style--success)

An alert box.

```
Alert::make('It worked!'),
Alert::make('Something bad happened.', 'danger'),
Alert::make('Something else happened.')->dismissible(),
```

The `$style` parameter accepts a bootstrap alert style e.g. `success`, `danger`, `primary`, etc. Use the `dismissible` method to make the alert dismissible.

Available methods: `dismissible`

### Arrayable `($name, $label = null)`

[](#arrayable-name-label--null)

An array of fields.

```
Arrayable::make('locations', 'Locations')->fields([
    Input::make('city')->placeholder('City'),
    Select::make('state')->placeholder('State')->options(['FL', 'TX']),
]),
```

Available methods: `fields`, `help`, `disabled`

### Button `($label = 'Submit', $style = 'primary')`

[](#button-label--submit-style--primary)

A button used for actions and links.

```
Button::make('Register')->click('register'),
Button::make('Already registered?', 'secondary')->route('login'),
Button::make('Go back home', 'link')->url('/'),
```

The `$style` parameter accepts a bootstrap button style e.g. `primary`, `outline-secondary`, `link`, etc. Use the `block` method to make a button full width.

Available methods: `block`, `click`, `href`, `route`, `url`

### Checkbox `($name, $label)`

[](#checkbox-name-label)

A checkbox field.

```
Checkbox::make('accept', 'I accept the terms'),
Checkbox::make('accept', 'I accept')->help('Please accept our terms'),
Checkbox::make('active', 'This user is active')->switch(),
```

Use the `switch` method to style the checkbox as a switch.

Available methods: `switch`, `help`, `instant`, `defer`, `lazy`, `debounce`, `disabled`

### Checkboxes `($name, $label = null)`

[](#checkboxes-name-label--null)

An array of checkbox fields.

```
Checkboxes::make('colors', 'Colors')->options(['Red', 'Green', 'Blue']),
```

Available methods: `options`, `switch`, `help`, `instant`, `defer`, `lazy`, `debounce`, `disabled`

### Color `($name, $label = null)`

[](#color-name-label--null)

A color picker field.

```
Color::make('hair_color', 'Hair Color'),
```

Available methods: `small`, `large`, `help`, `instant`, `defer`, `lazy`, `debounce`, `disabled`, `readonly`

### Conditional

[](#conditional)

A statement used to conditionally show fields.

```
Conditional::if($this->data('color') == 'green', [
    Input::make('green', 'Green'),
])->elseif($this->data('color') == 'blue', [
    Input::make('blue', 'Blue'),
])->else([
    Input::make('red', 'Red'),
]),
```

Available methods: `if`, `elseif`, `else`

### DynamicComponent `($name, $attrs = [])`

[](#dynamiccomponent-name-attrs--)

A field used to display dynamic third-party components.

```
DynamicComponent::make('honey'),
DynamicComponent::make('honey', ['recaptcha' => true]),
```

This would translate to `` and `` in your form.

### File `($name, $label = null)`

[](#file-name-label--null)

A file upload field.

```
File::make('avatar', 'Avatar'),
File::make('photos', 'Photos')->multiple(),
File::make('documents', 'Documents')->multiple()->disk('s3'),
```

Use the `multiple` method to allow multiple file uploads. Optionally specify the filesystem disk to use via the `disk` method (used for linking to files, defaults to the filesystem config `default`).

Available methods: `disk`, `multiple`, `help`, `disabled`

### Input `($name, $label = null)`

[](#input-name-label--null)

An input field.

```
Input::make('name', 'Name'),
Input::make('phone')->placeholder('Phone')->type('tel'),
Input::make('email', 'Email')->type('email')->large(),
Input::make('price', 'Price')->type('number')->append('$')->prepend('.00'),
```

The `type` method accepts a standard HTML input type. As with other inputs, use `small` or `large` to resize an input. Input fields also support appends/prepends, and even plaintext.

Available methods: `small`, `large`, `help`, `instant`, `defer`, `lazy`, `debounce`, `disabled`, `readonly`, `placeholder`, `type`, `append`, `prepend`, `plaintext`

### Radio `($name, $label = null)`

[](#radio-name-label--null)

A radio field.

```
Radio::make('gender', 'Gender')->options(['Male', 'Female']),
```

Available methods: `options`, `switch`, `help`, `instant`, `defer`, `lazy`, `debounce`, `disabled`

### Select `($name, $label = null)`

[](#select-name-label--null)

A select dropdown field.

```
Select::make('color', 'Color')->options(['Red', 'Green', 'Blue']),
Select::make('color', 'Color')->options([
    '#ff0000' => 'Red',
    '#00ff00' => 'Green',
    '#0000ff' => 'Blue',
])->instant(),
Select::make('user_id', 'User')->options(User::pluck('name', 'id')->toArray()),
```

Available methods: `options`, `small`, `large`, `help`, `instant`, `defer`, `lazy`, `debounce`, `disabled`, `placeholder`

### Textarea `($name, $label = null)`

[](#textarea-name-label--null)

A textarea field.

```
Input::make('bio', 'Biography'),
Input::make('bio', 'Biography')->rows(5),
```

Available methods: `small`, `large`, `help`, `instant`, `defer`, `lazy`, `debounce`, `disabled`, `readonly`, `placeholder`, `rows`

### View `($name, $data = [])`

[](#view-name-data--)

Used to render a custom Blade view inside the form.

```
View::make('custom-view', ['hello' => 'world']),
```

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity28

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/e606811f3653a5a5a2a0bc39e2cfd2d52436e7f73da3e416dd13284c7ac87f0a?d=identicon)[simtabi](/maintainers/simtabi)

### Embed Badge

![Health badge](/badges/simtabi-gechemba/health.svg)

```
[![Health](https://phpackages.com/badges/simtabi-gechemba/health.svg)](https://phpackages.com/packages/simtabi-gechemba)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M190](/packages/laravel-telescope)[laravel/passport

Laravel Passport provides OAuth2 server support to Laravel.

3.4k85.0M529](/packages/laravel-passport)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M256](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M591](/packages/laravel-prompts)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
