accelade/schemas
Accelade Schemas
Schema components for organizing forms, content, and data displays in your Laravel applications. Built on top of Accelade for reactive interactivity.
<x-accelade::section heading="User Profile" collapsible>
<x-accelade::grid :columns="2">
<input name="first_name" placeholder="First Name">
<input name="last_name" placeholder="Last Name">
</x-accelade::grid>
</x-accelade::section>
That's it. Collapsible sections, tabs, grids, wizards, and more. All with reactive state management.
Features
- Section — Collapsible panels with headings, descriptions, and icons
- Tabs — Horizontal/vertical tabs with badges and persistence
- Grid — Responsive multi-column layouts
- Columns — Simple equal-width columns
- Split — Two-column layouts with configurable ratios
- Fieldset — HTML fieldset with legend
- Wizard — Multi-step form flows
- Placeholder — Static content, views, or HTML
Installation
composer require accelade/schemas
The package extends Accelade's component namespace, so all components are available as <x-accelade::*>.
Quick Start
Section
<x-accelade::section
heading="Personal Information"
description="Update your profile details"
collapsible
>
<input name="name" placeholder="Full Name">
<input name="email" placeholder="Email">
</x-accelade::section>
Tabs
<x-accelade::tabs :component="$tabs" />
use Accelade\Schemas\Components\Tabs;
use Accelade\Schemas\Components\Tab;
$tabs = Tabs::make()
->tabs([
Tab::make('General')
->icon('<svg>...</svg>')
->schema([...]),
Tab::make('Advanced')
->badge('3')
->schema([...]),
]);
Grid
<x-accelade::grid :columns="3" gap="6">
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
</x-accelade::grid>
Wizard
<x-accelade::wizard :component="$wizard" />
use Accelade\Schemas\Components\Wizard;
use Accelade\Schemas\Components\Step;
$wizard = Wizard::make()
->steps([
Step::make('Account')
->icon('<svg>...</svg>')
->schema([...]),
Step::make('Profile')
->schema([...]),
Step::make('Review')
->schema([...]),
])
->nextLabel('Continue')
->submitLabel('Create Account');
Split Layout
<x-accelade::split ratio="1/3">
<x-slot:start>
<nav>Sidebar</nav>
</x-slot:start>
<x-slot:end>
<main>Content</main>
</x-slot:end>
</x-accelade::split>
Fieldset
<x-accelade::fieldset legend="Contact Info" :columns="2">
<input name="phone" placeholder="Phone">
<input name="address" placeholder="Address">
</x-accelade::fieldset>
Placeholder
<x-accelade::placeholder
:view="'partials.terms'"
label="Terms of Service"
/>
Responsive Columns
All grid-based components support responsive column configurations:
// Simple: 2 columns
Grid::make(2);
// Responsive: 1 on mobile, 2 on sm, 3 on lg
Grid::make(['default' => 1, 'sm' => 2, 'lg' => 3]);
<x-accelade::grid :columns="['default' => 1, 'sm' => 2, 'lg' => 3]">
...
</x-accelade::grid>
Multi-Framework Support
Components automatically use the correct framework prefix for Accelade's reactivity:
| Framework | Directives |
|---|---|
| Vanilla JS | a-show, a-class, @click |
| Vue | v-show, v-class, @click |
| React | data-state-show, data-state-class, @click |
| Svelte | s-show, s-class, @click |
| Angular | ng-show, ng-class, @click |
Object-Based API
All components support a fluent PHP API for programmatic rendering:
use Accelade\Schemas\Components\Section;
use Accelade\Schemas\Components\Grid;
use Accelade\Schemas\Components\Tabs;
use Accelade\Schemas\Components\Tab;
$section = Section::make('settings')
->heading('Application Settings')
->description('Configure your app')
->icon('<svg>...</svg>')
->collapsible()
->collapsed()
->columns(2)
->schema([
Grid::make(2)->schema([...]),
]);
// In Blade:
{!! $section->render() !!}
Requirements
- PHP 8.2+
- Laravel 11.x or 12.x
- Accelade 0.2+
Documentation
| Component | Description |
|---|---|
| Section | Collapsible sections with headings |
| Tabs | Tabbed content panels |
| Grid | Responsive grid layouts |
| Wizard | Multi-step form wizard |
| Fieldset | Group fields with legend |
| Split | Two-column layouts |
| Columns | Equal-width columns |
| Placeholder | Static content display |
License
MIT License. See LICENSE for details.