v-surfer
DOM-free headless slider engine with a Vue 3 component kit and Nuxt module
2,647
| Install | |
|---|---|
npm install v-surfer |
|
| Latest Version: | 1.10.0 |
| Vue: | 3 |
| License: | MIT |
| Last Updated: | Aug 22, 2026 |
| Links: | GitHub · npm |
Maintainer: xenossolitarius
v-surfer
A modern Vue 3 touch slider / carousel — a DOM-free slider engine with a Vue-native component API.
Install
npm install v-surfer
Usage
Slides are authored with the Item component:
<script setup>
import { Surfer, Item } from 'v-surfer';
import 'v-surfer/css';
</script>
<template>
<Surfer :slides-per-view="1" :space-between="16">
<Item>Slide 1</Item>
<Item>Slide 2</Item>
<Item>Slide 3</Item>
</Surfer>
</template>
Modules
Opt into a feature by passing its module object to :modules and placing its
component inside the <Surfer>, then import the matching CSS:
<script setup>
import { Surfer, Item, Navigation, Pagination, NavigationModule, PaginationModule } from 'v-surfer';
import 'v-surfer/css';
import 'v-surfer/css/navigation';
import 'v-surfer/css/pagination';
</script>
<template>
<Surfer :modules="[NavigationModule, PaginationModule]">
<Item v-for="n in 5" :key="n">Slide {{ n }}</Item>
<Navigation />
<Pagination :clickable="true" />
</Surfer>
</template>
Nuxt
The Nuxt module auto-registers the components and wires the CSS:
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['v-surfer/nuxt'],
});
License
MIT
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 1.10.0 | ^3.3.0 | MIT | |
| 1.9.0 | ^3.3.0 | MIT | |
| 1.8.0 | ^3.3.0 | MIT | |
| 1.7.0 | ^3.3.0 | MIT | |
| 1.6.0 | ^3.3.0 | MIT | |
| 1.5.0 | ^3.3.0 | MIT | |
| 1.4.0 | ^3.3.0 | MIT | |
| 1.3.1 | ^3.3.0 | MIT | |
| 1.3.0 | ^3.3.0 | MIT | |
| 1.2.0 | ^3.3.0 | MIT | |
| 1.1.0 | ^3.3.0 | MIT | |
| 1.0.0 | ^3.3.0 | MIT |