NPM Version Badge - Svelte Shields

Props #

- packageName
- tag
- style
- logo
- logoColor
- logoSize
- label
- labelColor
- color
- cacheSeconds
- link
- class: classname
- ...attributes

Types #

import type { HTMLImgAttributes } from 'svelte/elements';

export type LinkType = string[] | [string, string];
export interface BaseBadgePropsType {
  style?: 'flat' | 'flat-square' | 'for-the-badge' | 'plastic' | 'social';
  logo?: string | undefined | null;
  logoColor?: string | undefined | null;
  logoSize?: string | undefined | null;
  label?: string | undefined | null;
  labelColor?: string | undefined | null;
  color?: string | undefined | null;
  cacheSeconds?: string | undefined | null;
  link?: LinkType;
  class?: string | undefined | null;
}
interface ExtendedStyle extends BaseBadgePropsType, HTMLImgAttributes {
  style?: 'flat' | 'flat-square' | 'for-the-badge' | 'plastic' | 'social';
}
export interface NpmVersionPropsType extends ExtendedStyle {
  packageName: string;
  tag?: string;
}

Examples #

Basic usage #

packageName may be the name of an unscoped package like package-name or a scoped package like @author/package-name.

tag can be next, v1, v2, beta, etc.

NPM version of flowbite-svelte-icons NPM version of flowbite-svelte-icons
<script lang="ts">
  import { NpmVersion } from 'svelte-shields'
  import type { NpmVersionPropsType } from 'svelte-shields';
  
  const basic: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
  }
  const basic2: NpmVersionPropsType = {
    packageName: 'flowbite-svelte-icons',
    tag: 'next'
  }
</script>

<NpmVersion {...basic} />
<NpmVersion {...basic2} />

Style #

Possible values: flat, flat-square, plastic, for-the-badge, social. If not specified, the default style for this badge is "flat".

NPM version of svelte-5-ui-lib NPM version of svelte-5-ui-lib NPM version of svelte-5-ui-lib NPM version of svelte-5-ui-lib NPM version of svelte-5-ui-lib
<script lang="ts">
  import { NpmVersion } from 'svelte-shields'
  import type { NpmVersionPropsType } from 'svelte-shields';

  const style1: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    style: 'flat',
  }
  const style2: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    style: 'flat-square',
  }
  const style3: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    style: 'for-the-badge',
  }
  const style4: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    style: 'plastic',
  }
  const style5: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    style: 'social',
  } 
</script>

<NpmVersion {...style1} />
<NpmVersion {...style2} />
<NpmVersion {...style3} />
<NpmVersion {...style4} />
<NpmVersion {...style5} />

Color #

Background color of the right part (hex, rgb, rgba, hsl, hsla and css named colors supported).

NPM version of svelte-5-ui-lib NPM version of svelte-5-ui-lib NPM version of svelte-5-ui-lib NPM version of svelte-5-ui-lib NPM version of svelte-5-ui-lib NPM version of svelte-5-ui-lib
<script lang="ts">
  import { NpmVersion } from 'svelte-shields'
  import type { NpmVersionPropsType } from 'svelte-shields';

  const color1: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    color: 'green'
  }

  const color2: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    color: '00FF00' 
  }

  const color3: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    color: 'rgb(0, 255, 0)' 
  }

  const color4: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    color: 'rgba(0, 255, 0, 1)' 
  }

  const color5: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    color: 'hsl(120, 100%, 50%)' 
  }

  const color6: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    color: 'hsla(120, 100%, 50%, 1)' 
  }
</script>

<NpmVersion {...color1} />
<NpmVersion {...color2} />
<NpmVersion {...color3} />
<NpmVersion {...color4} />
<NpmVersion {...color5} />
<NpmVersion {...color6} />

Logo & Label #

NPM version of svelte NPM version of flowbite-svelte-icons
<script lang="ts">
  import { NpmVersion } from 'svelte-shields'
  import type { NpmVersionPropsType } from 'svelte-shields';
  const logo_label: NpmVersionPropsType = {
    packageName: 'svelte',
    logo: 'svelte',
    label: 'SVELTE'
  }
</script>

<NpmVersion {...logo_label} />

Link #

Specify what clicking on the left/right of a badge should do.

<script lang="ts">
  import { NpmVersion } from 'svelte-shields'
  import type { NpmVersionPropsType } from 'svelte-shields';

  const link: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    label: 'Svelte 5 UI Library',
    link: ['https://svelte-5-ui-lib.codewithshin.com', 'https://github.com/shinokada/svelte-5-ui-lib']
  }
</script>

<NpmVersion {...link} />

Other #

cacheSeconds is HTTP cache lifetime (rules are applied to infer a default value on a per-badge basis, any values specified below the default will be ignored).

NPM version of svelte-5-ui-lib
<script lang="ts">
  import { NpmVersion } from 'svelte-shields'
  import type { NpmVersionPropsType } from 'svelte-shields';
  const other: NpmVersionPropsType = {
    packageName: 'svelte-5-ui-lib',
    cacheSeconds: '86400',
  }
</script>

<NpmVersion {...other} />