npm.io
0.1.0 • Published yesterday

@skelia/vue

Licence
MIT
Version
0.1.0
Deps
1
Size
7 kB
Vulns
0
Weekly
0

@skelia/vue

Vue components for building skeleton loading states with Skelia.

@skelia/vue is a small typed component layer over @skelia/core. It keeps styling in the shared CSS system while giving Vue apps component primitives for common skeleton shapes.

Installation

npm install @skelia/vue

@skelia/vue has a peer dependency on Vue and supports Vue 3.

Usage

Import the stylesheet once from your application entry point:

import "@skelia/vue/styles.css";

Then compose skeletons with Vue components and core utility classes:

<script setup lang="ts">
import { Skeleton, SkeletonAvatar, SkeletonLine } from "@skelia/vue";
</script>

<template>
  <section aria-busy="true">
    <span class="sk-sr-only">Loading profile</span>

    <Skeleton>
      <div class="sk-row">
        <SkeletonAvatar />

        <div class="sk-stack sk-flex-1">
          <SkeletonLine class="sk-w-40" />
          <SkeletonLine class="sk-w-70" />
        </div>
      </div>
    </Skeleton>
  </section>
</template>

Components

Component Purpose
Skeleton Root wrapper with animation prop
SkeletonLine Text line placeholder
SkeletonBox Generic rectangle placeholder
SkeletonCircle Generic circle placeholder
SkeletonAvatar Avatar placeholder

Skeleton renders a div by default and sets aria-hidden="true" on the visual skeleton. Use the as prop to render another element:

<Skeleton as="li" animation="wave">
  <div class="sk-row">
    <SkeletonAvatar />
    <SkeletonLine class="sk-flex-1" />
  </div>
</Skeleton>

Available animation values:

shimmer pulse wave none

Styling

Use core utility classes through class:

<SkeletonBox class="sk-ratio-16-9 sk-rounded-xl" />
<SkeletonLine class="sk-w-60 sk-h-lg" />
<SkeletonCircle class="sk-size-lg" />

The Vue stylesheet includes the CSS from @skelia/core, so utilities such as sk-row, sk-stack, sk-w-70, and sk-rounded-xl work the same way in Vue.

Accessibility

Skeleton components are visual placeholders. Put aria-busy="true" on the loading region, add short loading text with sk-sr-only, and leave the visual Skeleton hidden with its default aria-hidden="true".

Documentation

Full documentation: https://github.com/nasrul21/skelia#readme

License

MIT