> $entries * @param array{title: string, description?: ?string, icon?: ?string}|null $emptyState * @param array $viewData */ public function __construct( public string $title, public array $entries = [], public bool $collapsible = true, public bool $collapsed = true, public bool $visible = true, public ?string $description = null, public ?string $view = null, public array $viewData = [], public ?array $emptyState = null, ) {} public function shouldRender(): bool { if (! $this->visible || trim($this->title) === '') { return false; } return $this->entries !== [] || $this->view !== null || $this->emptyState !== null; } /** * @return array{ * title: string, * entries: list>, * collapsible: bool, * collapsed: bool, * visible: bool, * description: ?string, * view: ?string, * viewData: array, * emptyState: array{title: string, description?: ?string, icon?: ?string}|null * } */ public function toArray(): array { return [ 'title' => $this->title, 'entries' => array_values($this->entries), 'collapsible' => $this->collapsible, 'collapsed' => $this->collapsed, 'visible' => $this->visible, 'description' => $this->description, 'view' => $this->view, 'viewData' => $this->viewData, 'emptyState' => $this->emptyState, ]; } }