Панель
Группирует несколько полей в единый визуальный блок. В отличие от Stack, Panel добавляется в fields() ресурса и используется на странице просмотра/редактирования.
Panel::make('Authorization', [
Phone::make('phone', 'Phone'),
Email::make('email', 'Email'),
Password::make('password', 'Password'),
])
Первый аргумент — заголовок панели. Второй — массив полей.

Раскладка внутри формы
Страница редактирования использует 12-колоночную адаптивную сетку. Панели можно разложить по колонкам и рядам этой сетки методами colSpan() и rowSpan().
colSpan() — позиция по столбцам
Принимает Frame\Core\Span::make($from, $to) на каждый брейкпоинт. Границы включительные — $from и $to указывают первую и последнюю занятую колонку сетки из 12.
use Frame\Core\Span;
use Frame\Laravel\Fields\Panel;
return [
Panel::make('Основное', [
Text::make('title', 'Заголовок'),
Textarea::make('description', 'Описание'),
])
->colSpan(md: Span::make(1, 8)), // cols 1..8 — 8 колонок слева
Panel::make('Публикация', [
DateTime::make('published_at', 'Дата'),
])
->colSpan(md: Span::make(9, 12)), // cols 9..12 — 4 колонки справа
];
На мобильных (без xs) панели занимают полную ширину одна под другой; начиная с md — рядом.
rowSpan() — растяжение по строкам
Panel::make('Детали', [...])
->colSpan(md: Span::make(1, 8))
->rowSpan(md: Span::make(1, 2)), // растянуть на 2 ряда
Panel::make('Настройки', [...])
->colSpan(md: Span::make(9, 12)),
Panel::make('История', [...])
->colSpan(md: Span::make(9, 12)),
Левая панель займёт первые два ряда по высоте, справа поместятся две панели друг под другом.
Брейкпоинты
Оба метода принимают именованные параметры:
null означает «не задано, наследуется от меньшего».
Ширина полей внутри панели
Метод grid() задаёт ширину отдельного поля внутри панели (сколько из 12 колонок поля панели оно занимает). Это НЕ раскладка самих панелей.
Panel::make('Публикация', [
DateTime::make('published_at', 'Дата')
->grid(md: 6), // половина ширины панели на md+
Toggle::make('is_published', 'Опубликовано')
->grid(md: 6), // вторая половина
]),
Поля без grid() занимают всю ширину панели.
grid() и colSpan()/rowSpan() — разные механизмы. Первый — для размещения полей внутри панели. Второй — для размещения самой панели в общей сетке формы.Инфолист и шаги мастера
Дополнительные методы панели используются в Infolist (табличная раскладка) и в форме-мастере (панель = шаг).
Panel::make('Привязка', [
MorphTo::make('addressable', [OfficeResource::class], 'Сущность'),
])
->description('К чему привязать адрес (необязательно)')
->optional()
->showWhen('country')