41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
|
import React from "react";
|
||
|
|
||
|
import { SkeletonText } from "../";
|
||
|
import { ShellSubHeading } from "../Shell";
|
||
|
|
||
|
function SkeletonLoader({ className }: { className?: string }) {
|
||
|
return (
|
||
|
<>
|
||
|
<ShellSubHeading title={<div className="h-6 w-32 rounded-sm bg-gray-100" />} {...{ className }} />
|
||
|
<ul className="-mx-4 animate-pulse divide-y divide-neutral-200 rounded-sm border border-gray-200 bg-white sm:mx-0 sm:overflow-hidden">
|
||
|
<SkeletonItem />
|
||
|
<SkeletonItem />
|
||
|
<SkeletonItem />
|
||
|
</ul>
|
||
|
</>
|
||
|
);
|
||
|
}
|
||
|
|
||
|
export default SkeletonLoader;
|
||
|
|
||
|
function SkeletonItem() {
|
||
|
return (
|
||
|
<li className="group flex w-full items-center justify-between p-3">
|
||
|
<div className="flex-grow truncate text-sm">
|
||
|
<div className="flex justify-start space-x-2">
|
||
|
<SkeletonText width="10" height="10" />
|
||
|
<div className="space-y-2">
|
||
|
<SkeletonText height="4" width="32" />
|
||
|
<SkeletonText height="4" width="16" />
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div className="mt-4 hidden flex-shrink-0 sm:mt-0 sm:ml-5 lg:flex">
|
||
|
<div className="flex justify-between space-x-2 rtl:space-x-reverse">
|
||
|
<SkeletonText width="32" height="11" />
|
||
|
</div>
|
||
|
</div>
|
||
|
</li>
|
||
|
);
|
||
|
}
|