PHPackages                             accelade/forms - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. accelade/forms

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

accelade/forms
==============

Form builder components for Accelade - create dynamic forms with text inputs, selects, checkboxes, and more

0171[11 PRs](https://github.com/accelade/forms/pulls)1BladeCI passing

Since Feb 9Pushed 2mo agoCompare

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

READMEChangelogDependenciesVersions (13)Used By (1)

Accelade Forms
==============

[](#accelade-forms)

A powerful form builder package for Laravel and Accelade. Create dynamic forms with a Filament-compatible API using Blade components.

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

[](#installation)

```
composer require accelade/forms
```

The package will auto-register its service provider.

Quick Start
-----------

[](#quick-start)

```
use Accelade\Forms\Form;
use Accelade\Forms\Components\TextInput;
use Accelade\Forms\Components\Select;
use Accelade\Forms\Components\Toggle;

$form = Form::make()
    ->action('/users')
    ->schema([
        TextInput::make('name')
            ->label('Full Name')
            ->required()
            ->placeholder('Enter your name'),

        TextInput::make('email')
            ->email()
            ->required(),

        Select::make('role')
            ->options([
                'admin' => 'Administrator',
                'editor' => 'Editor',
                'viewer' => 'Viewer',
            ])
            ->searchable(),

        Toggle::make('active')
            ->label('Active Status'),
    ]);
```

Available Components
--------------------

[](#available-components)

### Text Inputs

[](#text-inputs)

- **TextInput** - Text, email, password, URL, tel, and numeric inputs
- **Textarea** - Multi-line text input with autosize support
- **Hidden** - Hidden form fields

### Selection

[](#selection)

- **Select** - Dropdown select with searchable, multiple, and remote options
- **CheckboxList** - Multiple checkbox selection with grid layout
- **Radio** - Radio button groups
- **Checkbox** - Single checkbox
- **Toggle** - Toggle switch
- **ToggleButtons** - Button-style toggle group

### Rich Content

[](#rich-content)

- **RichEditor** - WYSIWYG editor with toolbar customization
- **TipTapEditor** - TipTap-based editor with collaboration support
- **MarkdownEditor** - Markdown editing with preview

### Specialized

[](#specialized)

- **FileUpload** - File uploads with FilePond integration
- **IconPicker** - Icon selection from multiple icon sets
- **ColorPicker** - Color selection with presets
- **DatePicker** / **TimePicker** / **DateTimePicker** - Date/time selection
- **DateRangePicker** - Date range selection
- **TagsInput** - Tag input with suggestions
- **EmojiInput** - Emoji picker
- **PinInput** - PIN/OTP code input
- **RateInput** - Star rating input
- **Slider** - Range slider input
- **NumberField** - Numeric input with increment/decrement
- **KeyValue** - Key-value pair editor
- **Repeater** - Repeatable field groups

### Layout

[](#layout)

- **Group** - Group fields together

Component Examples
------------------

[](#component-examples)

### TextInput

[](#textinput)

```
TextInput::make('username')
    ->label('Username')
    ->placeholder('Enter username')
    ->required()
    ->minLength(3)
    ->maxLength(20)
    ->prefix('@')
    ->hint('Your unique identifier');

// Email input
TextInput::make('email')->email()->required();

// Password input
TextInput::make('password')->password()->required();

// With date picker
TextInput::make('birthday')
    ->datePicker()
    ->format('Y-m-d');
```

### Select

[](#select)

```
// Basic select
Select::make('country')
    ->options([
        'us' => 'United States',
        'uk' => 'United Kingdom',
        'ca' => 'Canada',
    ])
    ->searchable();

// Multiple selection
Select::make('tags')
    ->multiple()
    ->options($tags);

// With Choices.js styling
Select::make('category')
    ->choices(['searchEnabled' => true])
    ->options($categories);

// Remote options
Select::make('user')
    ->remoteUrl('/api/users')
    ->remoteRoot('data')
    ->optionLabel('name')
    ->optionValue('id');

// With relationship
Select::make('roles')
    ->relation('roles')
    ->multiple();
```

### FileUpload

[](#fileupload)

```
// Image upload
FileUpload::make('avatar')
    ->image()
    ->maxSize(2048)
    ->disk('public')
    ->directory('avatars');

// Multiple files
FileUpload::make('documents')
    ->multiple()
    ->maxFiles(5)
    ->acceptedFileTypes(['application/pdf', 'image/*'])
    ->downloadable();

// With FilePond
FileUpload::make('photos')
    ->filepond(['allowImagePreview' => true])
    ->multiple();

// With Spatie Media Library
FileUpload::make('gallery')
    ->collection('gallery')
    ->mediaBrowser();
```

### CheckboxList

[](#checkboxlist)

```
CheckboxList::make('permissions')
    ->options([
        'create' => 'Create',
        'read' => 'Read',
        'update' => 'Update',
        'delete' => 'Delete',
    ])
    ->columns(2)
    ->bulkToggleable()
    ->descriptions([
        'create' => 'Ability to create new records',
        'delete' => 'Ability to delete records',
    ]);
```

### RichEditor

[](#richeditor)

```
RichEditor::make('content')
    ->toolbarButtons([
        'bold', 'italic', 'underline',
        '|',
        'bulletList', 'orderedList',
        '|',
        'link', 'attachFiles',
    ])
    ->fileAttachmentsDisk('public')
    ->fileAttachmentsDirectory('uploads');
```

### IconPicker

[](#iconpicker)

```
IconPicker::make('icon')
    ->sets(['emoji', 'heroicons'])
    ->defaultSet('heroicons')
    ->searchable()
    ->gridColumns(10);

// With Blade Icons
IconPicker::make('icon')
    ->bladeIcons()
    ->perPage(50);
```

Form Configuration
------------------

[](#form-configuration)

```
Form::make()
    ->action('/submit')
    ->method('POST')
    ->hasFiles() // Enable file uploads
    ->confirm('Are you sure?')
    ->confirmButtonText('Yes, submit')
    ->cancelButtonText('Cancel')
    ->stayOnPage() // Don't redirect after submit
    ->preserveScroll()
    ->resetOnSuccess()
    ->submitOnChange() // Auto-submit on field change
    ->debounce(500)
    ->schema([...]);
```

Validation
----------

[](#validation)

Validation rules are automatically extracted from field definitions:

```
TextInput::make('email')
    ->email()
    ->required()
    ->rules(['unique:users,email']);
```

You can also use Form Request validation alongside component rules.

Documentation
-------------

[](#documentation)

Detailed documentation for each component is available in the [docs](docs/) directory:

### Getting Started

[](#getting-started)

- [Getting Started](docs/getting-started.md) - Installation and basic usage
- [API Reference](docs/api-reference.md) - Complete API documentation

### Form Components

[](#form-components)

- [Form](docs/form.md) - Form wrapper component
- [Group](docs/group.md) - Field grouping
- [Submit](docs/submit.md) - Submit button

### Text Inputs

[](#text-inputs-1)

- [Text Input](docs/text-input.md) - Text, email, password, URL inputs
- [Textarea](docs/textarea.md) - Multi-line text with autosize
- [Number Field](docs/number-field.md) - Numeric input with controls

### Selection Components

[](#selection-components)

- [Select](docs/select.md) - Dropdown with search, multiple, remote options
- [Checkbox](docs/checkbox.md) - Single checkbox
- [Checkbox List](docs/checkbox-list.md) - Multiple checkbox selection
- [Radio](docs/radio.md) - Radio button groups
- [Toggle](docs/toggle.md) - Toggle switch
- [Toggle Buttons](docs/toggle-buttons.md) - Button-style toggles

### Rich Content Editors

[](#rich-content-editors)

- [Rich Editor](docs/rich-editor.md) - WYSIWYG editor
- [TipTap Editor](docs/tiptap-editor.md) - TipTap-based editor
- [Markdown Editor](docs/markdown-editor.md) - Markdown with preview

### Date &amp; Time

[](#date--time)

- [Date Picker](docs/date-picker.md) - Date selection
- [Time Picker](docs/time-picker.md) - Time selection
- [DateTime Picker](docs/datetime-picker.md) - Combined date/time
- [Date Range Picker](docs/date-range-picker.md) - Date range selection

### Specialized Inputs

[](#specialized-inputs)

- [File Upload](docs/file-upload.md) - File uploads with FilePond
- [Icon Picker](docs/icon-picker.md) - Icon selection
- [Color Picker](docs/color-picker.md) - Color selection
- [Tags Input](docs/tags-input.md) - Tag input with suggestions
- [Pin Input](docs/pin-input.md) - PIN/OTP code input
- [Rate Input](docs/rate-input.md) - Star rating
- [Slider](docs/slider.md) - Range slider
- [Key Value](docs/key-value.md) - Key-value pair editor
- [Repeater](docs/repeater.md) - Repeatable field groups

Configuration
-------------

[](#configuration)

Publish the config file:

```
php artisan vendor:publish --tag=forms-config
```

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

[](#requirements)

- PHP 8.2+
- Laravel 11.0+ or 12.0+
- Accelade core package

Testing
-------

[](#testing)

```
composer test
```

License
-------

[](#license)

MIT License. See [LICENSE](LICENSE) for details.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance58

Moderate activity, may be stable

Popularity10

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity21

Early-stage or recently created project

 Bus Factor1

Top contributor holds 59.6% of commits — single point of failure

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/2147eb2fca7ab5f0124d0fafd88ba2d2a5dfa3a0036fb8872d1084b7cba29366?d=identicon)[fadymondy](/maintainers/fadymondy)

---

Top Contributors

[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (56 commits)")[![fadymondy](https://avatars.githubusercontent.com/u/11937812?v=4)](https://github.com/fadymondy "fadymondy (38 commits)")

### Embed Badge

![Health badge](/badges/accelade-forms/health.svg)

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

###  Alternatives

[ezsystems/ezpublish-legacy-installer

Installer for eZ Publish legacy extensions and legacy kernel itself.

10466.7k200](/packages/ezsystems-ezpublish-legacy-installer)

PHPackages © 2026

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