// App constants
export const APP_NAME = '🎤 Karaoke App';
export const APP_VERSION = '1.0.0';
export const CONTROLLER_NAME = import.meta.env.VITE_CONTROLLER_NAME || 'default';

// Firebase configuration
export const FIREBASE_CONFIG = {
  // These will be replaced with environment variables
  apiKey: import.meta.env.VITE_FIREBASE_API_KEY || 'your-api-key',
  authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN || 'your-project-id.firebaseapp.com',
  databaseURL: import.meta.env.VITE_FIREBASE_DATABASE_URL || 'https://your-project-id-default-rtdb.firebaseio.com',
  projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID || 'your-project-id',
  storageBucket: import.meta.env.VITE_FIREBASE_STORAGE_BUCKET || 'your-project-id.appspot.com',
  messagingSenderId: import.meta.env.VITE_FIREBASE_MESSAGING_SENDER_ID || '123456789',
  appId: import.meta.env.VITE_FIREBASE_APP_ID || 'your-app-id',
};

// UI constants
export const UI_CONSTANTS = {
  TOAST_DURATION: {
    SUCCESS: 3000,
    ERROR: 5000,
    INFO: 3000,
  },
  SEARCH: {
    DEBOUNCE_DELAY: 300,
    MIN_SEARCH_LENGTH: 2,
  },
  PAGINATION: {
    ITEMS_PER_PAGE: 20,
  },
  QUEUE: {
    MAX_ITEMS: 100,
  },
  HISTORY: {
    MAX_ITEMS: 50,
  },
  TOP_PLAYED: {
    MAX_ITEMS: 20,
  },
} as const;

// Route constants
export const ROUTES = {
  HOME: '/',
  SEARCH: '/',
  QUEUE: '/queue',
  HISTORY: '/history',
  TOP_PLAYED: '/top-played',
} as const;

// Player states
export const PLAYER_STATES = {
  PLAYING: 'Playing',
  PAUSED: 'Paused',
  STOPPED: 'Stopped',
} as const;

// Error messages
export const ERROR_MESSAGES = {
  CONTROLLER_NOT_FOUND: 'Controller not found',
  NETWORK_ERROR: 'Network error. Please check your connection.',
  UNAUTHORIZED: 'You are not authorized to perform this action.',
  SONG_NOT_FOUND: 'Song not found',
  QUEUE_FULL: 'Queue is full',
  FIREBASE_ERROR: 'Firebase operation failed',
} as const;

// Success messages
export const SUCCESS_MESSAGES = {
  SONG_ADDED_TO_QUEUE: 'Song added to queue',
  SONG_REMOVED_FROM_QUEUE: 'Song removed from queue',
  SONG_ADDED_TO_FAVORITES: 'Song added to favorites',
  SONG_REMOVED_FROM_FAVORITES: 'Song removed from favorites',
  QUEUE_REORDERED: 'Queue reordered',
} as const;

// Feature flags
export const FEATURES = {
  ENABLE_SEARCH: true,
  ENABLE_QUEUE_REORDER: true,
  ENABLE_FAVORITES: true,
  ENABLE_HISTORY: true,
  ENABLE_TOP_PLAYED: true,
  ENABLE_ADMIN_CONTROLS: true,
} as const;

import { 
  add, 
  trash, 
  close, 
  ban, 
  checkmark,
  searchOutline,
  musicalNotesOutline,
  peopleCircleOutline,
  peopleOutline,
  starOutline,
  heart,
  heartOutline,
  timeOutline,
  listOutline,
  settingsOutline,
  play,
  playOutline,
  pause,
  pauseOutline,
  stop,
  stopOutline,
  reorderThreeOutline,
  reorderTwoOutline,
  informationCircle,
  logOut,
  micOutline,
  time,
  list
} from 'ionicons/icons';

// Icon constants for better type safety and autocomplete
export const Icons = {
  // Action icons
  ADD: add,
  TRASH: trash,
  CLOSE: close,
  BAN: ban,
  CHECKMARK: checkmark,
  
  // Navigation icons
  SEARCH: searchOutline,
  MUSIC_NOTES: musicalNotesOutline,
  PEOPLE: peopleCircleOutline,
  PEOPLE_OUTLINE: peopleOutline,
  STAR: starOutline,
  HEART: heart,
  HEART_OUTLINE: heartOutline,
  TIME: timeOutline,
  LIST: listOutline,
  SETTINGS: settingsOutline,
  
  // Player controls
  PLAY: play,
  PLAY_OUTLINE: playOutline,
  PAUSE: pause,
  PAUSE_OUTLINE: pauseOutline,
  STOP: stop,
  STOP_OUTLINE: stopOutline,
  
  // UI icons
  REORDER_THREE: reorderThreeOutline,
  REORDER_TWO: reorderTwoOutline,
  INFORMATION_CIRCLE: informationCircle,
  LOGOUT: logOut,
  MIC: micOutline,
  
  // Status icons
  TIME_SIMPLE: time,
  LIST_SIMPLE: list
} as const;

export type IconType = typeof Icons[keyof typeof Icons]; 