RoleRowSkeleton.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { ChevronUp } from 'lucide-react'
  2. import { cn } from 'ui'
  3. import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader'
  4. export interface RoleRowSkeletonProps {
  5. index?: number
  6. }
  7. export const RoleRowSkeleton = ({ index }: RoleRowSkeletonProps) => {
  8. return (
  9. <div
  10. className={cn([
  11. 'bg-surface-100',
  12. 'data-open:bg-selection',
  13. 'border-default',
  14. 'data-open:border-strong',
  15. 'data-open:pb-px col-span-12 mx-auto',
  16. '-space-y-px overflow-hidden',
  17. 'border border-t-0 first:border-t first:mt-0! shadow-sm transition',
  18. 'first:rounded-tl first:rounded-tr',
  19. 'last:rounded-bl last:rounded-br',
  20. ])}
  21. >
  22. <div className="flex w-full items-center justify-between rounded-sm py-3 px-6 text-foreground">
  23. <div className="flex items-start space-x-3">
  24. <ChevronUp
  25. id="collapsible-trigger"
  26. className="text-border-stronger rotate-180"
  27. strokeWidth={2}
  28. width={14}
  29. />
  30. <div className="space-x-2 flex items-center">
  31. <ShimmeringLoader className="h-4 w-20 py-0 my-0.5" delayIndex={index} />
  32. <ShimmeringLoader className="h-4 w-16 py-0 my-0.5" delayIndex={index} />
  33. </div>
  34. </div>
  35. <ShimmeringLoader className="h-4 w-[90px] py-0 my-0.5" delayIndex={index} />
  36. </div>
  37. </div>
  38. )
  39. }