UNPKG

react-horizontal-scrolling-menu

Version:

Horizontal scrolling menu component for React with per-item visibility tracking. Supports mouse and touch devices, SSR-safe.

449 lines (448 loc) 12.6 kB
{ "name": "react-horizontal-scrolling-menu", "version": "8.3.0", "author": { "name": "Aleksandr Smyshliaev", "email": "asmyshlyaev177@gmail.com", "url": "https://asmyshlyaev177.dev" }, "description": "Horizontal scrolling menu component for React with per-item visibility tracking. Supports mouse and touch devices, SSR-safe.", "keywords": [ "front-end", "react", "react-component", "menu", "navigation", "gallery", "horizontal", "horizontal-scroll", "scroll", "scrolling", "scrolling-menu", "carousel", "slider", "swipe", "tabs", "intersection-observer", "typescript", "tanstack-intent" ], "license": "MIT", "type": "module", "main": "dist/index.mjs", "browser": "dist/index.mjs", "module": "dist/index.mjs", "unpkg": "dist/index.cjs", "types": "dist/types/index.d.ts", "repository": { "type": "git", "url": "git+https://github.com/asmyshlyaev177/react-horizontal-scrolling-menu.git" }, "homepage": "https://react-horizontal-scrolling-menu.dev", "funding": { "type": "patreon", "url": "https://patreon.com/asmyshlyaev177" }, "bugs": { "url": "https://github.com/asmyshlyaev177/react-horizontal-scrolling-menu/issues" }, "exports": { ".": { "types": "./dist/types/index.d.ts", "browser": "./dist/index.mjs", "module": "./dist/index.mjs", "import": "./dist/index.mjs", "umd": "./dist/index.cjs", "require": "./dist/index.cjs" }, "./dist/styles.css": "./dist/styles.css", "./styles.css": "./dist/styles.css" }, "typesVersions": { "*": { "*": [ "dist/types/" ] } }, "devEngines": { "runtime": { "name": "node", "version": ">=24", "onFail": "warn" } }, "lint-staged": { "*.{js,jsx,ts,tsx,mjs,cjs}": [ "eslint --fix --no-warn-ignored", "prettier --write" ], "*.{html,css,less,ejs,json,md,yml,yaml}": [ "prettier --write" ] }, "scripts": { "test:unit": "wireit", "test:e2e": "wireit", "test:e2e:dev": "wireit", "test:storybook": "wireit", "test:storybook-ci": "wireit", "test": "wireit", "test:lint": "wireit", "run:e2e": "wireit", "dev": "wireit", "kill-rollup": "wireit", "build": "wireit", "demo": "wireit", "serve": "wireit", "release": "wireit", "pub": "wireit", "push": "wireit", "beta": "npm version premajor --preid=beta", "beta:bump": "npm version prerelease", "beta:pub": "npm run build && npm publish --tag beta", "reinstall": "npm run cleanup && npm run setup", "install-deps": "wireit", "install-example-deps": "wireit", "setup-tooling": "wireit", "setup": "npm install && npm run setup-tooling", "cleanup": "rm -rf node_modules example-nextjs/node_modules example-tanstack/node_modules .wireit dist", "storybook": "wireit", "storybook:static": "wireit", "build-storybook": "wireit", "prepack": "npm run build", "prepare": "husky", "release:preflight": "wireit", "deploy": "cd website && npm run deploy", "preview": "cd website && npm run preview", "serve-tanstack": "wireit", "demo-tanstack": "wireit", "install-example-tanstack-deps": "wireit" }, "wireit": { "build-storybook": { "command": "storybook build", "dependencies": [ "build", "setup-tooling" ] }, "storybook": { "command": "storybook dev -p 6006 --no-open", "service": { "readyWhen": { "lineMatches": "localhost:6006" } }, "dependencies": [ "build", "setup-tooling" ] }, "storybook:static": { "command": "http-server storybook-static -p 6007 -c-1 -s", "service": true, "dependencies": [ "build-storybook", "setup-tooling" ] }, "test:storybook-ci": { "command": "npx wait-on -l -t 120000 --httpTimeout 10000 http://127.0.0.1:6007 && test-storybook --browsers firefox chromium webkit --url http://127.0.0.1:6007", "dependencies": [ "storybook:static", "setup-tooling" ] }, "test:storybook": { "command": "npx wait-on -l -t 120000 --httpTimeout 10000 http://127.0.0.1:6007 && test-storybook --browsers firefox chromium --url http://127.0.0.1:6007", "dependencies": [ "storybook:static", "setup-tooling" ] }, "release:preflight": { "command": "sh -eu -c 'branch=$(git rev-parse --abbrev-ref HEAD); [ \"$branch\" = master ] || { echo \"Refusing to release from $branch; releases are cut from master.\" >&2; exit 1; }; [ -z \"$(git status --porcelain)\" ] || { echo \"Refusing to release with a dirty working tree; commit or stash first.\" >&2; git status --short >&2; exit 1; }; git fetch --quiet origin master; [ \"$(git rev-parse HEAD)\" = \"$(git rev-parse origin/master)\" ] || { echo \"Local master is not in sync with origin/master; pull or push first.\" >&2; exit 1; }'" }, "release": { "command": "commit-and-tag-version --no-verify", "dependencies": [ "release:preflight", "test:lint", "test" ] }, "pub": { "command": "npm run release && npm run push && npm publish", "dependencies": [ "build" ] }, "push": { "command": "git push --follow-tags origin HEAD" }, "test": { "command": "npm run test:e2e && npm run test:e2e:dev", "dependencies": [ "test:unit", "test:storybook" ] }, "test:lint": { "command": "eslint src e2e playwright.config.ts website/src && prettier --check src e2e playwright.config.ts website/src && tsc --noEmit && tsc --noEmit -p tsconfig.e2e.json", "dependencies": [ "setup-tooling" ] }, "test:unit": { "command": "jest", "dependencies": [ "setup-tooling" ] }, "test:e2e": { "command": "npm run run:e2e", "dependencies": [ "serve", "serve-tanstack" ] }, "test:e2e:dev": { "command": "npm run run:e2e", "dependencies": [ "demo", "demo-tanstack" ] }, "kill-rollup": { "command": "ps aux | grep rollup | grep -v grep | awk '{print $2}' | xargs kill -9 || echo 'killed'" }, "run:e2e": { "command": "npx wait-on -l -t 300000 --httpTimeout 10000 http://localhost:3003 http://localhost:3004 && playwright test", "dependencies": [ "install:playwright" ] }, "dev": { "command": "cross-env IS_DEVELOPMENT=true rollup -c rollup.config.js -w", "service": true, "dependencies": [ "setup-tooling", "kill-rollup" ] }, "demo": { "command": "cd example-nextjs && npm run dev", "service": true, "dependencies": [ "dev" ] }, "serve": { "command": "cd example-nextjs && npm run build && npm run serve 1> /dev/null", "service": true, "dependencies": [ "build" ] }, "install-deps": { "command": "if [ -d node_modules/.pnpm ]; then pnpm install; else npm install; fi", "allowUsuallyExcludedPaths": true, "clean": false, "files": [ "package.json", "package-lock.json" ], "output": [ "node_modules" ] }, "install:playwright": { "command": "npx playwright install chromium firefox webkit", "clean": false, "files": [ "package.json" ], "output": [], "dependencies": [ "install-deps" ] }, "install-example-deps": { "command": "cd example-nextjs && if [ -d node_modules/.pnpm ]; then pnpm install; else npm install; fi", "dependencies": [ "install-deps" ], "allowUsuallyExcludedPaths": true, "clean": false, "files": [ "example-nextjs/package.json" ], "output": [ "example-nextjs/node_modules" ] }, "setup-tooling": { "command": "echo 'setup'", "files": [ "package.json" ], "clean": false, "output": [], "dependencies": [ "install-example-deps", "install-example-tanstack-deps", "install:playwright" ] }, "build": { "command": "rollup -c rollup.config.js", "clean": true, "output": [ "dist", "dist/index.cjs", "dist/index.mjs", "dist/types" ], "dependencies": [ "setup-tooling", "kill-rollup" ] }, "install-example-tanstack-deps": { "command": "cd example-tanstack && if [ -d node_modules/.pnpm ]; then pnpm install; else npm install; fi", "dependencies": [ "install-deps" ], "allowUsuallyExcludedPaths": true, "clean": false, "files": [ "example-tanstack/package.json" ], "output": [ "example-tanstack/node_modules" ] }, "serve-tanstack": { "command": "cd example-tanstack && npm run build && npm run serve", "service": true, "dependencies": [ "build" ] }, "demo-tanstack": { "command": "cd example-tanstack && npm run dev", "service": true, "dependencies": [ "dev" ] } }, "browserslist": [ "last 5 Chrome versions", "last 5 ChromeAndroid versions", "last 5 Firefox versions", "last 5 FirefoxAndroid versions", "Firefox ESR", "last 3 Safari major versions", "last 2 iOS major versions" ], "peerDependencies": { "react": ">=16.8", "react-dom": ">=16.8" }, "files": [ "dist", "skills", "!skills/_artifacts" ], "config": { "commitizen": { "path": "cz-conventional-changelog" } }, "commitlint": { "extends": [ "@commitlint/config-conventional" ] }, "devDependencies": { "@commitlint/cli": "^21.2.1", "@commitlint/config-conventional": "^21.2.0", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", "@eslint/js": "^9.39.5", "@formkit/auto-animate": "^0.8.4", "@jest/globals": "^30.4.1", "@playwright/test": "^1.62.0", "@rollup/plugin-commonjs": "^29.0.3", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-terser": "^1.0.0", "@rollup/plugin-typescript": "^12.3.0", "@storybook/addon-docs": "^10.5.5", "@storybook/addon-links": "^10.5.5", "@storybook/react-vite": "^10.5.5", "@storybook/test-runner": "^0.24.4", "@tanstack/intent": "^0.3.6", "@testing-library/jest-dom": "^7.0.0", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@types/jest": "^30.0.0", "@types/node": "^24.13.3", "@types/react": "^19.2.17", "@types/react-dom": "^19.2.3", "browserslist": "^4.28.7", "commit-and-tag-version": "^13.1.2", "commitizen": "^4.3.2", "cross-env": "^10.1.0", "cz": "^1.8.2", "cz-conventional-changelog": "^3.3.0", "eslint": "^9.39.5", "eslint-config-prettier": "^10.1.8", "eslint-plugin-compat": "^7.0.2", "eslint-plugin-jest": "^29.16.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-playwright": "^2.2.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-simple-import-sort": "^14.0.0", "eslint-plugin-sonarjs": "^4.2.0", "eslint-plugin-storybook": "^10.5.5", "eslint-plugin-unused-imports": "^4.4.1", "globals": "^17.8.0", "http-server": "^14.1.1", "husky": "^9.1.7", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", "lint-staged": "^17.2.0", "normalize.css": "^8.0.1", "prettier": "^3.9.6", "react": "^19.2.8", "react-dom": "^19.2.8", "react-markdown": "^10.1.0", "remark-gfm": "^4.0.1", "rollup": "^4.62.3", "rollup-plugin-filesize": "^10.0.0", "rollup-plugin-ignore": "^1.0.10", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-sourcemaps2": "^0.5.8", "storybook": "^10.5.5", "storybook-addon-code-editor": "^6.2.0", "ts-jest": "^29.4.12", "tslib": "^2.8.1", "typescript": "^6.0.3", "typescript-eslint": "^8.65.0", "usehooks-ts": "^3.1.1", "vite": "^8.1.5", "wait-on": "^9.1.0", "wireit": "^0.14.13" }, "dependencies": { "smooth-scroll-into-view-if-needed": "^2.0.2" }, "allowScripts": { "@swc/core@1.15.47": true, "esbuild@0.28.1": true, "unrs-resolver@1.12.2": true } }