Docs / Inlay / Introduction

Introduction

Inlay is a Laravel-native visual composition layer for existing applications. You register ordinary Blade components; Inlay gives the people who work with your content a packaged admin to compose pages from them, edit their settings, preview against your real frontend, and publish - without you building any admin UI of your own.

Supported Laravel versions: 11, 12, and 13. Requires PHP 8.2+ and Livewire 4.

Inlay is pre-1.0. The API described in these docs is the current, intended shape, but this isn't yet a stable release.

What Inlay is

  • A package you install into an existing Laravel application - not a standalone CMS or a new application you build on top of.
  • A way to expose a safe, schema-driven subset of your own Blade components for visual composition, with the schema derived from your component's own constructor rather than a separate config file that can drift out of sync with your code.
  • Frontend-agnostic. Inlay renders your components through Laravel's real Blade/Livewire pipeline and never ships its own frontend framework, CSS reset, or JavaScript bundler dependency into your application's output. Your components look and behave exactly as you built them, in whatever design system your application already uses.

What Inlay is not

  • Not a page builder that generates markup. You write real Blade components; Inlay composes and persists references to them plus their settings. It never invents HTML.
  • Not a theming system. There's no Inlay design language leaking into your public pages - only the admin has its own, separate design.
  • Not a drag-and-drop layout engine. A page is a flat, ordered list of components rendered inside whatever layout your own route or controller already provides. There are no nested components, slots, or regions in this release.
  • Not a rich-text platform, a media library, or a navigation builder. These are out of scope for the current release - see Current limitations.
  • Not Livewire Volt, even where the ergonomics of single-file components rhyme with it.

Quick example

Register a component against a handle:

// config/inlay.php 'sections' => [ 'hero' => \App\Inlay\Components\Hero::class, ], // app/Inlay/Components/Hero.php namespace App\Inlay\Components; use Illuminate\View\Component; use Illuminate\View\View; use WearePixel\Inlay\Attributes\Text; use WearePixel\Inlay\Contracts\InlayComponent; final class Hero extends Component implements InlayComponent { public function __construct( #[Text(label: 'Heading', maxLength: 80)] public string $heading = 'Welcome', ) {} public function render(): View { return view('components.hero'); } }

Someone managing content can now add a Hero to a page from the admin, edit its heading, preview it against your real frontend, and publish - all without you writing a single line of admin UI.

See Installation to get a working admin up, or Registering components for the full authoring reference.

Discovery Call

One call.
We'll both know.

An hour to walk through your project, ask the hard questions, and work out honestly if we're the right team for it.

  • One call per day - it gets our full attention
  • Australia's only Laravel Premier Partner
  • Senior engineers only - no juniors on your project
  • Brisbane-based, onshore team

Press Esc to close  ·  B to reopen