<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Curated library of Font Awesome 6 Free icons ("solid" style),
 * organized into categories for the icon picker UI.
 */
class UNODOCK_Icons {

	/**
	 * Returns icons grouped by category, e.g. array( 'Category Name' => array( icon-class => translated label, ... ), ... ).
	 */
	public static function get_categories() {
		return array(
			'General & Navigation' => array(
				'fa-house'            => __( 'Home', 'unodock' ),
				'fa-magnifying-glass' => __( 'Search', 'unodock' ),
				'fa-user'             => __( 'User', 'unodock' ),
				'fa-users'            => __( 'Users', 'unodock' ),
				'fa-user-group'       => __( 'User group', 'unodock' ),
				'fa-gear'             => __( 'Settings', 'unodock' ),
				'fa-sliders'          => __( 'Adjustments', 'unodock' ),
				'fa-list'             => __( 'List', 'unodock' ),
				'fa-bars'             => __( 'Menu', 'unodock' ),
				'fa-table-cells'      => __( 'Grid', 'unodock' ),
				'fa-star'             => __( 'Star', 'unodock' ),
				'fa-bookmark'         => __( 'Saved', 'unodock' ),
				'fa-tag'              => __( 'Tag', 'unodock' ),
				'fa-calendar'         => __( 'Calendar', 'unodock' ),
				'fa-clock'            => __( 'Clock', 'unodock' ),
				'fa-stopwatch'        => __( 'Stopwatch', 'unodock' ),
				'fa-circle-info'      => __( 'Info', 'unodock' ),
				'fa-circle-question'  => __( 'Help', 'unodock' ),
				'fa-circle-check'     => __( 'Check (circle)', 'unodock' ),
				'fa-circle-xmark'     => __( 'Close (circle)', 'unodock' ),
				'fa-triangle-exclamation' => __( 'Warning', 'unodock' ),
				'fa-share-nodes'      => __( 'Share', 'unodock' ),
				'fa-link'             => __( 'Link', 'unodock' ),
				'fa-filter'           => __( 'Filter', 'unodock' ),
				'fa-flag'             => __( 'Flag', 'unodock' ),
				'fa-thumbtack'        => __( 'Pin', 'unodock' ),
				'fa-location-dot'     => __( 'Location', 'unodock' ),
				'fa-map'              => __( 'Map', 'unodock' ),
				'fa-compass'          => __( 'Compass', 'unodock' ),
				'fa-globe'            => __( 'Global', 'unodock' ),
				'fa-ellipsis'         => __( 'More (dots)', 'unodock' ),
				'fa-expand'           => __( 'Expand', 'unodock' ),
			),

			'Actions & Editing' => array(
				'fa-plus'             => __( 'Add', 'unodock' ),
				'fa-minus'            => __( 'Remove', 'unodock' ),
				'fa-xmark'            => __( 'Close', 'unodock' ),
				'fa-check'            => __( 'Confirm', 'unodock' ),
				'fa-pen'              => __( 'Edit', 'unodock' ),
				'fa-pen-to-square'    => __( 'Edit (box)', 'unodock' ),
				'fa-trash'            => __( 'Delete', 'unodock' ),
				'fa-eraser'           => __( 'Erase', 'unodock' ),
				'fa-scissors'         => __( 'Cut', 'unodock' ),
				'fa-paperclip'        => __( 'Attachment', 'unodock' ),
				'fa-print'            => __( 'Print', 'unodock' ),
				'fa-copy'             => __( 'Copy', 'unodock' ),
				'fa-rotate'           => __( 'Refresh', 'unodock' ),
				'fa-rotate-right'     => __( 'Redo', 'unodock' ),
				'fa-eye'              => __( 'View', 'unodock' ),
				'fa-eye-slash'        => __( 'Hide', 'unodock' ),
				'fa-sort'             => __( 'Sort', 'unodock' ),
				'fa-toggle-on'        => __( 'Toggle on', 'unodock' ),
				'fa-toggle-off'       => __( 'Toggle off', 'unodock' ),
				'fa-ban'              => __( 'Blocked', 'unodock' ),
				'fa-power-off'        => __( 'Power', 'unodock' ),
			),

			'Arrows & Directions' => array(
				'fa-arrow-left'       => __( 'Arrow left', 'unodock' ),
				'fa-arrow-right'      => __( 'Arrow right', 'unodock' ),
				'fa-arrow-up'         => __( 'Arrow up', 'unodock' ),
				'fa-arrow-down'       => __( 'Arrow down', 'unodock' ),
				'fa-arrow-up-right-from-square' => __( 'External link', 'unodock' ),
				'fa-chevron-up'       => __( 'Chevron up', 'unodock' ),
				'fa-chevron-down'     => __( 'Chevron down', 'unodock' ),
				'fa-chevron-left'     => __( 'Chevron left', 'unodock' ),
				'fa-chevron-right'    => __( 'Chevron right', 'unodock' ),
				'fa-up-down-left-right' => __( 'Move', 'unodock' ),
				'fa-reply'            => __( 'Reply', 'unodock' ),
				'fa-share'            => __( 'Forward', 'unodock' ),
			),

			'Faces & Reactions' => array(
				'fa-face-smile'       => __( 'Smile', 'unodock' ),
				'fa-face-frown'       => __( 'Frown', 'unodock' ),
				'fa-thumbs-up'        => __( 'Like', 'unodock' ),
				'fa-thumbs-down'      => __( 'Dislike', 'unodock' ),
				'fa-heart'            => __( 'Favorites', 'unodock' ),
				'fa-heart-crack'      => __( 'Heartbroken', 'unodock' ),
				'fa-fire-flame-curved' => __( 'Trending', 'unodock' ),
			),

			'Files & Media' => array(
				'fa-file'             => __( 'File', 'unodock' ),
				'fa-file-lines'       => __( 'Document', 'unodock' ),
				'fa-file-pdf'         => __( 'PDF', 'unodock' ),
				'fa-file-image'       => __( 'Image file', 'unodock' ),
				'fa-file-video'       => __( 'Video file', 'unodock' ),
				'fa-folder'           => __( 'Folder', 'unodock' ),
				'fa-folder-open'      => __( 'Folder open', 'unodock' ),
				'fa-download'         => __( 'Download', 'unodock' ),
				'fa-upload'           => __( 'Upload', 'unodock' ),
				'fa-image'            => __( 'Image', 'unodock' ),
				'fa-camera'           => __( 'Camera', 'unodock' ),
				'fa-video'            => __( 'Video', 'unodock' ),
				'fa-film'             => __( 'Film', 'unodock' ),
				'fa-tv'               => __( 'TV', 'unodock' ),
				'fa-music'            => __( 'Music', 'unodock' ),
				'fa-headphones'       => __( 'Audio', 'unodock' ),
				'fa-microphone'       => __( 'Microphone', 'unodock' ),
				'fa-volume-high'      => __( 'Volume', 'unodock' ),
				'fa-volume-xmark'     => __( 'Mute', 'unodock' ),
				'fa-book'             => __( 'Book', 'unodock' ),
				'fa-newspaper'        => __( 'News', 'unodock' ),
				'fa-play'             => __( 'Play', 'unodock' ),
				'fa-pause'            => __( 'Pause', 'unodock' ),
				'fa-forward'          => __( 'Forward (media)', 'unodock' ),
				'fa-backward'         => __( 'Backward (media)', 'unodock' ),
			),

			'Communication' => array(
				'fa-envelope'         => __( 'Messages', 'unodock' ),
				'fa-inbox'            => __( 'Inbox', 'unodock' ),
				'fa-paper-plane'      => __( 'Send', 'unodock' ),
				'fa-phone'            => __( 'Phone', 'unodock' ),
				'fa-phone-volume'     => __( 'Call', 'unodock' ),
				'fa-comment'          => __( 'Comment', 'unodock' ),
				'fa-comments'         => __( 'Comments', 'unodock' ),
				'fa-bell'             => __( 'Notifications', 'unodock' ),
				'fa-bullhorn'         => __( 'Announcement', 'unodock' ),
				'fa-rss'              => __( 'RSS', 'unodock' ),
				'fa-at'               => __( 'Mention', 'unodock' ),
				'fa-hashtag'          => __( 'Hashtag', 'unodock' ),
			),

			'Security & Account' => array(
				'fa-lock'             => __( 'Locked', 'unodock' ),
				'fa-unlock'           => __( 'Unlocked', 'unodock' ),
				'fa-key'              => __( 'Key', 'unodock' ),
				'fa-fingerprint'      => __( 'Fingerprint', 'unodock' ),
				'fa-shield-halved'    => __( 'Security', 'unodock' ),
				'fa-user-shield'      => __( 'Protected account', 'unodock' ),
				'fa-id-card'          => __( 'ID card', 'unodock' ),
				'fa-id-badge'         => __( 'Badge', 'unodock' ),
				'fa-user-plus'        => __( 'Add user', 'unodock' ),
				'fa-user-minus'       => __( 'Remove user', 'unodock' ),
				'fa-user-tie'         => __( 'Account (formal)', 'unodock' ),
			),

			'Money & Shopping' => array(
				'fa-cart-shopping'    => __( 'Cart', 'unodock' ),
				'fa-bag-shopping'     => __( 'Shopping bag', 'unodock' ),
				'fa-basket-shopping'  => __( 'Basket', 'unodock' ),
				'fa-credit-card'      => __( 'Payment', 'unodock' ),
				'fa-wallet'           => __( 'Wallet', 'unodock' ),
				'fa-money-bill'       => __( 'Money', 'unodock' ),
				'fa-money-bill-wave'  => __( 'Cash', 'unodock' ),
				'fa-coins'            => __( 'Coins', 'unodock' ),
				'fa-sack-dollar'      => __( 'Savings', 'unodock' ),
				'fa-piggy-bank'       => __( 'Piggy bank', 'unodock' ),
				'fa-percent'          => __( 'Discount', 'unodock' ),
				'fa-receipt'          => __( 'Receipt', 'unodock' ),
				'fa-gift'             => __( 'Gift', 'unodock' ),
				'fa-ticket'           => __( 'Ticket', 'unodock' ),
				'fa-truck'            => __( 'Delivery', 'unodock' ),
				'fa-truck-fast'       => __( 'Express delivery', 'unodock' ),
				'fa-box'              => __( 'Box', 'unodock' ),
				'fa-store'            => __( 'Store', 'unodock' ),
				'fa-warehouse'        => __( 'Warehouse', 'unodock' ),
			),

			'Awards & Achievements' => array(
				'fa-crown'            => __( 'Crown', 'unodock' ),
				'fa-medal'            => __( 'Medal', 'unodock' ),
				'fa-trophy'           => __( 'Trophy', 'unodock' ),
				'fa-award'            => __( 'Award', 'unodock' ),
				'fa-certificate'      => __( 'Certificate', 'unodock' ),
				'fa-gem'              => __( 'Gem', 'unodock' ),
				'fa-ranking-star'     => __( 'Ranking', 'unodock' ),
				'fa-fire'             => __( 'Popular', 'unodock' ),
			),

			'Food & Drink' => array(
				'fa-utensils'         => __( 'Restaurant', 'unodock' ),
				'fa-mug-hot'          => __( 'Hot drink', 'unodock' ),
				'fa-mug-saucer'       => __( 'Coffee', 'unodock' ),
				'fa-pizza-slice'      => __( 'Pizza', 'unodock' ),
				'fa-burger'           => __( 'Burger', 'unodock' ),
				'fa-ice-cream'        => __( 'Ice cream', 'unodock' ),
				'fa-cake-candles'     => __( 'Cake', 'unodock' ),
				'fa-apple-whole'      => __( 'Fruit', 'unodock' ),
				'fa-carrot'           => __( 'Vegetable', 'unodock' ),
				'fa-bread-slice'      => __( 'Bread', 'unodock' ),
				'fa-wine-glass'       => __( 'Wine', 'unodock' ),
				'fa-beer-mug-empty'   => __( 'Beer', 'unodock' ),
			),

			'Travel & Transport' => array(
				'fa-plane'            => __( 'Flight', 'unodock' ),
				'fa-plane-departure'  => __( 'Departure', 'unodock' ),
				'fa-car'              => __( 'Car', 'unodock' ),
				'fa-taxi'             => __( 'Taxi', 'unodock' ),
				'fa-bus'              => __( 'Bus', 'unodock' ),
				'fa-train'            => __( 'Train', 'unodock' ),
				'fa-bicycle'          => __( 'Bicycle', 'unodock' ),
				'fa-motorcycle'       => __( 'Motorcycle', 'unodock' ),
				'fa-ship'             => __( 'Ship', 'unodock' ),
				'fa-anchor'           => __( 'Anchor', 'unodock' ),
				'fa-gas-pump'         => __( 'Fuel', 'unodock' ),
				'fa-road'             => __( 'Road', 'unodock' ),
				'fa-signs-post'       => __( 'Directions', 'unodock' ),
				'fa-suitcase'         => __( 'Suitcase', 'unodock' ),
				'fa-hotel'            => __( 'Hotel', 'unodock' ),
				'fa-bed'              => __( 'Bed', 'unodock' ),
				'fa-umbrella-beach'   => __( 'Beach', 'unodock' ),
				'fa-campground'       => __( 'Camping', 'unodock' ),
			),

			'Nature & Weather' => array(
				'fa-sun'              => __( 'Sun', 'unodock' ),
				'fa-moon'             => __( 'Moon', 'unodock' ),
				'fa-cloud'            => __( 'Cloud', 'unodock' ),
				'fa-cloud-rain'       => __( 'Rain', 'unodock' ),
				'fa-bolt'             => __( 'Lightning', 'unodock' ),
				'fa-snowflake'        => __( 'Snow', 'unodock' ),
				'fa-wind'             => __( 'Wind', 'unodock' ),
				'fa-temperature-high' => __( 'Hot', 'unodock' ),
				'fa-water'            => __( 'Water', 'unodock' ),
				'fa-tree'             => __( 'Tree', 'unodock' ),
				'fa-leaf'             => __( 'Leaf', 'unodock' ),
				'fa-seedling'         => __( 'Growth', 'unodock' ),
				'fa-mountain'         => __( 'Mountain', 'unodock' ),
				'fa-recycle'          => __( 'Recycle', 'unodock' ),
				'fa-solar-panel'      => __( 'Solar energy', 'unodock' ),
				'fa-earth-americas'   => __( 'Earth', 'unodock' ),
			),

			'Buildings & Places' => array(
				'fa-building'         => __( 'Company', 'unodock' ),
				'fa-city'             => __( 'City', 'unodock' ),
				'fa-industry'         => __( 'Industry', 'unodock' ),
				'fa-hospital'         => __( 'Hospital', 'unodock' ),
				'fa-school'           => __( 'School', 'unodock' ),
				'fa-church'           => __( 'Church', 'unodock' ),
				'fa-landmark'         => __( 'Landmark', 'unodock' ),
				'fa-warehouse'        => __( 'Warehouse', 'unodock' ),
			),

			'Business & Work' => array(
				'fa-briefcase'        => __( 'Work', 'unodock' ),
				'fa-graduation-cap'   => __( 'Education', 'unodock' ),
				'fa-address-book'     => __( 'Contacts', 'unodock' ),
				'fa-chart-bar'        => __( 'Bar chart', 'unodock' ),
				'fa-chart-line'       => __( 'Line chart', 'unodock' ),
				'fa-chart-pie'        => __( 'Pie chart', 'unodock' ),
				'fa-people-group'     => __( 'Community', 'unodock' ),
				'fa-handshake'        => __( 'Deal', 'unodock' ),
				'fa-clipboard'        => __( 'Clipboard', 'unodock' ),
				'fa-sitemap'          => __( 'Org chart', 'unodock' ),
				'fa-building-columns' => __( 'Institution', 'unodock' ),
				'fa-file-invoice'     => __( 'Invoice', 'unodock' ),
				'fa-calculator'       => __( 'Calculator', 'unodock' ),
				'fa-bullseye'         => __( 'Goal', 'unodock' ),
			),

			'Technology' => array(
				'fa-wifi'             => __( 'Wi-Fi', 'unodock' ),
				'fa-signal'           => __( 'Signal', 'unodock' ),
				'fa-battery-full'     => __( 'Battery', 'unodock' ),
				'fa-plug'             => __( 'Plug', 'unodock' ),
				'fa-lightbulb'        => __( 'Idea', 'unodock' ),
				'fa-desktop'          => __( 'Desktop', 'unodock' ),
				'fa-laptop'           => __( 'Laptop', 'unodock' ),
				'fa-mobile-screen'    => __( 'Mobile', 'unodock' ),
				'fa-keyboard'         => __( 'Keyboard', 'unodock' ),
				'fa-server'           => __( 'Server', 'unodock' ),
				'fa-database'         => __( 'Database', 'unodock' ),
				'fa-code'             => __( 'Code', 'unodock' ),
				'fa-terminal'         => __( 'Terminal', 'unodock' ),
				'fa-bug'              => __( 'Bug', 'unodock' ),
				'fa-microchip'        => __( 'Chip', 'unodock' ),
				'fa-robot'            => __( 'Robot', 'unodock' ),
				'fa-satellite-dish'   => __( 'Satellite dish', 'unodock' ),
				'fa-print'            => __( 'Printer', 'unodock' ),
				'fa-cloud-arrow-up'   => __( 'Cloud upload', 'unodock' ),
				'fa-gamepad'          => __( 'Gaming', 'unodock' ),
				'fa-dice'             => __( 'Dice', 'unodock' ),
			),

			'Sports & Fitness' => array(
				'fa-futbol'           => __( 'Soccer', 'unodock' ),
				'fa-basketball'       => __( 'Basketball', 'unodock' ),
				'fa-baseball'         => __( 'Baseball', 'unodock' ),
				'fa-volleyball'       => __( 'Volleyball', 'unodock' ),
				'fa-dumbbell'         => __( 'Fitness', 'unodock' ),
				'fa-person-running'   => __( 'Running', 'unodock' ),
				'fa-person-biking'    => __( 'Cycling', 'unodock' ),
				'fa-person-swimming'  => __( 'Swimming', 'unodock' ),
				'fa-medal'            => __( 'Medal (sport)', 'unodock' ),
				'fa-stopwatch-20'     => __( 'Timer', 'unodock' ),
			),

			'Health & Medical' => array(
				'fa-heart-pulse'      => __( 'Heart rate', 'unodock' ),
				'fa-pills'            => __( 'Medicine', 'unodock' ),
				'fa-syringe'          => __( 'Vaccine', 'unodock' ),
				'fa-stethoscope'      => __( 'Health', 'unodock' ),
				'fa-tooth'            => __( 'Dental', 'unodock' ),
				'fa-brain'            => __( 'Mind', 'unodock' ),
				'fa-dna'              => __( 'DNA', 'unodock' ),
				'fa-microscope'       => __( 'Science', 'unodock' ),
				'fa-flask'            => __( 'Lab', 'unodock' ),
				'fa-bandage'          => __( 'First aid', 'unodock' ),
				'fa-wheelchair'       => __( 'Accessibility', 'unodock' ),
			),

			'Animals' => array(
				'fa-paw'              => __( 'Pets', 'unodock' ),
				'fa-dog'              => __( 'Dog', 'unodock' ),
				'fa-cat'              => __( 'Cat', 'unodock' ),
				'fa-fish'             => __( 'Fish', 'unodock' ),
				'fa-dove'             => __( 'Dove', 'unodock' ),
				'fa-bug'              => __( 'Insect', 'unodock' ),
			),

			'Family & People' => array(
				'fa-baby'             => __( 'Baby', 'unodock' ),
				'fa-child'            => __( 'Child', 'unodock' ),
				'fa-children'         => __( 'Children', 'unodock' ),
				'fa-person'           => __( 'Person', 'unodock' ),
				'fa-hands-praying'    => __( 'Prayer', 'unodock' ),
				'fa-hand-holding-heart' => __( 'Care', 'unodock' ),
				'fa-ring'             => __( 'Ring', 'unodock' ),
			),

			'Tools & Construction' => array(
				'fa-wrench'           => __( 'Wrench', 'unodock' ),
				'fa-hammer'           => __( 'Hammer', 'unodock' ),
				'fa-toolbox'          => __( 'Toolbox', 'unodock' ),
				'fa-ruler'            => __( 'Ruler', 'unodock' ),
				'fa-helmet-safety'    => __( 'Safety helmet', 'unodock' ),
				'fa-hard-drive'       => __( 'Storage', 'unodock' ),
				'fa-screwdriver-wrench' => __( 'Tools', 'unodock' ),
			),

			'Home & Furniture' => array(
				'fa-couch'            => __( 'Sofa', 'unodock' ),
				'fa-chair'            => __( 'Chair', 'unodock' ),
				'fa-lightbulb'        => __( 'Light', 'unodock' ),
				'fa-broom'            => __( 'Cleaning', 'unodock' ),
				'fa-shower'           => __( 'Shower', 'unodock' ),
				'fa-kitchen-set'      => __( 'Kitchen', 'unodock' ),
				'fa-door-open'        => __( 'Door', 'unodock' ),
				'fa-key'              => __( 'House key', 'unodock' ),
				'fa-box-open'         => __( 'Unboxing', 'unodock' ),
			),

			'Clothing & Beauty' => array(
				'fa-shirt'            => __( 'Shirt', 'unodock' ),
				'fa-shoe-prints'      => __( 'Shoes', 'unodock' ),
				'fa-glasses'          => __( 'Glasses', 'unodock' ),
				'fa-spray-can-sparkles' => __( 'Beauty', 'unodock' ),
				'fa-scissors'         => __( 'Salon', 'unodock' ),
				'fa-gem'              => __( 'Jewelry', 'unodock' ),
			),

			'Charts & Data' => array(
				'fa-chart-column'     => __( 'Column chart', 'unodock' ),
				'fa-gauge'            => __( 'Gauge', 'unodock' ),
				'fa-arrow-trend-up'   => __( 'Trending up', 'unodock' ),
				'fa-arrow-trend-down' => __( 'Trending down', 'unodock' ),
				'fa-percentage'       => __( 'Percentage', 'unodock' ),
				'fa-list-check'       => __( 'Checklist', 'unodock' ),
				'fa-layer-group'      => __( 'Layers', 'unodock' ),
			),

			'Time & Calendar' => array(
				'fa-calendar-check'   => __( 'Scheduled', 'unodock' ),
				'fa-calendar-plus'    => __( 'Add event', 'unodock' ),
				'fa-calendar-week'    => __( 'Week view', 'unodock' ),
				'fa-hourglass-half'   => __( 'In progress', 'unodock' ),
				'fa-alarm-clock'      => __( 'Alarm', 'unodock' ),
			),
		);
	}

	/**
	 * Flat list of all icons (icon => label), used for validation.
	 * Cached statically so repeated calls within the same request
	 * don't re-flatten the ~300-icon category list every time.
	 */
	public static function get_list() {
		static $flat = null;

		if ( null === $flat ) {
			$flat = array();
			foreach ( self::get_categories() as $icons ) {
				$flat = array_merge( $flat, $icons );
			}
		}

		return $flat;
	}

	public static function is_valid( $icon ) {
		return array_key_exists( $icon, self::get_list() );
	}
}
