/**
 * Media Feature — barrel public.
 *
 * API serveur (CRUD, références) exposée aux modules consommateurs.
 * Composant client `MediaPicker` réutilisable depuis tout module externe.
 *
 * Activation : ce module est inerte tant que `ZEN_MEDIA=true` n'est pas défini.
 * - L'enregistrement nav/page est conditionnel (voir navigation.js et la page).
 * - Les fonctions d'API restent importables et opérationnelles si la BD est
 *   initialisée — mais n'auront aucun effet visible dans l'admin tant que le
 *   flag n'est pas activé.
 *
 * Side effects à l'import :
 *   - navigation.js → enregistre l'item sidebar si isMediaEnabled()
 *   - permissions enregistrées via schema.server.js (côté serveur uniquement)
 */

import './navigation.js';

export {
  uploadMedia,
  deleteMedia,
  updateMedia,
  getMediaById,
  getMediaBySlug,
  listMedia,
  countReferences,
  listReferences,
  attachMedia,
  detachMedia,
  detachAllForSource,
  buildMediaUrl,
  classifyMime,
} from './api.server.js';

export { MEDIA_PERMISSIONS, MEDIA_PERMISSION_DEFINITIONS } from './permissions.js';
export { isMediaEnabled } from '@zen/core/shared/config';

// Routes API à enregistrer dans initializeZen.
export { routes } from './routes.server.js';

// DB schema export (utilisé par features/init.js).
export { createTables, dropTables } from './schema.server.js';
