JSPM

@reelkit/vue

0.2.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8
  • Score
    100M100P100Q73786F
  • License MIT

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

Package Exports

  • @reelkit/vue
  • @reelkit/vue/package.json

Readme

@reelkit/vue

npm Bundle size Star on GitHub

Vue 3 bindings for @reelkit/core. Drop in a <Reel> component, give it a slide count and an item slot — it handles virtualization, gestures, and keyboard/wheel input. ~4.6 kB gzip.

Live Demo · Open in StackBlitz

Installation

npm install @reelkit/vue

Quick Start

<script setup lang="ts">
import { Reel, ReelIndicator } from '@reelkit/vue';
</script>

<template>
  <Reel :count="100" direction="vertical" enable-wheel>
    <template #item="{ index, size }">
      <div :style="{ width: `${size[0]}px`, height: `${size[1]}px` }">
        Slide {{ index + 1 }}
      </div>
    </template>

    <!-- Auto-connects to parent Reel via context -->
    <ReelIndicator />
  </Reel>
</template>

Features

  • <Reel> — virtualized slider, keeps only 3 slides in the DOM
  • <ReelIndicator> — dot indicators that auto-connect to the parent <Reel> via provide/inject
  • Measures its own size via ResizeObserver — no width/height props needed
  • Swipe with momentum and snap, keyboard arrows, mouse wheel
  • Loop mode for infinite circular scrolling
  • Tree-shakeable transitions (slide, cube, fade, flip, zoom)
  • Full WAI-ARIA carousel accessibility
  • Typed with TypeScript, no @types package needed

API

Reel Props

Prop Type Default Description
count number required Number of slides
direction 'horizontal' | 'vertical' 'vertical' Slide direction
initialIndex number 0 Starting slide index
loop boolean false Enable infinite loop
swipeDistanceFactor number 0.12 Swipe threshold (0-1)
transitionDuration number 300 Animation duration in ms
enableNavKeys boolean true Enable keyboard navigation
enableWheel boolean false Enable mouse wheel navigation
wheelDebounceMs number 200 Wheel debounce duration
enableGestures boolean true Enable touch/mouse gestures
transition TransitionTransformFn slide Transition effect function
size [number, number] auto Explicit [width, height]

Reel Events

Event Payload Description
afterChange index, indexInRange After slide change
beforeChange index, nextIndex, inRange Before slide change
tap GestureCommonEvent Single tap
doubleTap GestureCommonEvent Double tap
longPress GestureCommonEvent Long press detected
longPressEnd GestureEvent Long press released

ReelIndicator Props

Prop Type Default Description
count number context Total number of slides
active number context Currently active slide index
direction 'horizontal' | 'vertical' 'vertical' Dot axis
radius number 3 Dot radius in pixels
visible number 5 Number of visible dots
gap number 4 Space between dots
onDotClick (index) => void - Callback when dot is clicked

Composables

Composable Description
useBodyLock Lock body scroll for overlays
useFullscreen Fullscreen API with cross-browser support
useSoundState Access sound controller from SoundProvider
useReelContext Access parent Reel's index, count, and goTo

Components

Component Description
SwipeToClose Swipe-to-dismiss wrapper for overlays
SoundProvider Provides shared sound mute/unmute state

Documentation

API reference, demos, and guides at reelkit.dev.

Support

If ReelKit saved you some time, a star on GitHub would mean a lot — it's a small thing, but it really helps the project get noticed.

Star on GitHub

License

MIT