import { MetadataRoute } from 'next';
import { api } from '@/lib/api';

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3000';
  
  // Static routes
  const routes = [
    '',
    '/products',
    '/categories',
    '/special-offers',
    '/contact',
    '/support',
  ].map((route) => ({
    url: `${baseUrl}${route}`,
    lastModified: new Date(),
    changeFrequency: 'daily' as const,
    priority: 0.8,
  }));

  try {
    // Dynamic Product Routes
    const productsRes = await api.getProducts({ limit: 100 });
    const productRoutes = (productsRes.data || []).map((product) => ({
      url: `${baseUrl}/product/${product.id}`, // or slug if available
      lastModified: new Date(product.updated_at || new Date()),
      changeFrequency: 'weekly' as const,
      priority: 0.6,
    }));

    // Dynamic Category Routes
    const categoriesRes = await api.getCategories();
    const categoryRoutes = (categoriesRes.data || []).map((category) => ({
      url: `${baseUrl}/category/${category.id}`, // or slug if available
      lastModified: new Date(category.updated_at || new Date()),
      changeFrequency: 'weekly' as const,
      priority: 0.7,
    }));

    return [...routes, ...categoryRoutes, ...productRoutes];
  } catch (error) {
    // Fallback to static routes if API fails during build
    return routes;
  }
}
