@reelkit/react
Advanced tools
+3
-1
| { | ||
| "name": "@reelkit/react", | ||
| "version": "0.1.1", | ||
| "version": "0.1.2", | ||
| "type": "module", | ||
@@ -19,2 +19,4 @@ "sideEffects": false, | ||
| "dist", | ||
| "!dist/package.json", | ||
| "!dist/README.md", | ||
| "!**/*.tsbuildinfo" | ||
@@ -21,0 +23,0 @@ ], |
| ## 0.1.0 (2026-03-13) | ||
| ### 🚀 Features | ||
| - video lightbox hook, animated logo, CI/lint/typecheck fixes, funding, and docs overhaul ([29238e5](https://github.com/KonstantinKai/reelkit/commit/29238e5)) | ||
| - add auto-size mode, signal-based resize, lightbox fixes, and docs updates ([55a75e0](https://github.com/KonstantinKai/reelkit/commit/55a75e0)) | ||
| - add lightbox customization, reel player improvements, docs overhaul, and JSDoc ([4c464d3](https://github.com/KonstantinKai/reelkit/commit/4c464d3)) | ||
| - add lightbox, reel player packages, e2e tests, and docs ([ef5c939](https://github.com/KonstantinKai/reelkit/commit/ef5c939)) | ||
| - rename to reelkit and add Instagram-style indicators ([a2c9c87](https://github.com/KonstantinKai/reelkit/commit/a2c9c87)) | ||
| ### 🩹 Fixes | ||
| - correct release manifest paths and docs deploy trigger ([d402dea](https://github.com/KonstantinKai/reelkit/commit/d402dea)) | ||
| ### 🧱 Updated Dependencies | ||
| - Updated @reelkit/core to 0.1.0 | ||
| ### ❤️ Thank You | ||
| - KonstantinKai @KonstantinKai |
| { | ||
| "name": "@reelkit/react", | ||
| "version": "0.1.1", | ||
| "type": "module", | ||
| "sideEffects": false, | ||
| "main": "./dist/index.js", | ||
| "module": "./dist/index.js", | ||
| "types": "./dist/index.d.ts", | ||
| "exports": { | ||
| "./package.json": "./package.json", | ||
| ".": { | ||
| "types": "./dist/index.d.ts", | ||
| "import": "./dist/index.js", | ||
| "default": "./dist/index.js" | ||
| } | ||
| }, | ||
| "files": [ | ||
| "dist", | ||
| "!**/*.tsbuildinfo" | ||
| ], | ||
| "repository": { | ||
| "type": "git", | ||
| "url": "https://github.com/KonstantinKai/reelkit.git", | ||
| "directory": "packages/reelkit-react" | ||
| }, | ||
| "bugs": "https://github.com/KonstantinKai/reelkit/issues", | ||
| "homepage": "https://reelkit.dev", | ||
| "funding": { | ||
| "type": "buymeacoffee", | ||
| "url": "https://buymeacoffee.com/konstantinkai" | ||
| }, | ||
| "description": "React components and hooks for building TikTok/Instagram Reels-style sliders", | ||
| "license": "MIT", | ||
| "keywords": [ | ||
| "react", | ||
| "slider", | ||
| "carousel", | ||
| "swipe", | ||
| "virtualized", | ||
| "touch", | ||
| "gesture", | ||
| "mobile", | ||
| "tiktok", | ||
| "reels", | ||
| "vertical-slider", | ||
| "react-component", | ||
| "typescript" | ||
| ], | ||
| "publishConfig": { | ||
| "access": "public" | ||
| }, | ||
| "peerDependencies": { | ||
| "@reelkit/core": "*", | ||
| "react": ">=17.0.0", | ||
| "react-dom": ">=17.0.0" | ||
| } | ||
| } |
| # @reelkit/react | ||
| <p> | ||
| <a href="https://www.npmjs.com/package/@reelkit/react"><img src="https://img.shields.io/npm/v/@reelkit/react?color=6366f1&label=npm" alt="npm" /></a> | ||
| <img src="https://img.shields.io/bundlephobia/minzip/@reelkit/react?color=6366f1" alt="Bundle size" /> | ||
| <a href="https://github.com/KonstantinKai/reelkit"><img src="https://img.shields.io/github/stars/KonstantinKai/reelkit?style=social" alt="Star on GitHub" /></a> | ||
| </p> | ||
| React components and hooks for building TikTok/Instagram Reels-style sliders. Virtualized rendering, touch gestures, keyboard/wheel navigation — all in ~3.4 kB gzip. | ||
| ## Installation | ||
| ```bash | ||
| npm install @reelkit/react | ||
| ``` | ||
| ## Quick Start | ||
| ```tsx | ||
| import { useState } from 'react'; | ||
| import { Reel, ReelIndicator } from '@reelkit/react'; | ||
| function App() { | ||
| const [index, setIndex] = useState(0); | ||
| return ( | ||
| <Reel | ||
| count={100} | ||
| direction="vertical" | ||
| afterChange={setIndex} | ||
| itemBuilder={(i) => ( | ||
| <div style={{ width: '100%', height: '100%' }}>Slide {i + 1}</div> | ||
| )} | ||
| > | ||
| <ReelIndicator count={100} active={index} /> | ||
| </Reel> | ||
| ); | ||
| } | ||
| ``` | ||
| ## Features | ||
| - **`<Reel>`** — virtualized slider component (only 3 slides in DOM) | ||
| - **`<ReelIndicator>`** — Instagram-style position dots | ||
| - **Auto-size** — measures container via ResizeObserver, no explicit size props needed | ||
| - **Touch gestures** — swipe with momentum and snap | ||
| - **Keyboard & wheel** — arrow keys and scroll navigation | ||
| - **Loop mode** — infinite circular scrolling | ||
| - **SSR ready** — works with Next.js, Remix, and any SSR setup | ||
| - **TypeScript** — full type safety | ||
| ## API | ||
| ### Reel Props | ||
| | Prop | Type | Default | Description | | ||
| | --------------------- | ---------------------------- | ------------ | ----------------------------- | | ||
| | `count` | `number` | required | Number of slides | | ||
| | `itemBuilder` | `(index) => ReactElement` | required | Render function for 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 | | ||
| | `useNavKeys` | `boolean` | `true` | Enable keyboard navigation | | ||
| | `enableWheel` | `boolean` | `false` | Enable mouse wheel navigation | | ||
| | `wheelDebounceMs` | `number` | `200` | Wheel debounce duration | | ||
| | `apiRef` | `ref` | - | Ref to access public API | | ||
| | `afterChange` | `(index) => void` | - | Callback after slide change | | ||
| | `beforeChange` | `(index, nextIndex) => void` | - | Callback before slide change | | ||
| ### ReelIndicator Props | ||
| | Prop | Type | Default | Description | | ||
| | ------------ | ----------------- | -------- | ---------------------------- | | ||
| | `count` | `number` | required | Total number of slides | | ||
| | `active` | `number` | required | Currently active slide index | | ||
| | `radius` | `number` | `3` | Dot radius in pixels | | ||
| | `visible` | `number` | `3` | Number of visible dots | | ||
| | `onDotClick` | `(index) => void` | - | Callback when dot is clicked | | ||
| ## Documentation | ||
| Full API reference, interactive demos, and guides at **[reelkit.dev](https://reelkit.dev)**. | ||
| ## License | ||
| [MIT](LICENSE) |
27767
-18.16%9
-25%