Skip to main content

Skeleton

The skeleton component shows a visual placeholder for an element while it is in a loading state. This is usually presented as a simplified wireframe-like version of the UI that it is representing.

Use cases:

  • providing a placeholder UI element that indicates the actual component that will load in a location (to make the loading process seem smoother to the user)
  • Indicating loading state where a page could take time to load

Example​

The example below displays a rectangular image based on a .SVG file. The shimmer attribute has been used to animate the image.

Declaration

<Skeleton></Skeleton>

Usage

import { Skeleton } from '@genesislcap/rapid-design-system/react';

export function MyComponent() {
return (
<Skeleton shape="rect" pattern="/svg/skeleton-test-pattern.svg" shimmer />
);
}

API​

Attributes​

This table shows attribute binding examples for Genesis Component syntax. The HTML closing tag is not included.

NameTypeDescriptionExample
fillstringIndicates the Skeleton should have a filled style.
<rapid-skeleton fill="context-fill">
shape"circle" | "rect"Indicates what the shape of the Skeleton should be. Default: "rect"
<rapid-skeleton shape="circle">
patternstringA URL for an image asset may be passed to the pattern attribute. In this mode, the rapid-skeleton component is used as a container for a transparent SVG that may express a more complex placeholder.
<rapid-skeleton pattern="file://some-alternate-pattern.svg">
shimmerbooleanActivate the component's shimmer effect.
<rapid-skeleton shimmer>

Properties​

The properties for this component are all controlled via attributes.

Slots​

NameDescription
DefaultAn inline SVG can also be inserted into this default slot

Example:​

<rapid-skeleton shape="rect" shimmer>
<svg id="pattern" width="100%" height="100%">
<defs>
<mask id="mask" x="0" y="0" width="100%" height="100%">
<rect x="0" y="0" width="100%" height="100%" fill="#ffffff"></rect>
<rect x="0" y="0" width="100%" height="45%" rx="4"></rect>
<rect x="25" y="55%" width="90%" height="15px" rx="4"></rect>
<rect x="25" y="65%" width="70%" height="15px" rx="4"></rect>
<rect x="25" y="80%" width="90px" height="30px" rx="4"></rect>
</mask>
</defs>
<rect x="0" y="0" width="100%" height="100%" mask="url(#mask)" fill="#ffffff"></rect>
</svg>
</rapid-skeleton>

Parts​

This component doesn't have any parts.

Events fired​

This component doesn't fire any events.

Events listened to​

This component doesn't listen to any events.

Further customisation​

The following CSS variables can be used to customise the appearance.

CSS VariableExpected value
--skeleton-fillColour
--skeleton-animation-fillColour
--skeleton-animation-gradientLinear gradient
--skeleton-animation-timingEasing function