$query */ public static function url(string $path = '', array $query = []): string { $path = '/' . ltrim($path, '/'); if ($path !== '/' && str_ends_with($path, '/')) { $path = rtrim($path, '/'); } return $query === [] ? $path : $path . '?' . http_build_query($query); } /** @param array $item */ public static function itemUrl(array $item): string { $slug = (string) ($item['slug'] ?? ''); return ($item['type'] ?? 'post') === 'page' ? self::url($slug) : self::url('post/' . $slug); } public static function asset(string $path): string { return self::url('themes/neon/assets/' . ltrim($path, '/')); } public static function date(string $iso, string $format = 'M j, Y'): string { $time = strtotime($iso); return $time ? date($format, $time) : $iso; } public static function month(string $yearMonth): string { $time = strtotime($yearMonth . '-01'); return $time ? date('F Y', $time) : $yearMonth; } public static function classIf(bool $condition, string $class): string { return $condition ? ' ' . $class : ''; } }