{"_id":"@billynd/polaris-data-table-views","_rev":"16-a1c2465a0e3a80e6d30abd3f6270f16b","name":"@billynd/polaris-data-table-views","dist-tags":{"latest":"1.3.5"},"versions":{"1.2.3":{"name":"@billynd/polaris-data-table-views","version":"1.2.3","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.2.3","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"6bbc48d30b0186e7b5d843feb0c65e65f39da562","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.2.3.tgz","fileCount":34,"integrity":"sha512-2whCH2wBoZVCAbNNUKCd2ZASap9lmEbg4pwrl3hfZbxPhbl7ePqmV867F2tx9CsWrUtRKg+d2fGFfY8FP/FIbQ==","signatures":[{"sig":"MEYCIQDugtV8YTRZVI0UA20njpzajfuACjJ96MYxN4depLtQSQIhALNftxYCRT4G+Ip5C9b0nZNtbEcvSfbCQy4WBjagRf/g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179240},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"db3b81aeb3b15ff189f6e5abe4dee38eca76c476","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Integrates with mongoose-url-query.","directories":{},"_nodeVersion":"20.19.0","dependencies":{"lodash":"^4.17.21","mongoose-url-query":"^1.6.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@types/lodash":"^4.17.0","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.2.3_1765156049376_0.7333581528044517","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@billynd/polaris-data-table-views","version":"1.2.4","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.2.4","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"6ef069a641578ba1bbe5d4f6f531da2a2bc2069f","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.2.4.tgz","fileCount":34,"integrity":"sha512-HrB6Selyx5o0loUBSqOtyCE1ndn++5S95O3Pd/XmdguB6kOOn/LHVQpcQFvr955fggYZnHiCNoL1pYs0yvfdog==","signatures":[{"sig":"MEQCIAZQCSbR09RXoX2EK4h/Qw4Xsn0RV9qMY8GorFvFdtamAiBek9mjkpCbwp71Ve34Zi2sKW4tFQPk1ujQt9UVIeDrEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182912},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"e63c8cc2db548ca173dab8cf456c09ecac0c2b99","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.2.4_1765156476974_0.9511364260655844","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@billynd/polaris-data-table-views","version":"1.2.5","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.2.5","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"69446af1c2c770a071ed22ea5f28abf1c3523ca1","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.2.5.tgz","fileCount":34,"integrity":"sha512-kxIXsttvsu/lYT+CBqljlwnOG0oh6qg6J3Cv7d8Wl1K7/rUgXSLMSYmVxpvJeios1mziP9MpwgT/ZOkV/epVrg==","signatures":[{"sig":"MEUCIQCA4BpoZ2MySi4NZ+5hip5VSbELbtqncILjc8Gx51DYhgIgLxpb8SItu4QWkwcC796oD0KPZ45dYYu8h8PTSAL0rQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183075},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"8189e1f76fd230beb2d59fe6ee7dcb73f72639f6","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.2.5_1765165244148_0.9855950878423883","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@billynd/polaris-data-table-views","version":"1.2.6","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.2.6","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"6478f69866035f4b77488008e01934387b33f594","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.2.6.tgz","fileCount":34,"integrity":"sha512-nybozYohcoJlXEfyjT1OTE/MM5pcd7OFtFU7c4eU0hMdzfvv4WFmoJeeSU6NP1NJLJNL+E6QWA7dAttZ2YfOsA==","signatures":[{"sig":"MEUCIDljlMzRTp8g2dy/dg4Q+m8m0QAysfJXMuKFVOMsg459AiEAt56bozvE3NSx4u0vkV6Np6spORVgsin3r9k5xaP5w40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183075},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"8189e1f76fd230beb2d59fe6ee7dcb73f72639f6","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.2.6_1765165336629_0.19401620251255247","host":"s3://npm-registry-packages-npm-production"}},"1.2.7":{"name":"@billynd/polaris-data-table-views","version":"1.2.7","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.2.7","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"8734913072c7c00bd9275616dab1a13aecd7d901","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.2.7.tgz","fileCount":34,"integrity":"sha512-x6+LX0NC61WAqbvZ7nXNh0rXfAJer8JhXEOQaDra5stxXOIJnmDjKaolXh3cKjEBSKG+iWHpWcVIV6tvb6LiTg==","signatures":[{"sig":"MEUCIASTXrgZAVL5n1L38ninm8mNpF2lP52vCrQDQgAgFd9EAiEApykbiEwDB5HbNx40t9VjgPaYWnKas5ZbppcWTiwAghM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182925},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.2.7_1765165811240_0.6006783507927562","host":"s3://npm-registry-packages-npm-production"}},"1.2.8":{"name":"@billynd/polaris-data-table-views","version":"1.2.8","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.2.8","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"47ce20c95ba60a4716618ad4b160ef2cf8503a09","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.2.8.tgz","fileCount":34,"integrity":"sha512-vZdUgWZrhWVA/+2/J+WhU/6qS3L2rqW7U7XYMI8KgcXqZ8w+sopV5xe8ROIblX+bHq8ot2G4xixJrp1SYBqbHQ==","signatures":[{"sig":"MEUCIQDhJUf73C0TI3N5uOaSO6wx6ppA5qaOkQpPOKYmq9sbdAIgDF7UANTHxXeUMkFDa3N6NN0cdDl1uV1V/N7QUVlncyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183097},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.2.8_1765165993255_0.5696322743451039","host":"s3://npm-registry-packages-npm-production"}},"1.2.9":{"name":"@billynd/polaris-data-table-views","version":"1.2.9","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.2.9","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"118cd59cc34d7cc8bbe0da8970da744c8455deb3","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.2.9.tgz","fileCount":34,"integrity":"sha512-nZShUmCkrhgK7q0pCQ86tVVo6kShWg49Jtn4u0/tkULIL2QXcwfumuzMA43RWAUQj2bI0cQ1XCNjH3PrTdRq7A==","signatures":[{"sig":"MEUCIQC6IKnoLMO+sPTT9Mp8u1Hrpg7jMpq4nxO1WCN8SFGA2AIgJagKup2aJmYu+OV9Erz4/R43BvuNekDVlOgeG8zPhzY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182967},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.2.9_1765166186936_0.17842906674881176","host":"s3://npm-registry-packages-npm-production"}},"1.2.10":{"name":"@billynd/polaris-data-table-views","version":"1.2.10","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.2.10","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"7de20b411b84cc6b3e1bc15e33cc7427d40b54ba","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.2.10.tgz","fileCount":34,"integrity":"sha512-kf8yWeAfe7aoGeASchgslsewZohy1CJHRVm0CjDXil/xShrBqWjaX91DIax/MqiWIw+qNEOwO5wfRvP2LnlQwQ==","signatures":[{"sig":"MEQCIFX7RHJ8+MW3RtbHJstnebULuSKc3scYlWLQPB8dDStaAiAtQrdHWAh42JbeS/wyzMhbGturVz9dBYF3pKfR7KuaFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183804},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.2.10_1765166499956_0.21832911191278237","host":"s3://npm-registry-packages-npm-production"}},"1.2.11":{"name":"@billynd/polaris-data-table-views","version":"1.2.11","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.2.11","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"d294755a7866e12846afa939e986728780b8ff78","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.2.11.tgz","fileCount":34,"integrity":"sha512-iBm/qvNt/fpmkBzlvGUXk5RQMzvAvuB/6b4u7v/+NtlTx8flEzk5qx9LRkLM6a6wFlheNzysVlShhOr2sczkZw==","signatures":[{"sig":"MEYCIQDhM/lvLsjXgjFN7EDsTbQcudoCbjBhM5mU3/x06gLHiQIhAJlSopkpBgQv5AWs+b+ZJFttU+fAvAiPZFXXh+dfIf1R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184422},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.2.11_1765166678028_0.8831171158867299","host":"s3://npm-registry-packages-npm-production"}},"1.2.12":{"name":"@billynd/polaris-data-table-views","version":"1.2.12","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.2.12","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"cdcc43caa158caf08e0a4a86f12f8f2f8a6a9475","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.2.12.tgz","fileCount":34,"integrity":"sha512-MljPcnYXLuGaOVjAAOnf1j9/s3dJgFZuwoR+aJhdsJpeUA9CRd/xGHOPOsTc9KKjw5YrElgakDSkufnsYquV0A==","signatures":[{"sig":"MEUCIQDfUwI89KVzcvm/i2ngbV+p38lxC/penrJUxxsbVWwcSwIgfZydkIMiQoTb47qOP7nmhFtNA5EHgQgs4VSnP1NCXvE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184288},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.2.12_1765167161022_0.5891552090374093","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@billynd/polaris-data-table-views","version":"1.3.0","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.3.0","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"74686e9c32efea4cb17a2b41e3788fc7a8f9940b","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.3.0.tgz","fileCount":34,"integrity":"sha512-wWVPjQwFvXQ97zNJLu3YK4U7gXtU8qzgeatnu7QeoiZAQdyVwFZe7on8D70MgUOz7tTM2rwjhSnQeIi10838eg==","signatures":[{"sig":"MEUCIFh7+ErBLXkB6N5BkWYON2r/dkfHEIB40ynuJLg8gRNPAiEA8SXW3UVCWpwHbp7H6aWtZyqkEttmBxMkFqD7/sCxKf4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183385},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.3.0_1765167861383_0.8107010144198354","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@billynd/polaris-data-table-views","version":"1.3.1","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.3.1","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"9bf342e08952ba69316d3f8e7d6bc4cd624c2acc","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.3.1.tgz","fileCount":34,"integrity":"sha512-r3eYsYxX7TnMVHtU58IoFltqB7Ab8WgZyvCxdW+slSJ8OabZvWY/sGzfQm09/WGselEvVw2JhMukyTu7E1UU8g==","signatures":[{"sig":"MEUCIQCJCX/CcDXOPqb0ekkyewe4pdG3rjFDEZYEIbBpseSPcAIgXmi9pq63O96QZElMe/zhNVCDO+WVsIkuRqtzcEoZp2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183399},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.3.1_1765174309566_0.9318441437177705","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@billynd/polaris-data-table-views","version":"1.3.2","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.3.2","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"bf753fe3198a1c7e52bd84713d23d47c10211d27","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.3.2.tgz","fileCount":34,"integrity":"sha512-lF/SoKyWNgSbh1M/CZF5FL3Xk9c2iZGJIAWO8iEcBjiA2weAnBqV0V0HIGcfhLchk/I5nEqh0QZUJLmECQr3dg==","signatures":[{"sig":"MEYCIQDP1Q/JaPcTFlQ/O5Vb05oTeYm6NIaUKrFc1nLFlU2oMAIhAJS3FEJKSPZfXSlOC9IUyMTteN/mh3i3zeYyY9txzqw6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184029},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.3.2_1765174481718_0.3030291550515014","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@billynd/polaris-data-table-views","version":"1.3.3","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.3.3","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"031e2a8f4d296658dd1dc9941f3876bbdb15c6da","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.3.3.tgz","fileCount":34,"integrity":"sha512-eoiPPZ2gv05WA5R2YNgShLU6Mdn1bi0Zwry6h4ZjXmITkBcn5fy6rKeLU22sJywoVfdROsplGR3tA7AMy8mbOg==","signatures":[{"sig":"MEQCIGtoEsxkj+STfWAavtUdcSa/L/kkKsorAwIzWGzPUPfZAiAfcHXqcr4HNtOk/otFT1d8z8hsGURtn/oLEqPBT7csuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184029},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.3.3_1765174608155_0.7030433361326411","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"@billynd/polaris-data-table-views","version":"1.3.4","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","_id":"@billynd/polaris-data-table-views@1.3.4","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"dist":{"shasum":"39d6e4cb699c15ee71f780838b327d3cc380c949","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.3.4.tgz","fileCount":34,"integrity":"sha512-HRVSaDoyRMhWzQvou/5Fo0WdLooH9PfEGWT5ztBURHIk2zOgqXZulQxGSitKs2zReD4P2TpbRMrsIzIfpc+k9A==","signatures":[{"sig":"MEQCIDbyTzIwn3RQ0grxaEptHVRAyd50lZsf5fRtsMrvJIdgAiAIcEaTJ9AlAWW0ZAxV9n6+uj9aWqlPJaWkmHMKsPf9Dg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183933},"main":"dist/index.client.js","types":"dist/index.client.d.ts","module":"dist/index.client.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"}},"gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","scripts":{"dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"_npmVersion":"10.8.2","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","directories":{},"_nodeVersion":"20.19.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"8.3.5","react":"18.3.1","mongoose":"^8.0.0","typescript":"5.7.2","@types/node":"^20.0.0","@types/react":"18.3.12","@shopify/polaris":"13.9.0"},"peerDependencies":{"react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0","@shopify/polaris":"^12.0.0 || ^13.0.0"},"peerDependenciesMeta":{"react":{"optional":false},"mongoose":{"optional":true},"@shopify/polaris":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/polaris-data-table-views_1.3.4_1765174750189_0.3349486296632751","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"@billynd/polaris-data-table-views","version":"1.3.5","description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","main":"dist/index.client.js","module":"dist/index.client.mjs","types":"dist/index.client.d.ts","exports":{".":{"types":"./dist/index.client.d.ts","import":"./dist/index.client.mjs","require":"./dist/index.client.js"},"./server":{"types":"./dist/index.server.d.ts","import":"./dist/index.server.mjs","require":"./dist/index.server.js"},"./models/View":{"types":"./dist/models/View.d.ts","import":"./dist/models/View.mjs","require":"./dist/models/View.js"},"./models/createViewModel":{"types":"./dist/models/createViewModel.d.ts","import":"./dist/models/createViewModel.mjs","require":"./dist/models/createViewModel.js"},"./server/views":{"types":"./dist/server/views.d.ts","import":"./dist/server/views.mjs","require":"./dist/server/views.js"},"./types":{"types":"./dist/index.types.d.ts","import":"./dist/index.types.mjs","require":"./dist/index.types.js"},"./constants":{"types":"./dist/index.constants.d.ts","import":"./dist/index.constants.mjs","require":"./dist/index.constants.js"}},"scripts":{"build":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --clean","dev":"tsup src/index.client.ts src/index.server.ts src/index.types.ts src/index.constants.ts src/models/View.ts src/models/createViewModel.ts src/server/views.ts --format cjs,esm --dts --watch","typecheck":"tsc --noEmit","prepublishOnly":"yarn build"},"keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"author":"","license":"MIT","peerDependencies":{"@shopify/polaris":"^12.0.0 || ^13.0.0","react":"^18.0.0","mongoose":"^7.0.0 || ^8.0.0"},"peerDependenciesMeta":{"@shopify/polaris":{"optional":false},"react":{"optional":false},"mongoose":{"optional":true}},"engines":{"node":">=18.0.0"},"dependencies":{},"devDependencies":{"@shopify/polaris":"13.9.0","@types/node":"^20.0.0","@types/react":"18.3.12","mongoose":"^8.0.0","react":"18.3.1","tsup":"8.3.5","typescript":"5.7.2"},"_id":"@billynd/polaris-data-table-views@1.3.5","gitHead":"0ca4cf688975e396bce6cdbae4aafe4b31c3fa78","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-GVjeBjIRKY+xZewhklxsE6RpFTqhZsNCDieQxQAuS6aAXzogn1i1aRz65xvuZG80V6f/8XVRk60NouU7A0NcYQ==","shasum":"5f29be091c31e8086d147c42b779e15f402a6f69","tarball":"https://registry.npmjs.org/@billynd/polaris-data-table-views/-/polaris-data-table-views-1.3.5.tgz","fileCount":34,"unpackedSize":182968,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDdstvSnQADrTYwpUxFCiStA391+cE55oGY2pXwcGp1NAIgPG4wvgvrojFTpYRTGlfIgZvScSFWT4hz4/Kl09hd/W0="}]},"_npmUser":{"name":"billy621","email":"nduclong6201@gmail.com"},"directories":{},"maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/polaris-data-table-views_1.3.5_1765174924650_0.06582101736119217"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-08T01:07:29.293Z","modified":"2025-12-08T06:22:05.008Z","1.2.3":"2025-12-08T01:07:29.536Z","1.2.4":"2025-12-08T01:14:37.152Z","1.2.5":"2025-12-08T03:40:44.343Z","1.2.6":"2025-12-08T03:42:16.811Z","1.2.7":"2025-12-08T03:50:11.379Z","1.2.8":"2025-12-08T03:53:13.421Z","1.2.9":"2025-12-08T03:56:27.117Z","1.2.10":"2025-12-08T04:01:40.168Z","1.2.11":"2025-12-08T04:04:38.175Z","1.2.12":"2025-12-08T04:12:41.172Z","1.3.0":"2025-12-08T04:24:21.526Z","1.3.1":"2025-12-08T06:11:49.711Z","1.3.2":"2025-12-08T06:14:41.875Z","1.3.3":"2025-12-08T06:16:48.293Z","1.3.4":"2025-12-08T06:19:10.333Z","1.3.5":"2025-12-08T06:22:04.797Z"},"license":"MIT","keywords":["polaris","shopify","index-table","data-table","table","filtering","sorting","pagination","view-management","views","url-sync","mongoose-url-query","react","hooks"],"description":"A complete data table component for Shopify Polaris IndexTable with filtering, sorting, pagination, URL sync, and view management. Optimized bundle size with zero external dependencies.","maintainers":[{"name":"billy621","email":"nduclong6201@gmail.com"}],"readme":"# @billynd/polaris-data-table-views\r\n\r\n[![npm version](https://img.shields.io/npm/v/@billynd/polaris-data-table-views.svg)](https://www.npmjs.com/package/@billynd/polaris-data-table-views)\r\n\r\n[![npm downloads](https://img.shields.io/npm/dm/@billynd/polaris-data-table-views.svg)](https://www.npmjs.com/package/@billynd/polaris-data-table-views)\r\n\r\n[![license](https://img.shields.io/npm/l/@billynd/polaris-data-table-views.svg)](https://github.com/BillyND/polaris-list-table/blob/main/LICENSE)\r\n\r\nA complete data table component library for Shopify Polaris IndexTable with filtering, sorting, pagination, URL synchronization, and view management. Integrates seamlessly with `@billy/mongoose-url-query` for server-side data fetching.\r\n\r\n## Table of Contents\r\n\r\n- [Installation](#installation)\r\n- [Quick Start](#quick-start)\r\n- [Core Concepts](#core-concepts)\r\n- [Usage Patterns](#usage-patterns)\r\n  - [Basic Usage with Remote Data](#basic-usage-with-remote-data)\r\n  - [Local Data Mode](#local-data-mode)\r\n  - [Custom Fetch Function](#custom-fetch-function)\r\n  - [View Management](#view-management)\r\n  - [Custom Filters](#custom-filters)\r\n  - [Using Hooks Directly](#using-hooks-directly)\r\n  - [Server-Side Setup](#server-side-setup)\r\n- [API Reference](#api-reference)\r\n  - [ListTable Component](#listtable-component)\r\n  - [useDataSource Hook](#usedatasource-hook)\r\n  - [Server Utilities](#server-utilities)\r\n- [Advanced Usage](#advanced-usage)\r\n  - [Custom View Models](#custom-view-models)\r\n  - [URL Synchronization](#url-synchronization)\r\n  - [Transform Response](#transform-response)\r\n  - [Error Handling](#error-handling)\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @billynd/polaris-data-table-views\r\n# or\r\nyarn add @billynd/polaris-data-table-views\r\n```\r\n\r\n### Peer Dependencies\r\n\r\nThis library requires:\r\n\r\n- `@shopify/polaris`: ^12.0.0 || ^13.0.0\r\n- `react`: ^18.0.0\r\n- `mongoose`: ^7.0.0 || ^8.0.0 (optional, only for server-side view management)\r\n\r\n## Quick Start\r\n\r\n### 1. Basic Remote Data Table\r\n\r\n```tsx\r\nimport { ListTable } from '@billynd/polaris-data-table-views';\r\nimport { IndexTable } from '@shopify/polaris';\r\n\r\nfunction UsersPage() {\r\n  return (\r\n    <ListTable\r\n      endpoint=\"/api/users\"\r\n      queryKey=\"email\"\r\n      headings={[{ title: 'Name' }, { title: 'Email' }, { title: 'Status' }]}\r\n      renderRowMarkup={(user) => (\r\n        <IndexTable.Row id={user._id} key={user._id}>\r\n          <IndexTable.Cell>{user.name}</IndexTable.Cell>\r\n          <IndexTable.Cell>{user.email}</IndexTable.Cell>\r\n          <IndexTable.Cell>{user.status}</IndexTable.Cell>\r\n        </IndexTable.Row>\r\n      )}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\n### 2. With View Management (Server-Side)\r\n\r\n**Client-side:**\r\n\r\n```tsx\r\nimport { ListTable } from '@billynd/polaris-data-table-views';\r\n\r\nfunction UsersPage() {\r\n  return (\r\n    <ListTable\r\n      endpoint=\"/api/users\"\r\n      queryKey=\"email\"\r\n      viewsEndpoint=\"/api/views\"\r\n      headings={[...]}\r\n      renderRowMarkup={...}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\n**Server-side (API route):**\r\n\r\n```tsx\r\n// pages/api/views.ts (Next.js) or routes/views.js (Express)\r\nimport { ViewModel } from '@billynd/polaris-data-table-views/server';\r\nimport {\r\n  serverGetViews,\r\n  serverCreateView,\r\n  serverUpdateView,\r\n  serverDeleteView,\r\n  serverRenameView,\r\n} from '@billynd/polaris-data-table-views/server';\r\n\r\nexport default async function handler(req, res) {\r\n  const { path, action, name, oldName, newName } = req.query;\r\n  const ownerId = req.user?.id; // Optional: for user-specific views\r\n\r\n  switch (action) {\r\n    case 'createView':\r\n      await serverCreateView(path, name, req.body, ViewModel, ownerId);\r\n      return res.json({ success: true });\r\n\r\n    case 'updateView':\r\n      await serverUpdateView(path, name, req.body, ViewModel, ownerId);\r\n      return res.json({ success: true });\r\n\r\n    case 'deleteView':\r\n      await serverDeleteView(path, name, ViewModel, ownerId);\r\n      return res.json({ success: true });\r\n\r\n    case 'renameView':\r\n      await serverRenameView(path, oldName, newName, ViewModel, ownerId);\r\n      return res.json({ success: true });\r\n\r\n    default:\r\n      const views = await serverGetViews(path, ViewModel, ownerId);\r\n      return res.json({ items: views });\r\n  }\r\n}\r\n```\r\n\r\n## Core Concepts\r\n\r\n### 1. Data Source Modes\r\n\r\nThe library supports two data source modes:\r\n\r\n- **Remote Data Mode**: Fetches data from an API endpoint (default)\r\n- **Local Data Mode**: Filters/sorts/paginates data in-memory\r\n\r\n### 2. View Management\r\n\r\nViews are saved filter configurations that users can create, update, delete, and rename. Views are stored in MongoDB and can be:\r\n\r\n- **Shared**: Available to all users (no `ownerId`)\r\n- **User-specific**: Only visible to the owner (`ownerId` provided)\r\n\r\n### 3. URL Synchronization\r\n\r\nBy default, the table state (page, sort, filters, selected view) is synchronized with URL query parameters, allowing:\r\n\r\n- Bookmarkable URLs\r\n- Browser back/forward navigation\r\n- Shareable filtered views\r\n\r\n### 4. Filtering System\r\n\r\n- **Query Search**: Text search on a specified field (`queryKey`)\r\n- **Custom Filters**: Additional filters defined via `filters` prop\r\n- **Applied Filters**: Visual representation of active filters\r\n\r\n## Usage Patterns\r\n\r\n### Basic Usage with Remote Data\r\n\r\n```tsx\r\nimport { ListTable } from '@billynd/polaris-data-table-views';\r\n\r\n<ListTable\r\n  endpoint=\"/api/products\"\r\n  queryKey=\"name\"\r\n  headings={[\r\n    { title: 'Product', id: 'name' },\r\n    { title: 'Price', id: 'price' },\r\n  ]}\r\n  sortOptions={[\r\n    { label: 'Name A-Z', value: 'name asc' },\r\n    { label: 'Name Z-A', value: 'name desc' },\r\n    { label: 'Price Low-High', value: 'price asc' },\r\n  ]}\r\n  defaultSort={{ field: 'createdAt', direction: 'desc' }}\r\n  renderRowMarkup={(product) => (\r\n    <IndexTable.Row id={product._id}>\r\n      <IndexTable.Cell>{product.name}</IndexTable.Cell>\r\n      <IndexTable.Cell>${product.price}</IndexTable.Cell>\r\n    </IndexTable.Row>\r\n  )}\r\n/>;\r\n```\r\n\r\n### Local Data Mode\r\n\r\nWhen you have data already loaded and want to filter/sort/paginate in-memory:\r\n\r\n```tsx\r\nconst [products, setProducts] = useState([...]);\r\n\r\n<ListTable\r\n  queryKey=\"name\"\r\n  localData={products}\r\n  onlyLocalData={true}\r\n  headings={[...]}\r\n  renderRowMarkup={...}\r\n/>\r\n```\r\n\r\n### Custom Fetch Function\r\n\r\nFor authentication, custom headers, or API wrappers:\r\n\r\n```tsx\r\nconst customFetch = async (url: string, options?: RequestInit) => {\r\n  return fetch(url, {\r\n    ...options,\r\n    headers: {\r\n      ...options?.headers,\r\n      'Authorization': `Bearer ${token}`,\r\n    },\r\n  });\r\n};\r\n\r\n<ListTable\r\n  endpoint=\"/api/products\"\r\n  queryKey=\"name\"\r\n  fetchFn={customFetch}\r\n  headings={[...]}\r\n  renderRowMarkup={...}\r\n/>\r\n```\r\n\r\n### View Management\r\n\r\n#### Client-Side Configuration\r\n\r\n```tsx\r\n<ListTable\r\n  endpoint=\"/api/products\"\r\n  queryKey=\"name\"\r\n  viewsEndpoint=\"/api/views\"\r\n  defaultViews={[\r\n    {\r\n      name: 'Active Products',\r\n      filters: { status: 'active' },\r\n      allowActions: ['update', 'delete', 'rename'], // Optional: restrict actions\r\n    },\r\n  ]}\r\n  headings={[...]}\r\n  renderRowMarkup={...}\r\n/>\r\n```\r\n\r\n#### Server-Side API Route\r\n\r\n```tsx\r\n// Next.js API route example\r\nimport { ViewModel } from '@billynd/polaris-data-table-views/server';\r\nimport {\r\n  serverGetViews,\r\n  serverCreateView,\r\n  serverUpdateView,\r\n  serverDeleteView,\r\n  serverRenameView,\r\n} from '@billynd/polaris-data-table-views/server';\r\n\r\nexport default async function handler(req, res) {\r\n  const { method, query, body } = req;\r\n  const { path, action, name, oldName, newName } = query;\r\n  const ownerId = req.user?.id; // Get from your auth system\r\n\r\n  try {\r\n    switch (action) {\r\n      case 'createView':\r\n        if (method !== 'POST') return res.status(405).json({ error: 'Method not allowed' });\r\n        await serverCreateView(path, name, body, ViewModel, ownerId);\r\n        return res.json({ success: true });\r\n\r\n      case 'updateView':\r\n        if (method !== 'PUT') return res.status(405).json({ error: 'Method not allowed' });\r\n        await serverUpdateView(path, name, body, ViewModel, ownerId);\r\n        return res.json({ success: true });\r\n\r\n      case 'deleteView':\r\n        if (method !== 'GET') return res.status(405).json({ error: 'Method not allowed' });\r\n        await serverDeleteView(path, name, ViewModel, ownerId);\r\n        return res.json({ success: true });\r\n\r\n      case 'renameView':\r\n        if (method !== 'GET') return res.status(405).json({ error: 'Method not allowed' });\r\n        await serverRenameView(path, oldName, newName, ViewModel, ownerId);\r\n        return res.json({ success: true });\r\n\r\n      default:\r\n        // GET views\r\n        if (method !== 'GET') return res.status(405).json({ error: 'Method not allowed' });\r\n        const views = await serverGetViews(path, ViewModel, ownerId);\r\n        return res.json({ items: views });\r\n    }\r\n  } catch (error) {\r\n    console.error('View management error:', error);\r\n    return res.status(500).json({ error: error.message });\r\n  }\r\n}\r\n```\r\n\r\n### Custom Filters\r\n\r\nAdd custom filter components (e.g., Select, DatePicker):\r\n\r\n```tsx\r\nimport { Select } from '@shopify/polaris';\r\n\r\n<ListTable\r\n  endpoint=\"/api/products\"\r\n  queryKey=\"name\"\r\n  filters={[\r\n    {\r\n      key: 'status',\r\n      label: 'Status',\r\n      shortcut: true,\r\n      filter: {\r\n        Component: Select,\r\n        props: {\r\n          label: 'Status',\r\n          options: [\r\n            { label: 'All', value: '' },\r\n            { label: 'Active', value: 'active' },\r\n            { label: 'Inactive', value: 'inactive' },\r\n          ],\r\n        },\r\n      },\r\n    },\r\n    {\r\n      key: 'category',\r\n      label: 'Category',\r\n      shortcut: false,\r\n      filter: {\r\n        Component: Select,\r\n        props: {\r\n          label: 'Category',\r\n          options: [\r\n            { label: 'All', value: '' },\r\n            { label: 'Electronics', value: 'electronics' },\r\n            { label: 'Clothing', value: 'clothing' },\r\n          ],\r\n        },\r\n      },\r\n    },\r\n  ]}\r\n  renderFilterLabel={(key, value) => {\r\n    if (key === 'status') {\r\n      return `Status: ${value}`;\r\n    }\r\n    if (key === 'category') {\r\n      return `Category: ${value}`;\r\n    }\r\n    return `${key}: ${value}`;\r\n  }}\r\n  headings={[...]}\r\n  renderRowMarkup={...}\r\n/>\r\n```\r\n\r\n### Using Hooks Directly\r\n\r\nFor more control, use the hooks directly:\r\n\r\n```tsx\r\nimport { useDataSource } from '@billynd/polaris-data-table-views';\r\nimport { IndexTable, Card } from '@shopify/polaris';\r\n\r\nfunction CustomTable() {\r\n  const {\r\n    items,\r\n    total,\r\n    loading,\r\n    state,\r\n    setPage,\r\n    setQueryValue,\r\n    setFilter,\r\n    setSort,\r\n    pagination,\r\n  } = useDataSource({\r\n    endpoint: '/api/products',\r\n    queryKey: 'name',\r\n    defaultSort: { field: 'createdAt', direction: 'desc' },\r\n    defaultLimit: 25,\r\n  });\r\n\r\n  return (\r\n    <Card>\r\n      <input\r\n        type=\"text\"\r\n        placeholder=\"Search...\"\r\n        onChange={(e) => setQueryValue(e.target.value)}\r\n      />\r\n      <IndexTable\r\n        headings={[...]}\r\n        itemCount={items.length}\r\n        loading={loading}\r\n        pagination={{\r\n          hasNext: pagination.hasNext,\r\n          hasPrevious: pagination.hasPrevious,\r\n          onNext: pagination.onNext,\r\n          onPrevious: pagination.onPrevious,\r\n          label: pagination.label,\r\n        }}\r\n      >\r\n        {items.map((item) => (\r\n          <IndexTable.Row key={item._id}>\r\n            {/* Your row content */}\r\n          </IndexTable.Row>\r\n        ))}\r\n      </IndexTable>\r\n    </Card>\r\n  );\r\n}\r\n```\r\n\r\n### Server-Side Setup\r\n\r\n#### 1. Install and Connect Mongoose\r\n\r\n```tsx\r\n// lib/mongodb.ts or similar\r\nimport mongoose from 'mongoose';\r\n\r\nif (!mongoose.connection.readyState) {\r\n  await mongoose.connect(process.env.MONGODB_URI);\r\n}\r\n```\r\n\r\n#### 2. Create API Route for Views\r\n\r\nSee [View Management](#view-management) section above.\r\n\r\n#### 3. Create API Route for Data\r\n\r\nYour data endpoint should accept query parameters from `@billy/mongoose-url-query`:\r\n\r\n```tsx\r\n// pages/api/products.ts\r\nimport { buildQuery } from '@billy/mongoose-url-query';\r\nimport Product from '@/models/Product';\r\n\r\nexport default async function handler(req, res) {\r\n  const { page, limit, sort, filters } = buildQuery(req.query);\r\n\r\n  const query = Product.find();\r\n\r\n  // Apply filters\r\n  if (filters) {\r\n    // @billy/mongoose-url-query filters are already parsed\r\n    Object.entries(filters).forEach(([key, value]) => {\r\n      if (Array.isArray(value)) {\r\n        query.where(key).in(value);\r\n      } else {\r\n        query.where(key).equals(value);\r\n      }\r\n    });\r\n  }\r\n\r\n  // Apply sorting\r\n  if (sort) {\r\n    query.sort(sort);\r\n  }\r\n\r\n  // Apply pagination\r\n  const skip = (page - 1) * limit;\r\n  query.skip(skip).limit(limit);\r\n\r\n  const [items, total] = await Promise.all([\r\n    query.exec(),\r\n    Product.countDocuments(query.getQuery()),\r\n  ]);\r\n\r\n  res.json({ items, total, page, limit });\r\n}\r\n```\r\n\r\n## API Reference\r\n\r\n### ListTable Component\r\n\r\n#### Props\r\n\r\n| Prop                        | Type                                                   | Required | Default          | Description                                               |\r\n| --------------------------- | ------------------------------------------------------ | -------- | ---------------- | --------------------------------------------------------- |\r\n| `endpoint`                  | `string`                                               | No\\*     | -                | API endpoint for data fetching (required for remote mode) |\r\n| `queryKey`                  | `string`                                               | Yes      | -                | Field name for text search                                |\r\n| `headings`                  | `IndexTableHeading[]`                                  | Yes      | -                | Table column headers                                      |\r\n| `renderRowMarkup`           | `(item, idx, selectedResources, context) => ReactNode` | Yes      | -                | Function to render each row                               |\r\n| `localData`                 | `T[]`                                                  | No       | -                | Array of data for local mode                              |\r\n| `onlyLocalData`             | `boolean`                                              | No       | `false`          | Enable local data mode                                    |\r\n| `viewsEndpoint`             | `string`                                               | No       | -                | API endpoint for view management                          |\r\n| `defaultViews`              | `ListTableView[]`                                      | No       | `[]`             | Default views to show                                     |\r\n| `views`                     | `ListTableView[]`                                      | No       | -                | Controlled views (overrides fetching)                     |\r\n| `filters`                   | `ListTableFilter[]`                                    | No       | `[]`             | Custom filter definitions                                 |\r\n| `sortOptions`               | `IndexFiltersProps['sortOptions']`                     | No       | -                | Sort dropdown options                                     |\r\n| `defaultSort`               | `{ field: string; direction: 'asc' \\| 'desc' }`        | No       | -                | Default sort configuration                                |\r\n| `limit`                     | `number`                                               | No       | `50`             | Items per page                                            |\r\n| `selectable`                | `boolean`                                              | No       | `false`          | Enable row selection                                      |\r\n| `bulkActions`               | `BulkActionsProps['actions']`                          | No       | -                | Bulk action buttons                                       |\r\n| `promotedBulkActions`       | `BulkActionsProps['promotedActions']`                  | No       | -                | Promoted bulk actions                                     |\r\n| `condensed`                 | `boolean`                                              | No       | `false`          | Use condensed table layout                                |\r\n| `showBorder`                | `boolean`                                              | No       | `true`           | Show card border                                          |\r\n| `showFilter`                | `boolean`                                              | No       | `true`           | Show filter UI                                            |\r\n| `showPagination`            | `boolean`                                              | No       | `true`           | Show pagination controls                                  |\r\n| `emptyState`                | `ReactNode`                                            | No       | -                | Custom empty state component                              |\r\n| `fetchFn` / `fetchFunction` | `(url, options?) => Promise<Response>`                 | No       | `defaultFetch`   | Custom fetch function                                     |\r\n| `syncWithUrl`               | `boolean`                                              | No       | `true`           | Sync state with URL params                                |\r\n| `queryPlaceholder`          | `string`                                               | No       | `'Filter items'` | Search input placeholder                                  |\r\n| `renderFilterLabel`         | `(key, value) => string`                               | No       | -                | Custom filter label renderer                              |\r\n| `resourceName`              | `{ singular: string; plural: string }`                 | No       | -                | Resource names for bulk actions                           |\r\n| `t`                         | `(key, options?) => string`                            | No       | `defaultT`       | Translation function                                      |\r\n| `onDataChange`              | `(data: ListTableData) => void`                        | No       | -                | Callback when data changes                                |\r\n| `setListTableData`          | `Dispatch<SetStateAction<ListTableData>>`              | No       | -                | State setter for data                                     |\r\n| `error`                     | `Error`                                                | No       | -                | Error to display                                          |\r\n| `loadingComponent`          | `ReactNode`                                            | No       | -                | Custom loading component                                  |\r\n| `abbreviated`               | `string`                                               | No       | -                | Abbreviated response format                               |\r\n\r\n#### ListTableView Type\r\n\r\n```typescript\r\ntype ListTableView = {\r\n  _id?: string;\r\n  name: string;\r\n  filters: {\r\n    queryValue?: string;\r\n    [key: string]: any;\r\n  };\r\n  allowActions?: VIEW_ACTIONS[]; // ['createView', 'updateView', 'deleteView', 'renameView', 'duplicateView']\r\n};\r\n```\r\n\r\n#### ListTableFilter Type\r\n\r\n```typescript\r\ntype ListTableFilter = {\r\n  key: string;\r\n  label: string;\r\n  shortcut: boolean; // Show in shortcut bar\r\n  filter:\r\n    | {\r\n        Component: React.ComponentType<any>;\r\n        props: any;\r\n      }\r\n    | ReactNode;\r\n};\r\n```\r\n\r\n### useDataSource Hook\r\n\r\n#### Options\r\n\r\n```typescript\r\ninterface UseDataSourceOptions<T> {\r\n  endpoint: string;\r\n  queryKey: string;\r\n  defaultSort?: { field: string; direction: 'asc' | 'desc' };\r\n  defaultLimit?: number;\r\n  defaultViews?: ViewDefinition[];\r\n  syncWithUrl?: boolean;\r\n  localData?: T[];\r\n  abbreviated?: boolean;\r\n  transformResponse?: (response: unknown) => QueryResult<T>;\r\n  fetchFn?: (url: string, options?: RequestInit) => Promise<unknown>;\r\n  debounceMs?: number;\r\n}\r\n```\r\n\r\n#### Return Value\r\n\r\n```typescript\r\ninterface UseDataSourceReturn<T> {\r\n  // State\r\n  state: QueryState;\r\n  items: T[];\r\n  total: number;\r\n  loading: boolean;\r\n  firstLoad: boolean;\r\n  error: Error | null;\r\n\r\n  // Actions\r\n  setPage: (page: number) => void;\r\n  setQueryValue: (value: string) => void;\r\n  setFilter: (key: string, value: any) => void;\r\n  setFilters: (filters: Record<string, any>) => void;\r\n  clearFilters: () => void;\r\n  setSort: (sort: SortDefinition | null) => void;\r\n  setSelectedView: (index: number) => void;\r\n  setViewSelected: (viewNameOrId: string | null) => void;\r\n  refresh: () => void;\r\n\r\n  // Polaris helpers\r\n  tabs: IndexFiltersProps['tabs'];\r\n  sortOptions: IndexFiltersProps['sortOptions'];\r\n  sortSelected: string[];\r\n  onSort: (selected: string[]) => void;\r\n\r\n  // Pagination helpers\r\n  pagination: {\r\n    page: number;\r\n    totalPages: number;\r\n    hasPrevious: boolean;\r\n    hasNext: boolean;\r\n    onPrevious: () => void;\r\n    onNext: () => void;\r\n    goToPage: (page: number) => void;\r\n    label: string;\r\n  };\r\n}\r\n```\r\n\r\n### Server Utilities\r\n\r\n#### serverGetViews\r\n\r\n```typescript\r\nfunction serverGetViews(\r\n  path: string,\r\n  ViewModel: Model<IView>,\r\n  ownerId?: string,\r\n  select?: (keyof IView)[]\r\n): Promise<IView[]>;\r\n```\r\n\r\n#### serverCreateView\r\n\r\n```typescript\r\nfunction serverCreateView(\r\n  path: string,\r\n  name: string,\r\n  filters: Record<string, any>,\r\n  ViewModel: Model<IView>,\r\n  ownerId?: string\r\n): Promise<void>;\r\n```\r\n\r\n#### serverUpdateView\r\n\r\n```typescript\r\nfunction serverUpdateView(\r\n  path: string,\r\n  name: string,\r\n  filters: Record<string, any>,\r\n  ViewModel: Model<IView>,\r\n  ownerId?: string\r\n): Promise<void>;\r\n```\r\n\r\n#### serverDeleteView\r\n\r\n```typescript\r\nfunction serverDeleteView(\r\n  path: string,\r\n  name: string,\r\n  ViewModel: Model<IView>,\r\n  ownerId?: string\r\n): Promise<void>;\r\n```\r\n\r\n#### serverRenameView\r\n\r\n```typescript\r\nfunction serverRenameView(\r\n  path: string,\r\n  oldName: string,\r\n  newName: string,\r\n  ViewModel: Model<IView>,\r\n  ownerId?: string\r\n): Promise<void>;\r\n```\r\n\r\n## Advanced Usage\r\n\r\n### Custom View Models\r\n\r\nCreate a custom Mongoose model with additional fields:\r\n\r\n```tsx\r\nimport { createViewModel } from '@billynd/polaris-data-table-views/server';\r\nimport { Schema } from 'mongoose';\r\n\r\nconst CustomViewModel = createViewModel({\r\n  modelName: 'CustomView',\r\n  collectionName: 'custom_views',\r\n  schemaOptions: {\r\n    description: { type: String },\r\n    isPublic: { type: Boolean, default: false },\r\n    tags: [{ type: String }],\r\n    metadata: { type: Schema.Types.Mixed },\r\n  },\r\n  additionalIndexes: [{ fields: { isPublic: 1 } }, { fields: { tags: 1 } }],\r\n});\r\n\r\n// Use in your API routes\r\nconst views = await serverGetViews('/admin/products', CustomViewModel, userId);\r\n```\r\n\r\n### URL Synchronization\r\n\r\nThe library automatically syncs state with URL parameters:\r\n\r\n- `?page=2` - Current page\r\n- `?sort=name|asc` - Sort field and direction\r\n- `?query=search+term` - Search query\r\n- `?filter_status=active` - Custom filter values\r\n- `?viewSelected=My+View` - Selected view name/ID\r\n\r\nTo disable URL sync:\r\n\r\n```tsx\r\n<ListTable\r\n  syncWithUrl={false}\r\n  // ... other props\r\n/>\r\n```\r\n\r\n### Transform Response\r\n\r\nTransform API responses to match expected format:\r\n\r\n```tsx\r\n<ListTable\r\n  endpoint=\"/api/products\"\r\n  queryKey=\"name\"\r\n  transformResponse={(response) => {\r\n    // Transform from { data: [...], count: 100 } to { items: [...], total: 100 }\r\n    return {\r\n      items: response.data || [],\r\n      total: response.count || 0,\r\n    };\r\n  }}\r\n  headings={[...]}\r\n  renderRowMarkup={...}\r\n/>\r\n```\r\n\r\n### Error Handling\r\n\r\nDisplay custom error messages:\r\n\r\n```tsx\r\nconst [error, setError] = useState<Error | null>(null);\r\n\r\n<ListTable\r\n  endpoint=\"/api/products\"\r\n  queryKey=\"name\"\r\n  error={error}\r\n  headings={[...]}\r\n  renderRowMarkup={...}\r\n/>\r\n```\r\n\r\nOr handle errors in custom fetch:\r\n\r\n```tsx\r\nconst customFetch = async (url: string, options?: RequestInit) => {\r\n  try {\r\n    const response = await fetch(url, options);\r\n    if (!response.ok) {\r\n      throw new Error(`API Error: ${response.statusText}`);\r\n    }\r\n    return response;\r\n  } catch (error) {\r\n    console.error('Fetch error:', error);\r\n    throw error;\r\n  }\r\n};\r\n```\r\n\r\n## Exports\r\n\r\n### Client-Side Exports\r\n\r\n```tsx\r\n// Main component\r\nimport { ListTable } from '@billynd/polaris-data-table-views';\r\n\r\n// Hooks\r\nimport { useDataSource, useSelection, usePagination } from '@billynd/polaris-data-table-views';\r\n\r\n// Types\r\nimport type {\r\n  ListTableProps,\r\n  ListTableData,\r\n  ListTableView,\r\n  ListTableFilter,\r\n} from '@billynd/polaris-data-table-views/types';\r\n\r\n// Constants\r\nimport { VIEW_ACTIONS } from '@billynd/polaris-data-table-views/types';\r\nimport { TABLE_ITEM_LIST_LIMITATION } from '@billynd/polaris-data-table-views/constants';\r\n\r\n// Utils\r\nimport { defaultFetch, defaultT } from '@billynd/polaris-data-table-views';\r\n```\r\n\r\n### Server-Side Exports\r\n\r\n```tsx\r\n// Models\r\nimport { ViewModel } from '@billynd/polaris-data-table-views/server';\r\nimport {\r\n  createViewModel,\r\n  baseViewSchemaDefinition,\r\n  createBaseViewIndexes,\r\n} from '@billynd/polaris-data-table-views/server';\r\n\r\n// Server utilities\r\nimport {\r\n  serverGetViews,\r\n  serverCreateView,\r\n  serverUpdateView,\r\n  serverDeleteView,\r\n  serverRenameView,\r\n} from '@billynd/polaris-data-table-views/server';\r\n```\r\n\r\n## TypeScript Support\r\n\r\nFull TypeScript support is included. All types are exported and can be imported:\r\n\r\n```tsx\r\nimport type {\r\n  ListTableProps,\r\n  UseDataSourceOptions,\r\n  UseDataSourceReturn,\r\n  QueryState,\r\n  SortDefinition,\r\n  ViewDefinition,\r\n} from '@billynd/polaris-data-table-views';\r\n```\r\n\r\n## Best Practices\r\n\r\n1. **Always provide `queryKey`**: Required for text search functionality\r\n2. **Use `viewsEndpoint` for persistent views**: Enables save/load functionality\r\n3. **Implement proper error handling**: Use `error` prop or custom `fetchFn`\r\n4. **Optimize with `abbreviated`**: For large datasets, request only needed fields\r\n5. **Use `onlyLocalData` for small datasets**: Avoids unnecessary API calls\r\n6. **Customize `renderFilterLabel`**: Provides better UX for applied filters\r\n7. **Set `defaultSort`**: Improves initial load performance\r\n8. **Use `syncWithUrl={false}`**: Only if you don't need bookmarkable URLs\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}