Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | /** * Products Loading State * * Skeleton UI displayed while product management pages are loading. */ export default function ProductsLoading() { return ( <div className="p-6 space-y-6"> {/* Header skeleton */} <div className="flex justify-between items-center"> <div className="h-8 w-48 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" /> <div className="h-10 w-32 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" /> </div> {/* Filters skeleton */} <div className="flex gap-4"> <div className="h-10 w-64 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" /> <div className="h-10 w-40 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" /> <div className="h-10 w-40 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" /> </div> {/* Table skeleton */} <div className="bg-white dark:bg-gray-800 rounded-lg shadow-sm overflow-hidden"> <div className="h-12 bg-gray-100 dark:bg-gray-700 animate-pulse" /> {[1, 2, 3, 4, 5, 6, 7, 8].map((i) => ( <div key={i} className="h-16 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 animate-pulse" /> ))} </div> {/* Pagination skeleton */} <div className="flex justify-center gap-2"> {[1, 2, 3, 4, 5].map((i) => ( <div key={i} className="h-10 w-10 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" /> ))} </div> </div> ); } |