configure(); return $static; } /** * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color */ public function color(string | array | Closure | null $color): static { $this->color = $color; return $this; } public function icon(string | Closure | null $icon): static { $this->icon = $icon; return $this; } public function label(string | Closure | null $label): static { $this->label = $label; return $this; } public function sort(int | Closure | null $sort): static { $this->sort = $sort; return $this; } public function url(string | Closure | null $url, bool | Closure $shouldOpenInNewTab = false): static { $this->openUrlInNewTab($shouldOpenInNewTab); $this->url = $url; return $this; } public function openUrlInNewTab(bool | Closure $condition = true): static { $this->shouldOpenUrlInNewTab = $condition; return $this; } public function hidden(bool | Closure $condition = true): static { $this->isHidden = $condition; return $this; } public function visible(bool | Closure $condition = true): static { $this->isVisible = $condition; return $this; } public function isVisible(): bool { return ! $this->isHidden(); } public function isHidden(): bool { if ($this->evaluate($this->isHidden)) { return true; } return ! $this->evaluate($this->isVisible); } /** * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null */ public function getColor(): string | array | null { return $this->evaluate($this->color); } public function getIcon(): ?string { return $this->evaluate($this->icon); } public function getLabel(): ?string { return $this->evaluate($this->label); } public function getSort(): int { return $this->evaluate($this->sort) ?? -1; } public function getUrl(): ?string { return $this->evaluate($this->url); } public function shouldOpenUrlInNewTab(): bool { return (bool) $this->evaluate($this->shouldOpenUrlInNewTab); } }