npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@noction/vue-bezier

v2.0.3

Published

A Vue 3 component library with customizable CSS-based transition components featuring Bezier timing functions. Includes fade, dissolve, blur, scale, slide, push, wipe, rotate, zoom, and clip-path transitions.

Readme

@noction/vue-bezier

NPM version NPM downloads codecov

Demo

Install :coffee:

pnpm add @noction/vue-bezier

Local usage :rocket:

<script setup>
import { DissolveTransition } from '@noction/vue-bezier'
import { ref } from 'vue'
import '@noction/vue-bezier/styles'

const show = ref(true)
</script>

<template>
  <DissolveTransition :duration="400">
    <div v-if="show" class="box">
      <p>Dissolve transition</p>
    </div>
  </DissolveTransition>
</template>

Global usage

import Transitions from '@noction/vue-bezier'
import { createApp } from 'vue'
import '@noction/vue-bezier/styles'

const app = createApp(App)
app.use(Transitions)

List of available transitions

Single Element Transitions

  • BlurTransition - Blur effect with opacity
  • ClipPathTransition - Clip path reveal animation
  • DissolveTransition - Fade in/out effect
  • FadeSlideTransition - Combined fade and slide animation
  • PushTransition - Push content in a direction
  • RotateTransition - 3D rotation effect
  • ScaleTransition - Scale up/down animation
  • WipeTransition - Wipe reveal effect
  • ZoomTransition - Zoom in/out animation

List Transitions (TransitionGroup)

  • DissolveListTransition - Fade effect for lists
  • ScaleListTransition - Scale effect for lists

Props

| Prop | Type | Default | Description | | :----------: | ------------------ | :------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | duration | Number, Object | 300 | Transition duration in milliseconds. Number for specifying the same duration for enter/leave transitions. Object style {enter: 300, leave: 300} for specifying explicit durations for enter/leave. | | delay | Number, Object | 0 | Transition delay in milliseconds. Number for specifying the same delay for enter/leave transitions. Object style {enter: 0, leave: 100} for specifying explicit delays for enter/leave. | | tag | String | 'span' | Transition tag for List transitions (TransitionGroup components). | | origin | String | '' | Transform origin property, can be specified with styles as well but it's shorter with this prop. | | styles | Object | {} | Custom CSS styles that are applied during transition. These styles are applied via CSS variables. |

Component-Specific Props

Some transitions have additional props for customization:

ClipPathTransition

| Prop | Type | Default | Description | | :----------: | :----------------------: | :--------: | --------------------------- | | clipType | 'circle' | 'square' | 'circle' | Type of clip path animation |

<ClipPathTransition clip-type="square" :duration="1000">
  <div v-if="show">Content</div>
</ClipPathTransition>

PushTransition

| Prop | Type | Default | Description | | :-----------: | :-----------------------------------------: | :-------: | ---------------------------- | | direction | 'left' | 'right' | 'up' | 'down' | 'right' | Direction of the push effect |

<PushTransition direction="down" :duration="400">
  <div v-if="show">Content</div>
</PushTransition>

ScaleTransition

| Prop | Type | Default | Description | | :--------: | :------: | :----------: | ---------------------------------------- | | origin | String | 'top left' | Transform origin for the scale animation |

<ScaleTransition origin="center" :duration="300">
  <div v-if="show">Content</div>
</ScaleTransition>

List Transitions

For animating lists of elements, use the dedicated List transition components:

<script setup>
import { DissolveListTransition } from '@noction/vue-bezier'
import { ref } from 'vue'
import '@noction/vue-bezier/styles'

const items = ref([1, 2, 3, 4, 5])
</script>

<template>
  <DissolveListTransition :duration="400" tag="div">
    <div v-for="item in items" :key="item" class="item">
      {{ item }}
    </div>
  </DissolveListTransition>
</template>

Important notes:

  1. Elements inside list transitions should have display: inline-block or must be placed in a flex context: Vue.js docs reference
  2. Each list transition has a move class for animating position changes. The move duration defaults to .3s or .35s and cannot be configured via props. To customize, override the CSS class:
/* Example: Custom move duration for DissolveListTransition */
.noc-dissolve-move {
  transition: transform 0.5s ease-out;
}

Customizing Transitions

All CSS classes and custom properties are prefixed with noc- to prevent naming conflicts with other libraries. You can override any transition styles by targeting the specific classes:

/* Override dissolve transition timing */
.noc-dissolve-enter-active {
  transition: opacity 1s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Override blur transition effect */
.noc-blur-enter-from {
  opacity: 0;
  filter: blur(20px); /* Increase blur intensity */
}

/* Override scale list move animation */
.noc-scale-list-move {
  transition: transform 0.8s cubic-bezier(0.25, 0.8, 0.5, 1);
}

Available CSS custom properties:

  • --noc-transition-enter-duration
  • --noc-transition-leave-duration
  • --noc-transition-enter-delay
  • --noc-transition-leave-delay
  • --noc-transform-origin (ScaleTransition)

License

MIT © 50rayn

Special thanks to

@cristijora (The UI for list transitions in the demo is inspired by vue2-transitions )