$this->name, 'url' => $this->url, 'icon' => $this->icon, 'is_active' => $this->isActive, ]; } public function withActiveState(bool $isActive): self { return new self( name: $this->name, url: $this->url, icon: $this->icon, isActive: $isActive ); } public function isActive(string $currentPath): bool { return $this->url === $currentPath || str_starts_with($currentPath, $this->url); } }