v1.0.0.1
StocketBase
- <?php
-
- declare(strict_types=1);
-
- final class Icons
- {
- private static ?string $spriteMarkup = null;
-
- public static function sprite(): string
- {
- if (self::$spriteMarkup !== null) {
- return self::$spriteMarkup;
- }
-
- $path = __DIR__ . '/../assets/icons.svg';
- self::$spriteMarkup = is_file($path) ? (string) file_get_contents($path) : '';
-
- return self::$spriteMarkup;
- }
-
- public static function icon(string $name, string $class = 'icon'): string
- {
- $safeName = preg_replace('/[^a-z0-9-]/', '', $name);
- $safeClass = htmlspecialchars($class, ENT_QUOTES);
-
- return '<svg class="' . $safeClass . '" aria-hidden="true"><use href="#icon-' . $safeName . '"></use></svg>';
- }
-
- public static function navIconKeys(): array
- {
- return [
- 'home' => 'Home',
- 'star' => 'Star',
- 'bell' => 'Bell',
- 'mail' => 'Mail',
- 'phone' => 'Phone',
- 'globe' => 'Globe',
- 'bookmark' => 'Bookmark',
- 'info' => 'Info',
- 'help' => 'Help',
- 'grid' => 'Grid',
- 'search' => 'Search',
- 'user' => 'User',
- 'flag' => 'Flag',
- 'hash' => 'Hash / tag',
- 'external' => 'External link',
- 'list' => 'List',
- 'image' => 'Image',
- 'video' => 'Video',
- 'calendar' => 'Calendar',
- 'clock' => 'Clock',
- 'map-pin' => 'Map pin',
- 'briefcase' => 'Briefcase',
- 'camera' => 'Camera',
- 'gift' => 'Gift',
- 'heart' => 'Heart',
- 'message' => 'Message',
- 'megaphone' => 'Megaphone',
- 'shield' => 'Shield',
- 'cart' => 'Cart',
- 'rss' => 'RSS',
- ];
- }
-
- public static function isNavIcon(string $key): bool
- {
- return array_key_exists($key, self::navIconKeys());
- }
- }
-