- Move 12 markdown files from root to docs/ subdirectories - Organize documentation by category: • docs/troubleshooting/ (1 file) - Technical troubleshooting guides • docs/deployment/ (4 files) - Deployment and security documentation • docs/guides/ (3 files) - Feature-specific guides • docs/planning/ (4 files) - Planning and improvement proposals Root directory cleanup: - Reduced from 16 to 4 markdown files in root - Only essential project files remain: • CLAUDE.md (AI instructions) • README.md (Main project readme) • CLEANUP_PLAN.md (Current cleanup plan) • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements) This improves: ✅ Documentation discoverability ✅ Logical organization by purpose ✅ Clean root directory ✅ Better maintainability
52 lines
1.2 KiB
PHP
52 lines
1.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Application\Admin\ValueObjects;
|
|
|
|
final readonly class NavigationItem
|
|
{
|
|
public function __construct(
|
|
public string $name,
|
|
public string $url,
|
|
public ?string $icon = null,
|
|
public bool $isActive = false
|
|
) {
|
|
}
|
|
|
|
public static function fromArray(array $data): self
|
|
{
|
|
return new self(
|
|
name: $data['name'] ?? '',
|
|
url: $data['url'] ?? '',
|
|
icon: $data['icon'] ?? null,
|
|
isActive: $data['is_active'] ?? false
|
|
);
|
|
}
|
|
|
|
public function toArray(): array
|
|
{
|
|
return [
|
|
'name' => $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);
|
|
}
|
|
}
|