@omicrxn/mercury
v0.6.0
Published
Mercury is a Svelte animation library powered by Motion. It simplifies complex animations with Svelte actions, provides layout and exit animations, and integrates seamlessly with Svelte features.
Downloads
180
Maintainers
Readme
Mercury
Mercury is a Svelte 5 animation library powered by Motion. It brings Framer Motion–style ergonomics to Svelte using attachments and transitions — no wrapper components required.
Animate elements directly, coordinate enter/exit with presence, and handle layout changes with shared-element transitions.
Documentation
Features
- Powered by Motion, including its full easing function set
- Layout animations with shared
layoutIdtransitions (via Anime.js) - Presence animations for mount/unmount with
in:presence/out:presence - Gestures —
whileHover,whileTap, drag, and scroll-triggered animations - Attachment-based API —
{@attach mercury(...)}applies animations directly to DOM elements - Works alongside Svelte transitions, actions, and other DOM features
Requirements
- Svelte 5+
Installation
npm install @omicrxn/mercury
# or
pnpm add @omicrxn/mercury
# or
yarn add @omicrxn/mercuryUsage
Basic animation
<script lang="ts">
import { mercury } from '@omicrxn/mercury';
</script>
<div
class="h-16 w-16 rounded-md bg-blue-300"
{@attach mercury({
animate: { scale: 1.5 },
transition: { ease: 'circInOut', duration: 1 }
})}
></div>Exit animations
<script lang="ts">
import { mercury, presence } from '@omicrxn/mercury';
let show = $state(true);
</script>
{#if show}
<div
class="opacity-0"
{@attach mercury({ animate: { opacity: 1 } })}
out:presence={{ opacity: 0, y: 25, transition: { duration: 0.3 } }}
>
Hello
</div>
{/if}Layout animations
<script lang="ts">
import { layout } from '@omicrxn/mercury';
let justify = $state('start');
const layoutGroup = layout(() => justify, { transition: { duration: 0.4 } });
</script>
<div {@attach layoutGroup} style="justify-content: {justify};">
<div {...layout.props()} class="h-16 w-16 rounded-md bg-blue-300" />
</div>API
| Export | Description |
| ---------- | ----------------------------------------------- |
| mercury | Attachment for animate + gesture interactions |
| layout | Attachment for layout groups + layout.props() |
| presence | Svelte transition for enter/exit animations |
See the API docs for full details.
Acknowledgments
Mercury is built on the shoulders of giants. Special thanks to the creators and maintainers of Svelte, Motion, and Anime.js, and to @Char2sGu for helping integrate layout projections into the library.
License
MIT
