@joseestevez/vue-elastic-ui

Vue 3 component library built on design tokens and composition
Install
npm install @joseestevez/vue-elastic-ui
Latest Version:0.3.1
Vue:3
License:MIT
Last Updated:Oct 17, 2026
Links: GitHub  ·  npm
Maintainer: joseestevez

elastic-ui

A Vue 3 component library where things transform instead of appearing: a button grows into its dialog, a tab's indicator travels to the next tab, an answer flows in as a wave. Clean, soft and quiet, with one movement leading on each screen.

Built on Vue 3, Tailwind CSS v4, Reka UI and motion-v.

What is in it

Family Parts
Actions Button, CopyButton, ProgressButton, ThemeToggle, ComposeMorph
Forms Input, Textarea, Select, Checkbox, Switch, Filters
Overlays Popover, PopoverMorph, Menu, Tooltip, DialogMorph, CommandPalette, Toast, SelectionMenu
Disclosure Collapsible, Accordion, Tabs, Steps, ExpandableCard
Navigation Sidebar, NavTree, MorphHeader, Breadcrumbs, TableOfContents, SearchMorph, ScrollIndicator
Content Card, Badge, Callout, AnimatedList, DynamicIsland
Text TextMorph, StatusText, Prose, Markdown
Code CodeBlock, CodeDiff, CodeWalkthrough, TerminalReplay
AI Chat, ChatMorph, Aurora, AgentReplay, ImageReveal

Install

Published on npm as @joseestevez/vue-elastic-ui:

npm install @joseestevez/vue-elastic-ui motion-v

motion-v comes with it because it is a peer dependency; Vue and Tailwind CSS v4 are expected in the project.

The library ships no compiled CSS: the project's Tailwind builds its classes. In its main stylesheet:

@import "tailwindcss";
@import "@joseestevez/vue-elastic-ui/tokens.css";
@source "../node_modules/@joseestevez/vue-elastic-ui/dist";

Then use the parts:

<script setup>
import { Button, PopoverMorph, PopoverMorphItem } from '@joseestevez/vue-elastic-ui'
import { Pencil, Trash2 } from '@lucide/vue'
</script>

<template>
  <PopoverMorph role="menu" label="Actions">
    <template #trigger>Actions</template>
    <PopoverMorphItem :icon="Pencil">Rename</PopoverMorphItem>
    <PopoverMorphItem :icon="Trash2">Delete</PopoverMorphItem>
  </PopoverMorph>
</template>

In your language

Every text the library writes on its own (names for screen readers, placeholders, default titles) can be set once:

import { ElasticUi } from '@joseestevez/vue-elastic-ui'

app.use(ElasticUi, { labels: { copy: 'Copiar', onThisPage: 'En esta página' } })

Themes

Every colour holds both themes through light-dark(), so the theme follows the system. data-theme="light" or "dark" on <html> forces one, and ThemeToggle switches it. Customize from the outside in: global tokens on :root (--color-accent, --radius-md…), then a part's own tokens (--card-radius, --popover-bg…), then variants, then class.

Using it well

  • USAGE.md: the rules for building with it, for people and coding agents alike.
  • DECISIONS.md: how it is made and why.
  • npm run storybook: every part, by family, in every situation that matters.

License

MIT.

Related Packages

iryx-ui

A Vue 3 component library built on Reka UI and Tailwind CSS v4.

5,551 3
@guoyg578/k-ui

可复用的 Vue 3 组件库 (K 前缀),基于 reka-ui (headless) + Tailwind v4 设计令牌。

33,303
ui-thing

CLI used to add Nuxt components to a project

15,227 6
@aezakmiproject/hesoyam

Hesoyam design system — Vue 3 components distributed as Tailwind CSS v4 source,...

551 1
@vuelor/picker

Vue color picker, built with Reka UI and Tailwind CSS.

35,352 36

Version History

Version Released Vue License
0.3.1 ^3.5.0 MIT