vue3-flashcards
Version:
Tinder-like flashcards component with dragging and flipping
111 lines (85 loc) โข 4.36 kB
Markdown
# Vue 3 Flashcards
<div align="center">
**A Tinder-like flashcards component for Vue 3 with smooth animations and intuitive gestures**
[](https://www.npmjs.com/package/vue3-flashcards)
[](https://www.npmjs.com/package/vue3-flashcards)
[](https://bundlephobia.com/package/vue3-flashcards)
[](https://codecov.io/gh/vad1ym/vue3-flashcards)
[](https://github.com/vad1ym/vue3-flashcards/blob/main/LICENSE)
[**๐ Documentation**](https://vad1ym.github.io/vue3-flashcards) โข [**๐ฎ Examples**](https://vad1ym.github.io/vue3-flashcards/examples) โข [**๐ Getting Started**](https://vad1ym.github.io/vue3-flashcards/guide/getting-started) โข [**โถ๏ธ Interactive Demo**](https://vad1ym.github.io/vue3-flashcards/interactive-demo.html)
</div>
---
## โจ 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
```bash
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):
```vue
<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](https://vad1ym.github.io/vue3-flashcards/guide/getting-started)** โ install and build your first deck
- **[Essentials](https://vad1ym.github.io/vue3-flashcards/essentials/)** โ swipe directions, card content, events, actions, flip cards
- **[Advanced](https://vad1ym.github.io/vue3-flashcards/advanced/)** โ stacks, loop mode, drag limits, custom transforms & transitions, virtual rendering
- **[Examples](https://vad1ym.github.io/vue3-flashcards/examples/)** โ Tinder-style, flip cards, custom actions, and more
- **[API Reference](https://vad1ym.github.io/vue3-flashcards/api/flashcards)** โ every prop, slot, event, and method
- **[Migrating to v2](https://vad1ym.github.io/vue3-flashcards/guide/migrating-to-v2)** โ upgrading from v1 / v0.x
Using Nuxt or want global defaults? See [Installation](https://vad1ym.github.io/vue3-flashcards/guide/installation) for the Vue plugin and Nuxt module.
## License
[MIT](./LICENSE) ยฉ vad1ym