Getting started
Lunia DS
A motion-first design system for Next.js and Nuxt. Each component moves to explain what changed, and stays still when the user asks for less motion.
What you get
- React components for Next.js and Vue components for Nuxt, with the same classes and the same motion.
- Tailwind CSS v4 classes on Lunia tokens, generated from the Figma variables. Light and dark modes.
- Motion in plain CSS: transitions, keyframes and tokens for duration and easing. No animation library.
- A spec for every component: props, motion table and accessibility notes.
- You own the code. The CLI copies the files into your app, and you can change them.
76 components are ready now. More arrive in batches.
Quick start
In a Next.js or Nuxt app that uses Tailwind CSS v4, set up Lunia DS once:
$ npx @ganisigit/lunia-ds initThen add components by name:
$ npx @ganisigit/lunia-ds add buttonMotion rules
All components follow the same seven rules.
- Opacity settles before movement.
- Exits take about half the time of the entrance and use ease-exit.
- Content waits for its container, 60 to 120ms.
- Things grow from the place the user touched.
- Nothing scales from 0, and distances stay small.
- State changes use transitions, so they can stop halfway. Keyframes are only for enter, leave and loops.
- Every motion has a reduced-motion result: the state changes, nothing moves.