showReference ? $state->referenceValue : null, targetUrl: null, targetKind: $targetKind, availability: $state->reason, unavailableReason: $state->message, contextBadge: null, priority: $priority, actionLabel: $actionLabel, ); } public function isAvailable(): bool { return $this->availability === 'available' && is_string($this->targetUrl) && $this->targetUrl !== ''; } /** * @return array{ * key: string, * label: string, * value: string, * secondaryValue: ?string, * targetUrl: ?string, * targetKind: string, * availability: string, * unavailableReason: ?string, * contextBadge: ?string, * priority: int, * actionLabel: string * } */ public function toArray(): array { return [ 'key' => $this->key, 'label' => $this->label, 'value' => $this->value, 'secondaryValue' => $this->secondaryValue, 'targetUrl' => $this->targetUrl, 'targetKind' => $this->targetKind, 'availability' => $this->availability, 'unavailableReason' => $this->unavailableReason, 'contextBadge' => $this->contextBadge, 'priority' => $this->priority, 'actionLabel' => $this->actionLabel, ]; } }