@s-ui/react-atom-skeleton
Version:
Display the loading state of a component while avoiding layout shift
98 lines (70 loc) • 2.95 kB
Markdown
# AtomSkeleton
> Skeleton is used to display the loading state of a component while avoiding layout shift.
[](https://sui-components.vercel.app/workbench/atom/skeleton/)
[](https://github.com/SUI-Components/sui-components/issues/new?&projects=4&template=bug-report.yml&assignees=&template=report-a-bug.yml&title=🪲+&labels=bug,component,atom,skeleton)
[](https://www.npmjs.com/package/@s-ui/react-atom-skeleton)
[](https://github.com/SUI-Components/sui-components/issues?q=is%3Aopen+label%3Acomponent+label%3Askeleton)
[](https://github.com/SUI-Components/sui-components/blob/main/components/atom/skeleton/LICENSE.md)
## Installation
```sh
$ npm install @s-ui/react-atom-skeleton
```
## Usage
### Basic usage
#### Import package and use the component
```js
import AtomSkeleton from '@s-ui/react-atom-skeleton'
return (<AtomSkeleton />)
```
#### Import the styles (Sass)
```css
@import '~@s-ui/theme/lib/index';
@import '~@s-ui/react-atom-skeleton/lib/index';
```
### Variant
Use `variant` prop to shape the skeleton and make it look like the final user interface. Choose between `round`, `square` and `circle`.
```jsx
import AtomSkeleton, {ATOM_SKELETON_VARIANTS} from '@s-ui/react-atom-skeleton'
const VariantStory = () => (
<>
<AtomSkeleton variant={ATOM_SKELETON_VARIANTS.circle} />
<AtomSkeleton variant={ATOM_SKELETON_VARIANTS.round} />
<AtomSkeleton variant={ATOM_SKELETON_VARIANTS.square} />
</>
);
```
### Size
While the `width` and `height` props could be set, it was made to be used directly in your components.
```jsx
import AtomSkeleton from '@s-ui/react-atom-skeleton'
const SizeStory = () => (
<>
<AtomSkeleton height="16px" />
<h2>
<AtomSkeleton />
</h2>
</>
);
```
### Animation
Use `animation` prop to choose between `wave` and `pulse` animation, if the prop is set to `false` the component won't have any.
```jsx
import AtomSkeleton, {ATOM_SKELETON_ANIMATIONS} from '@s-ui/react-atom-skeleton'
const AnimationStory = () => (
<>
<AtomSkeleton animation={ATOM_SKELETON_ANIMATIONS.wave} />
<AtomSkeleton animation={ATOM_SKELETON_ANIMATIONS.pulse} />
<AtomSkeleton animation={false} />
</>
);
```
### Count
Use `count` prop to display several skeletons
```jsx
const CountStory = () => (
<>
<AtomSkeleton count={4} />
</>
);
```
> **Find full description and more examples in the [demo page](#).**