RecentChangesContentSkeleton.tsx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import React, { type JSX } from 'react';
  2. import { Skeleton } from '~/client/components/Skeleton';
  3. import styles from './RecentChangesSubstance.module.scss';
  4. const SkeletonItem = () => {
  5. const isSmall = window.localStorage.isRecentChangesSidebarSmall === 'true';
  6. return (
  7. <li
  8. className={`list-group-item ${styles['list-group-item']} ${isSmall ? 'py-2' : 'py-3'} px-0`}
  9. >
  10. <div className="d-flex w-100">
  11. <Skeleton additionalClass="rounded-circle picture" roundedPill />
  12. <div className="flex-grow-1 ms-2">
  13. <Skeleton
  14. additionalClass={`grw-recent-changes-skeleton-small ${styles['grw-recent-changes-skeleton-small']}`}
  15. />
  16. <Skeleton
  17. additionalClass={`grw-recent-changes-skeleton-h5 ${styles['grw-recent-changes-skeleton-h5']} ${isSmall ? 'my-0' : 'my-2'}`}
  18. />
  19. <div className="d-flex justify-content-end grw-recent-changes-item-lower pt-1">
  20. <Skeleton
  21. additionalClass={`grw-recent-changes-skeleton-date ${styles['grw-recent-changes-skeleton-date']}`}
  22. />
  23. </div>
  24. </div>
  25. </div>
  26. </li>
  27. );
  28. };
  29. const RecentChangesContentSkeleton = (): JSX.Element => {
  30. return (
  31. <div className="grw-recent-changes py-3">
  32. <ul className="list-group list-group-flush">
  33. <SkeletonItem />
  34. <SkeletonItem />
  35. <SkeletonItem />
  36. <li className="list-group-item p-0"></li>
  37. </ul>
  38. </div>
  39. );
  40. };
  41. export default RecentChangesContentSkeleton;