Skip to content

Commit 4be9d7e

Browse files
committed
Add Skeleton.tsx
1 parent 46eeb85 commit 4be9d7e

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import {
2+
Skeleton as MuiSkeleton,
3+
type SkeletonProps as MuiSkeletonProps,
4+
} from "@mui/material";
5+
6+
import type { ComponentState } from "@/index";
7+
import type { ReactElement } from "react";
8+
9+
interface SkeletonState extends Omit<ComponentState, "type" | "children"> {
10+
variant?: MuiSkeletonProps["variant"];
11+
width?: MuiSkeletonProps["width"];
12+
height?: MuiSkeletonProps["height"];
13+
animation?: MuiSkeletonProps["animation"];
14+
loading: boolean;
15+
children?: ReactElement;
16+
}
17+
18+
interface SkeletonProps extends SkeletonState {}
19+
20+
export const Skeleton = ({
21+
id,
22+
style,
23+
loading,
24+
children,
25+
...skeletonProps
26+
}: SkeletonProps) => {
27+
return loading && skeletonProps && Object.keys(skeletonProps).length > 0 ? (
28+
<MuiSkeleton
29+
id={id}
30+
style={style}
31+
{...skeletonProps}
32+
data-testid="skeleton-test-id"
33+
/>
34+
) : (
35+
children
36+
);
37+
};

0 commit comments

Comments
 (0)