vue3-flashcards

Tinder-like flashcards component with dragging and flipping
60,917 15
Install
npm install vue3-flashcards
Latest Version:2.0.1
Vue:3
License:MIT
Last Updated:Oct 19, 2026
Links: GitHub  ·  npm
Maintainer: vady1m

Vue 3 Flashcards

A Tinder-like flashcards component for Vue 3 with smooth animations and intuitive gestures

NPM Version NPM Downloads Bundle Size Coverage License

📚 Documentation • 🎮 Examples • 🚀 Getting Started • ▶️ Interactive Demo


✨ Features

  • 🎯 Tinder-style swiping — intuitive drag gestures with smooth animations
  • 🔄 Card flipping — two-sided cards with a flip animation
  • ⚡ Zero dependencies — built purely with Vue 3 and CSS
  • 📱 Touch & mouse — works on desktop and mobile
  • 🎨 Bring your own styles — the library ships no CSS for card content; you style it however you like
  • 🔧 Customizable — props, slots, events, custom transforms and animations
  • ♾️ Loop mode, 🃏 stacked cards, ↩️ restore (undo), and ⚙️ virtual rendering for large decks

📦 Installation

npm install vue3-flashcards
# or: yarn add vue3-flashcards · pnpm add vue3-flashcards

🚀 Quick Start

A minimal swipeable deck. The library handles the gestures and animations — you provide the card content and its styling (plain CSS here):

<script setup>
import { ref } from 'vue'
import { FlashCards } from 'vue3-flashcards'

const cards = ref([
  { id: 1, title: 'First Card' },
  { id: 2, title: 'Second Card' },
  { id: 3, title: 'Third Card' },
])

function onSwipeRight(item) {
  console.log('liked', item)
}
function onSwipeLeft(item) {
  console.log('passed', item)
}
</script>

<template>
  <FlashCards
    :items="cards"
    @swipe-right="onSwipeRight"
    @swipe-left="onSwipeLeft"
  >
    <template #default="{ item }">
      <div class="card">
        <h2>{{ item.title }}</h2>
      </div>
    </template>
  </FlashCards>
</template>

<style scoped>
.card {
  width: 300px;
  height: 400px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
}
</style>

That's the whole basic usage. Everything below is optional.

[!NOTE] Styling is up to you. The library provides the swipe / flip / stack mechanics but no visual styles for your card content. The examples use plain CSS; you can use any approach (CSS Modules, UnoCSS, Tailwind, a UI kit, etc.).

📖 Learn more

The full documentation has guides, runnable examples, and the complete API:

  • Getting Started — install and build your first deck
  • Essentials — swipe directions, card content, events, actions, flip cards
  • Advanced — stacks, loop mode, drag limits, custom transforms & transitions, virtual rendering
  • Examples — Tinder-style, flip cards, custom actions, and more
  • API Reference — every prop, slot, event, and method
  • Migrating to v2 — upgrading from v1 / v0.x

Using Nuxt or want global defaults? See Installation for the Vue plugin and Nuxt module.

License

MIT © vad1ym

Related Packages

@reelkit/vue

Vue 3 components and composables for building TikTok/Instagram Reels-style slide...

1,950 43
vue-easy-pull-refresh

Lightweight Vue 3 pull-to-refresh component and composable with touch/mouse gest...

16,765 1
vue-draggable-next

Vue 3 drag-and-drop component based on Sortable.js - Touch-friendly, lightweight...

9,319,923 556
drag-droppable

Lightweight, data-driven, framework-independent drag-and-drop system with touch...

261 0
v-dragged

Vue directive plugin for advanced drag event detection.

42,099 86

Version History

Version Released License
2.0.1 MIT
2.0.0 MIT
1.3.0 MIT
1.2.0 MIT
1.1.0 MIT