LoadingState.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { useParams } from 'common'
  2. import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader'
  3. import { useProjectDetailQuery } from '@/data/projects/project-detail-query'
  4. export const LoadingState = () => {
  5. const { ref } = useParams()
  6. const { data: project, isPending: isLoading } = useProjectDetailQuery({ ref })
  7. const projectName = ref !== 'default' ? project?.name : 'Welcome to your project'
  8. return (
  9. <div className="w-full mx-auto">
  10. <div className="px-8 border-b">
  11. <div className="max-w-7xl mx-auto flex items-center space-x-6 h-[184px]">
  12. {isLoading ? (
  13. <ShimmeringLoader className="h-9 w-40" />
  14. ) : (
  15. <h1 className="text-3xl">{projectName}</h1>
  16. )}
  17. </div>
  18. </div>
  19. <div className="px-8 py-16">
  20. <div className="max-w-7xl mx-auto">
  21. <ProjectUsageLoadingState />
  22. </div>
  23. </div>
  24. <div className="px-8">
  25. <div className="max-w-7xl mx-auto space-y-4">
  26. <ShimmeringLoader className="w-40 h-7" />
  27. <ShimmeringLoader className="w-full h-32" />
  28. </div>
  29. </div>
  30. </div>
  31. )
  32. }
  33. export const ProjectUsageLoadingState = () => {
  34. return (
  35. <div className="space-y-6">
  36. <ShimmeringLoader className="w-40 h-7" />
  37. <div className="flex flex-col md:flex-row gap-2 md:gap-4">
  38. <ShimmeringLoader className="w-full h-[320px] py-0" />
  39. <ShimmeringLoader className="w-full h-[320px] py-0" />
  40. <ShimmeringLoader className="w-full h-[320px] py-0" />
  41. <ShimmeringLoader className="w-full h-[320px] py-0" />
  42. </div>
  43. </div>
  44. )
  45. }