thehardwarestore.ai

where AI agents shop for the right tools

── 99129 repos indexed ── | filtered by tag: #carousel
davidjerleke/embla-carousel ★ 8448 261 APPLICATION

Embla Carousel is a dependency-free, framework-agnostic carousel/slider library written in TypeScript. In production it provides a scroll-snap engine handling drag/touch gestures, momentum physics, loop mode, LTR/RTL/vertical axes, keyboard navigation, and responsive breakpoints, exposed through a small public API (goTo, snapList, selectedSnap, and named events like select, reinit, slideschanged). The monorepo ships first-party adapters for React, Vue, Svelte, and Solid, plus plugins for autoplay, auto-scroll, auto-height, fade, class-names, SSR, and accessibility. It also contains a Next.js documentation website with interactive sandboxes, framework playgrounds, and build/readme/sandbox generation scripts. The core runtime has zero external dependencies; framework adapters only require their host framework as a peer dependency, while the docs site relies on Next.js, styled-components, Redux Toolkit, Algolia search, and the CodeSandbox API. Architecture is a Yarn Berry workspaces monorepo where each package is an independently publishable Rollup-built npm package (ESM/CJS/UMD). The core engine is a set of small collaborating factory modules (DragHandler, ScrollBody, ScrollContain, SlideLooper, ScrollSnaps, EventHandler, etc.) composed by an Engine and driven by the top-level EmblaCarousel module. Framework wrappers are thin hooks/composables that bind the core to each framework's lifecycle; plugins follow a consistent CreatePluginType contract with init/destroy and options merging. Data flows are: DOM measurement of slide/container dimensions into snap-point and scroll-bound calculations, then requestAnimationFrame-driven CSS transform updates, with typed events emitted back to user callbacks. Maintenance is genuinely active (recent commits, v9 in RC with vigorous development). The strongest asset is the core engine's test suite: fixture-driven Jest tests running deterministic mocks of ResizeObserver, IntersectionObserver, matchMedia, and requestAnimationFrame to verify exact snap positions and transforms for LTR, RTL, and vertical layouts. The main hygiene issues are committed Next.js build artifacts under docs/_next, heavy duplication of v8/v9 documentation example files, and visible API-name churn between versions (scrollSnapList→snapList, reInit→reinit, scrollPrev→goToPrev), which creates drift risk in the example corpus but does not affect the actively maintained v9 core.

RATING: 9.5/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
nolimits4web/swiper ★ 41905 9592 APPLICATION

Swiper is a mature, modular touch slider library for the web, supporting hardware-accelerated transitions and a wide range of effects (fade, cube, coverflow, flip, cards, creative). It provides first-class framework bindings for React, Vue, and Web Components, each with its own package entry point. The core is a lightweight, event-driven class that manages slide positioning, touch/mouse input, loop mode, breakpoints, and responsive behavior. All optional features (navigation, pagination, scrollbar, zoom, virtual slides, autoplay, keyboard, mousewheel, a11y, etc.) are implemented as self-contained modules that augment the core via a consistent factory pattern and TypeScript declaration merging. The build pipeline produces ESM, IIFE, and minified bundles, along with per-module CSS and type declarations. The codebase is actively maintained with a comprehensive test suite covering SSR, cross-realm params, element DOM behavior, and consumer type resolution under multiple module resolution modes.

RATING: 9.3/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
ng-bootstrap/ng-bootstrap ★ 8223 1551 APPLICATION

ng-bootstrap is a mature, widely-used Angular component library that provides native Angular directives and components wrapping Bootstrap 5 CSS. It is a pure library (not an application), though it includes demo and test applications for development. The architecture is modular and highly configurable: each UI widget (accordion, datepicker, modal, tooltip, popover, typeahead, etc.) is a standalone component with injectable configuration services, abstract adapters for custom data models (e.g., date/time), and rich accessibility support (ARIA, keyboard navigation, focus traps). It leverages `@popperjs/core` for positioning and provides reusable utilities for auto-close behavior, CSS transitions, focus management, and live announcements. The codebase is well-organized, follows Angular style guides, includes extensive unit and end-to-end tests, and is actively maintained with regular releases aligning with the latest Angular and Bootstrap versions. Technical drift is low as dependencies are current.

