import {Suspense} from 'react'; import StatsGrid from './StatsGrid'; import TableRow from './TableRow'; import TableHeader from './TableHeader'; import Pagination from './Pagination'; import ActivityItem from './ActivityItem'; import ChartPanel from './ChartPanel'; import Skeleton from './Skeleton'; import {generateProducts, generateActivities, generateStats} from './data'; function fetchData(generator, ...args) { return new Promise(resolve => { setTimeout(() => resolve(generator(...args)), 1); }); } function fetchDelayed(value, delayMs) { return new Promise(resolve => { setTimeout(() => resolve(value), delayMs); }); } async function AsyncStatsSection() { const stats = await fetchData(generateStats); return ; } const productColumns = [ {key: 'name', label: 'Product'}, {key: 'sku', label: 'SKU'}, {key: 'category', label: 'Category'}, {key: 'price', label: 'Price'}, {key: 'stock', label: 'Stock'}, {key: 'status', label: 'Status'}, {key: 'rating', label: 'Rating'}, ]; async function AsyncProductRow({product, delay}) { const resolved = await fetchDelayed(product, delay); return ; } async function AsyncProductSection({itemCount}) { const products = await fetchData(generateProducts, itemCount); return (

Products

{products.length} items
{productColumns.map(col => ( ))} {products.map((product, i) => ( }> ))}
Loading...
); } async function AsyncChartSection() { const stats = await fetchData(generateStats); return ; } async function AsyncActivityItem({activity, delay}) { const resolved = await fetchDelayed(activity, delay); return ( ); } async function AsyncActivitySection({itemCount}) { const activities = await fetchData( generateActivities, Math.min(itemCount, 50) ); return (

Recent Activity

    {activities.map((activity, i) => ( Loading...}> ))}
); } export default function DashboardAsync({itemCount}) { return (

Dashboard Overview

Welcome back. Here is what is happening with your store today.

}>
}>
}> }>
); }