{"_id":"@commerce-atoms/pagination","_rev":"3-6f9926d2a1e2b67d0431be7674db0b07","name":"@commerce-atoms/pagination","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"@commerce-atoms/pagination","version":"0.0.1","keywords":["shopify","hydrogen","pagination","ecommerce","utilities","offset"],"author":{"name":"Commerce Atoms"},"license":"MIT","_id":"@commerce-atoms/pagination@0.0.1","maintainers":[{"name":"doctor.undefined","email":"contact@soundefined.com"}],"homepage":"https://github.com/commerce-atoms/shoppy/tree/main/packages/pagination","bugs":{"url":"https://github.com/commerce-atoms/shoppy/issues"},"dist":{"shasum":"0d8aeac9ab54225cef0cf72e2a848bd096a7ed3e","tarball":"https://registry.npmjs.org/@commerce-atoms/pagination/-/pagination-0.0.1.tgz","fileCount":15,"integrity":"sha512-G2iyGK/4Hw5DUBJpzbvhmCKm1PwX6qfrWeZjcASiCp/bkuzJDbnlIUyV/6Wkaau8Hvr/AiedzhJsJIl7z2pzlw==","signatures":[{"sig":"MEUCIQDr7DkudgSnjgXKAcJQSxM2/rJ92U2b4K+pHQA8+bwJmwIgMP9iyvoVyObdsfomWI3X2Jcl2YxW3WaJ4iIyFpmlQkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@commerce-atoms%2fpagination@0.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9157},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./package.json":"./package.json","./types/pageBounds":{"types":"./dist/types/pageBounds.d.ts","import":"./dist/types/pageBounds.js"},"./page/getPageBounds":{"types":"./dist/page/getPageBounds.d.ts","import":"./dist/page/getPageBounds.js"},"./types/offsetWindow":{"types":"./dist/types/offsetWindow.d.ts","import":"./dist/types/offsetWindow.js"},"./types/paginationMeta":{"types":"./dist/types/paginationMeta.d.ts","import":"./dist/types/paginationMeta.js"},"./page/getPaginationMeta":{"types":"./dist/page/getPaginationMeta.d.ts","import":"./dist/page/getPaginationMeta.js"},"./window/getOffsetWindow":{"types":"./dist/window/getOffsetWindow.d.ts","import":"./dist/window/getOffsetWindow.js"}},"gitHead":"aad0c0352718bf059706547692bab550e44b087d","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","pack:check":"npm pack --dry-run --silent","prepublishOnly":"npm run build"},"_npmUser":{"name":"doctor.undefined","email":"contact@soundefined.com"},"repository":{"url":"git+https://github.com/commerce-atoms/shoppy.git","type":"git","directory":"packages/pagination"},"_npmVersion":"10.9.4","description":"Pure pagination math helpers for Shopify storefronts","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pagination_0.0.1_1766431524946_0.07167867851791243","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@commerce-atoms/pagination","version":"0.0.2","keywords":["shopify","hydrogen","pagination","ecommerce","utilities","offset"],"author":{"name":"Commerce Atoms"},"license":"MIT","_id":"@commerce-atoms/pagination@0.0.2","maintainers":[{"name":"doctor.undefined","email":"contact@soundefined.com"}],"homepage":"https://github.com/commerce-atoms/shoppy/tree/main/packages/pagination","bugs":{"url":"https://github.com/commerce-atoms/shoppy/issues"},"dist":{"shasum":"2b19eb11bc4e32b4af3dbf41ccf0d889279a973a","tarball":"https://registry.npmjs.org/@commerce-atoms/pagination/-/pagination-0.0.2.tgz","fileCount":15,"integrity":"sha512-XcgBYXWTz7+ijS/4dIMQeO7nw6Br4x/qmpPhEDHIjU0q0PWM7jQh0TsypmBb3yTzNDKflKdOPxD+gekSYL9V8g==","signatures":[{"sig":"MEQCIBSTGlTHURDI5sCMxPRf56D9jW6rhjX3GTiqbP580LN/AiApzDs7vjHpeHmv81APNEOWCxuJI8xNQ8ZDvFV+7rP1Zg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@commerce-atoms%2fpagination@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9157},"type":"module","engines":{"node":">=18.0.0"},"exports":{"./package.json":"./package.json","./types/pageBounds":{"types":"./dist/types/pageBounds.d.ts","import":"./dist/types/pageBounds.js"},"./page/getPageBounds":{"types":"./dist/page/getPageBounds.d.ts","import":"./dist/page/getPageBounds.js"},"./types/offsetWindow":{"types":"./dist/types/offsetWindow.d.ts","import":"./dist/types/offsetWindow.js"},"./types/paginationMeta":{"types":"./dist/types/paginationMeta.d.ts","import":"./dist/types/paginationMeta.js"},"./page/getPaginationMeta":{"types":"./dist/page/getPaginationMeta.d.ts","import":"./dist/page/getPaginationMeta.js"},"./window/getOffsetWindow":{"types":"./dist/window/getOffsetWindow.d.ts","import":"./dist/window/getOffsetWindow.js"}},"gitHead":"c8d7b03c7ec07aca93250f377e5da0bbc4090d29","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","pack:check":"npm pack --dry-run --silent","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd9b6c83-2a73-4a59-886e-cdd273ff9096"}},"repository":{"url":"git+https://github.com/commerce-atoms/shoppy.git","type":"git","directory":"packages/pagination"},"_npmVersion":"11.7.0","description":"Pure pagination math helpers for Shopify storefronts","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pagination_0.0.2_1766434568723_0.29847775697427026","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@commerce-atoms/pagination","version":"0.0.3","description":"Pure pagination math helpers for Shopify storefronts","type":"module","sideEffects":false,"keywords":["shopify","hydrogen","pagination","ecommerce","utilities","offset"],"author":{"name":"Commerce Atoms"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/commerce-atoms/shoppy.git","directory":"packages/pagination"},"homepage":"https://github.com/commerce-atoms/shoppy/tree/main/packages/pagination","bugs":{"url":"https://github.com/commerce-atoms/shoppy/issues"},"publishConfig":{"access":"public","provenance":true},"exports":{"./package.json":"./package.json","./page/getPageBounds":{"types":"./dist/page/getPageBounds.d.ts","import":"./dist/page/getPageBounds.js"},"./page/getPaginationMeta":{"types":"./dist/page/getPaginationMeta.d.ts","import":"./dist/page/getPaginationMeta.js"},"./window/getOffsetWindow":{"types":"./dist/window/getOffsetWindow.d.ts","import":"./dist/window/getOffsetWindow.js"},"./types/pageBounds":{"types":"./dist/types/pageBounds.d.ts","import":"./dist/types/pageBounds.js"},"./types/paginationMeta":{"types":"./dist/types/paginationMeta.d.ts","import":"./dist/types/paginationMeta.js"},"./types/offsetWindow":{"types":"./dist/types/offsetWindow.d.ts","import":"./dist/types/offsetWindow.js"}},"dependencies":{},"engines":{"node":">=18.0.0"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","test":"vitest run","pack:check":"npm pack --dry-run --silent","prepublishOnly":"npm run build"},"gitHead":"cb71c4946a520552b92a61c1cf54fe03eefdd1c6","_id":"@commerce-atoms/pagination@0.0.3","_nodeVersion":"22.21.1","_npmVersion":"11.7.0","dist":{"integrity":"sha512-t0foiC2Bo1USH/zqlN6TfIlAOutjor7PJKVGDfBhcDcu/Iv/zNN3dD9eVNAZ8+nGYxY7JAnPLmNb4AijlbqFUw==","shasum":"4d9b861bc145c882cc6f5d9fa359f42c5544f5b0","tarball":"https://registry.npmjs.org/@commerce-atoms/pagination/-/pagination-0.0.3.tgz","fileCount":15,"unpackedSize":9157,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@commerce-atoms%2fpagination@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEJoULcZYPaay+xF0MZHFXvf2Wzlw2J+xUXgfILJ62C2AiEA0keo8YWSjGtiVR0pGw4O22iqEeUHKIXZC0gJY19SCvo="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd9b6c83-2a73-4a59-886e-cdd273ff9096"}},"directories":{},"maintainers":[{"name":"doctor.undefined","email":"contact@soundefined.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pagination_0.0.3_1766434702838_0.5736563638437966"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-22T19:25:24.830Z","modified":"2025-12-22T20:18:23.454Z","0.0.1":"2025-12-22T19:25:25.160Z","0.0.2":"2025-12-22T20:16:08.888Z","0.0.3":"2025-12-22T20:18:23.035Z"},"bugs":{"url":"https://github.com/commerce-atoms/shoppy/issues"},"author":{"name":"Commerce Atoms"},"license":"MIT","homepage":"https://github.com/commerce-atoms/shoppy/tree/main/packages/pagination","keywords":["shopify","hydrogen","pagination","ecommerce","utilities","offset"],"repository":{"type":"git","url":"git+https://github.com/commerce-atoms/shoppy.git","directory":"packages/pagination"},"description":"Pure pagination math helpers for Shopify storefronts","maintainers":[{"name":"doctor.undefined","email":"contact@soundefined.com"}],"readme":"# @commerce-atoms/pagination\n\n**Pure pagination math helpers for Shopify storefronts.**\n\n## Purpose\n\nProvides UI-agnostic utilities for pagination calculations:\n\n- Compute page bounds (`start`, `end` indices)\n- Generate pagination metadata (total pages, current page, has next/previous)\n- Calculate offset windows for pagination\n\n## Non-goals\n\nThis package explicitly does **NOT**:\n\n- ❌ Provide pagination UI components (`<Paginator />`)\n- ❌ Fetch products or data from Shopify\n- ❌ Manage React state or routing\n- ❌ Include route-based pagination logic\n\n## API\n\n### Core Functions\n\n```typescript\n// Get page bounds (array indices)\nimport { getPageBounds } from \"@commerce-atoms/pagination/page/getPageBounds\";\n\nconst bounds = getPageBounds(100, 10, 2);\n// Returns: {start: 10, end: 20}\n\n// Get pagination metadata\nimport { getPaginationMeta } from \"@commerce-atoms/pagination/page/getPaginationMeta\";\n\nconst meta = getPaginationMeta(100, 10, 2);\n// Returns: {totalPages: 10, currentPage: 2, hasNext: true, hasPrevious: true}\n\n// Get offset window (for offset-based pagination)\nimport { getOffsetWindow } from \"@commerce-atoms/pagination/window/getOffsetWindow\";\n\nconst window = getOffsetWindow(100, { afterOffset: 5, first: 10 });\n// Returns: {start: 6, end: 16, direction: 'forward'}\n```\n\n## Types\n\n```typescript\nimport type { PageBounds } from \"@commerce-atoms/pagination/types/pageBounds\";\nimport type { PaginationMeta } from \"@commerce-atoms/pagination/types/paginationMeta\";\nimport type { OffsetWindow } from \"@commerce-atoms/pagination/types/offsetWindow\";\n```\n","readmeFilename":"README.md"}