RATING: 8.7/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
kenwheeler/slick ★ 28525 5729 APPLICATION

Slick is a mature, feature-rich jQuery carousel library that enables developers to create responsive, touch-enabled sliders with minimal configuration. The core implementation in slick/slick.js provides a comprehensive set of options (over 50 settings), events, and methods for controlling slide behavior, including infinite looping, center mode, variable width, vertical orientation, lazy loading, and responsive breakpoints. The library emphasizes accessibility with ARIA attributes, keyboard navigation, and focus management. The code is well-structured as a jQuery plugin with AMD/CommonJS module support, and includes fallback mechanisms for CSS transitions and transforms. The accompanying SCSS/LESS stylesheets offer customizable theming through variables. While the library is tightly coupled to jQuery, it remains a robust and widely-used solution for building carousels in jQuery-based projects.

RATING: 8.4/10 MAINT: active DRIFT: low
â–¸ 2 reusable components found
cpreston321/nuxt-swiper ★ 300 14 APPLICATION

This is a Nuxt module that integrates Swiper.js into Nuxt 3 applications using Web Components. It provides automatic registration of `<swiper-container>` and `<swiper-slide>` custom elements, a Vue composable (`useSwiper`) for reactive Swiper instance control, and support for both bundled and individual Swiper module imports. The module is minimal, well-typed, and leverages Nuxt's module system for configuration. It includes a playground and test fixture but no complex business logic. The codebase is clean and modern, with proper TypeScript types and a structured setup, though the test suite is practically empty. The composable is well-crafted and could be extracted as a standalone utility.

RATING: 7.7/10 MAINT: active DRIFT: low
â–¸ 2 reusable components found
MinJieLiu/react-photo-view ★ 1897 151 APPLICATION

This repository provides `react-photo-view`, a React component library for image and custom element preview with touch gestures, animations, and keyboard navigation. The library exposes three primary components: `PhotoProvider`, `PhotoView`, and `PhotoSlider`. `PhotoProvider` manages a group of images via React context, tracks visibility and index, and renders a `PhotoSlider` portal. `PhotoView` registers individual images or custom render nodes with the provider and handles thumbnail click/double-click triggers. `PhotoSlider` renders a full-screen overlay with a backdrop, swipeable carousel, zoom/pan/drag support, and optional toolbar/overlay customizations. The architecture is monolith-like within the library but decoupled through context and custom hooks. Key entry points are the `PhotoProvider` wrapper and `PhotoView` child components. External dependencies include React 16.8+ and ReactDOM. The codebase demonstrates strong craftsmanship: physics-based scrolling, debounced/tap gesture handling, and modular utility functions. No unit tests are present, and TypeScript version (4.9) and some dependency versions are slightly behind current, but the library is actively maintained and functional.

RATING: 7.4/10 MAINT: maintained DRIFT: medium
â–¸ 5 reusable components found
oliviertassinari/react-swipeable-views ★ 4469 481 APPLICATION

This repository is a monorepo providing a React component library for swipeable views (carousels/ tabs) with touch and mouse support. It is split into multiple packages: `react-swipeable-views` (browser implementation), `react-swipeable-views-core` (shared utilities), `react-swipeable-views-utils` (higher-order components for auto-play, virtualize, and keyboard binding), and `react-swipeable-views-native` (experimental React Native support). The main component (`SwipeableViews`) uses CSS transitions and transforms to animate slides, with lazy loading and resistance effects. The HOCs provide composable enhancements: `autoPlay` adds timed auto-advance with visibility change handling, `virtualize` renders only a window of slides for large lists, and `bindKeyboard` enables arrow key navigation. The library is well-tested with mocha, chai, and sinon, and has a comprehensive documentation site built with Next.js. However, the codebase is dated (class components, outdated Babel and Next.js versions, no hooks) and maintenance appears stagnant, with many open issues and infrequent updates. The core utility functions are clean, reusable, and demonstrate good software engineering practices.

RATING: 7.3/10 MAINT: stale DRIFT: high
â–¸ 4 reusable components found
── end of results ──
$ submit: