PHPackages                             revoltify/support - 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. revoltify/support

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

revoltify/support
=================

Core support utilities for Revoltify packages

0114↓50%[1 PRs](https://github.com/revoltify/support/pulls)PHPCI passing

Since Jul 9Pushed 2w agoCompare

[ Source](https://github.com/revoltify/support)[ Packagist](https://packagist.org/packages/revoltify/support)[ RSS](/packages/revoltify-support/feed)WikiDiscussions main Synced 2w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Revoltify Support
=================

[](#revoltify-support)

Core support utilities for Revoltify packages. Ships a fluent, framework-agnostic form schema builder that serializes to plain arrays — ready to hand off to a frontend renderer or API.

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

[](#requirements)

- PHP `^8.2`

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

[](#installation)

```
composer require revoltify/support
```

Usage
-----

[](#usage)

Build a form from a list of components and convert it to an array:

```
use Revoltify\Support\Forms\Form;
use Revoltify\Support\Forms\Components\Field;

$form = Form::make([
    Field::make('name')->text()->required(),
    Field::make('email')->email()->required(),
    Field::make('role')->select([
        'admin' => 'Admin',
        'member' => 'Member',
    ])->searchable(),
]);

$schema = $form->toArray();
```

`Form::make()` accepts any array; only values implementing `FormComponent` are kept, keyed by their `getKey()`.

### Fields

[](#fields)

`Field::make($key)` derives a default label from the key (`created_at` → `Created at`). Chain a type method, then modifiers:

```
Field::make('bio')->textarea(rows: 5)->helperText('Short description');
Field::make('password')->password()->revealable()->required();
Field::make('tags')->tags(['php', 'laravel']);
Field::make('avatar')->file()->image()->acceptedFileTypes(['image/png', 'image/jpeg']);
Field::make('config')->codeEditor()->language('json');
```

**Types:** `text`, `password`, `email`, `number`, `textarea`, `markdown`, `select`, `radio`, `checkbox`, `file`, `color`, `tags`, `codeEditor`, `toggle`.

**Common modifiers:** `label`, `value`, `default`, `placeholder`, `helperText`, `tooltip`, `hint`, `hintIcon`, `hintColor`, `hintActionUrl`, `required`, `disabled`, `readOnly`, `live`, `columnSpanFull`, `rules`, `visible`, `visibleWhen`, `dependent`, `options`, `multiple`, `searchable`, `preload`, `maxLength`, `minLength`, `prefix`, `suffix`, `suffixCopy`, `min`, `max`, `step`, `rows`, `maxSize`, `image`.

### Layout components

[](#layout-components)

`Grid`, `Section`, `Tab`, and `Tabs` group fields. Each implements `FormComponent`, so they slot into a form or nest inside one another:

```
use Revoltify\Support\Forms\Components\{Section, Grid, Tabs, Tab};

Form::make([
    Section::make('profile')
        ->label('Profile')
        ->collapsible()
        ->schema([
            Grid::make('name_grid', columns: 2)->schema([
                Field::make('first_name')->text(),
                Field::make('last_name')->text(),
            ]),
        ]),

    Tabs::make('settings')->tabs([
        Tab::make('general')->label('General')->schema([
            Field::make('site_name')->text(),
        ]),
        Tab::make('security')->label('Security')->icon('shield')->schema([
            Field::make('two_factor')->toggle(),
        ]),
    ]),
]);
```

### Conditional visibility

[](#conditional-visibility)

```
Field::make('company')->text()->visibleWhen('account_type', 'business');
Field::make('vat')->text()->visible(fn ($state) => $state['country'] === 'DE');
```

Testing
-------

[](#testing)

```
composer stan   # PHPStan (level max)
composer pint   # Laravel Pint
composer rector # Rector
```

License
-------

[](#license)

MIT — see [LICENSE.md](LICENSE.md).

###  Health Score

24

—

LowBetter than 30% of packages

Maintenance63

Regular maintenance activity

Popularity14

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 92.3% 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/1a6975c50488b3eeb7cb613bf0b280342ce3912dc4ffaa1aa14b75add8fe070a?d=identicon)[rtraselbd](/maintainers/rtraselbd)

---

Top Contributors

[![rtraselbd](https://avatars.githubusercontent.com/u/31556372?v=4)](https://github.com/rtraselbd "rtraselbd (24 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")

### Embed Badge

![Health badge](/badges/revoltify-support/health.svg)

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

###  Alternatives

[harishdurga/laravel-quiz

Provides Quiz Functionality

1736.8k](/packages/harishdurga-laravel-quiz)

PHPackages © 2026

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