{"_id":"@edux-design/menus","_rev":"13-842c505ceabf2d8c4371ca6d54e86709","name":"@edux-design/menus","dist-tags":{"latest":"1.0.3"},"versions":{"0.0.1":{"name":"@edux-design/menus","version":"0.0.1","_id":"@edux-design/menus@0.0.1","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"7b2f618ebe8b47c2f283e4a577d83a6927124cce","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-0.0.1.tgz","fileCount":8,"integrity":"sha512-PVGddKw7VjEU/mimK0vo5LyidjZ5Xce2sNlXgxk6k2YQn/4aKy0+xIkS8+SZpAtzmKloz8bQo+8Bkjg9lSZxOw==","signatures":[{"sig":"MEUCIB/eaYcLcvsXe5LyjejCvLuQw+qGbtzcf5z5Cwh4P6sYAiEA6yqLsEZ278rC7l1c1/M1V40oRV1WgoqTM0xUp3RFxQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":867294},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"1d1e9251ba93aadddbd3a43f29bcb0342844c470","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --dts","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --dts","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","dependencies":{"react":"^19.1.0","react-dom":"^19.1.0","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*","@radix-ui/react-tooltip":"1.2.8"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@tailwindcss/postcss":"^4.1.12"},"_npmOperationalInternal":{"tmp":"tmp/menus_0.0.1_1760922800200_0.7220489836988309","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@edux-design/menus","version":"0.0.2","_id":"@edux-design/menus@0.0.2","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"02f5f0dc791879e6b2359d836e574bc298a6ac21","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-0.0.2.tgz","fileCount":8,"integrity":"sha512-pe5SMw5LLqXcfyIRf6cnl956WerA2NXgkNR7MIb9eIjFBsewCZZgBGQ20T5hU0NAFfTOL0FpMHWgZP9fw1V49g==","signatures":[{"sig":"MEUCIQCe4nDAQgKXKyIOD1d2cyH1XEyaMkEl7cJq1yZlkc9XzQIgOpMhm/SnD+KwDjR0pTA3/JjrQ3lYK/mFr6PV1OW14zU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13862},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fa885fbb88344e681e89454333d2e7cd6983bd9e","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --dts","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --dts","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_0.0.2_1760926819326_0.3253140847955476","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@edux-design/menus","version":"0.0.3","_id":"@edux-design/menus@0.0.3","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"05528f9aeb2d3c67a037b58bb69a9b0e855f0352","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-0.0.3.tgz","fileCount":8,"integrity":"sha512-vZzCksvhWwVSz+QMYF2Ih32zTXO2KRAbSMUrOBwo2gmJ4iCrrxl0770q8VkjbvpsqDtCQluWIdCIxmUNXjzq/w==","signatures":[{"sig":"MEQCIGNxvVmk3anWskd0iMlVuKKm2sFx7+s9Z1I8o/misRamAiBOyLf8oGMuMkV2IigU1xghGlVUh2d0H9RjJoNcQRi8Rw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":871452},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fa885fbb88344e681e89454333d2e7cd6983bd9e","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --dts","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --dts","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_0.0.3_1761193178955_0.24138265517756863","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@edux-design/menus","version":"0.0.4","_id":"@edux-design/menus@0.0.4","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"e8fad52bf3e8b3601128495d073a7b73895cb8ca","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-0.0.4.tgz","fileCount":8,"integrity":"sha512-MoIEF6INOcxQ1al/YEQ+AqKdjnSZryXFuLdXozkziV1HVAiIQgp/xeR72Zbi5fphT91g4TLtusdn0NKyfmAikg==","signatures":[{"sig":"MEUCIQDPzf0qEaSwEDgPP7Xd8raOaltCXBjOWOk4GQsBQICU0AIgIXUQye0oMgWAtkZJFbKH+6NXpf09MCW8pXfUOX29074=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18119},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fa885fbb88344e681e89454333d2e7cd6983bd9e","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_0.0.4_1761542175648_0.2527103023068","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@edux-design/menus","version":"0.0.5","_id":"@edux-design/menus@0.0.5","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"e25dbe5c5ebf125a750d85a42c7cc243d92e27ad","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-0.0.5.tgz","fileCount":8,"integrity":"sha512-k/5rSlHAwqxJI+1BPkHGEHbeiSLt9n5EI2OFJN+a62qW9K+UET/sI+VqXMToW/LDu/8VZyx5gVPxuhkSLs2HZw==","signatures":[{"sig":"MEUCIQDohOu1dcM40WYtZunylwGdeZCu7xXCZiYniyvJy9XdnAIgUIMs0Ii0XZ2ExfOj0rj2l/eZVIYWgsep3xLvpDmK4C0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19830},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fa885fbb88344e681e89454333d2e7cd6983bd9e","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_0.0.5_1761543714062_0.5977068545091717","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@edux-design/menus","version":"0.0.6","_id":"@edux-design/menus@0.0.6","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"43e7f4534d0a031415a78b32fff11113dc3d18fe","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-0.0.6.tgz","fileCount":8,"integrity":"sha512-2Ix32fQJp/O6oRDECevAKBC4Lv31nU2HMCvFgQksb6XM6oYG30Nw23bSw5O0ymGkidakMFlK/NE56zVjqszk0g==","signatures":[{"sig":"MEYCIQDLLR1oJJi1lTSJVjELPPN7nTbo99H9fQMtBgO8jiWr8QIhAIwiK3Ze6DXpbvGn9Bc1N3foGWz3msQY1ZzRFz8WHpZ3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19945},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fa885fbb88344e681e89454333d2e7cd6983bd9e","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_0.0.6_1761544380389_0.019316634746931793","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@edux-design/menus","version":"0.0.7","_id":"@edux-design/menus@0.0.7","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"085de46207029c0d6323a9e74753d3bf192ef393","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-0.0.7.tgz","fileCount":8,"integrity":"sha512-Mz6llrwDdh59ELkCq2QECcBFv/FHXRgyuGfopQa5kTand3QB//7mXtbIh6nohXZKdOpR5aN3vktSO5Hin1RJOA==","signatures":[{"sig":"MEYCIQDNHNOdlB5Foku6HaIivbwC5oFCgb6YklPG7TcpRsveXwIhAKOPAPbnFvd4b/Y0OUYuV7iGTBNkATj5THx0tmwr35QC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21894},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fa885fbb88344e681e89454333d2e7cd6983bd9e","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_0.0.7_1761605432401_0.7489816756546803","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@edux-design/menus","version":"0.0.8","_id":"@edux-design/menus@0.0.8","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"9b46e509644d2a446ace6bd5609b312933dce6f3","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-0.0.8.tgz","fileCount":8,"integrity":"sha512-6ycLYHq+IcXGmSXdiF5621bi9t5SLEi6SB+w8U405eb9qimtrQPqb61dDshyYj+Z9UBdZ3MQ5OXY5JNvZ5SMqQ==","signatures":[{"sig":"MEYCIQCyKJgbPMiZxDdv+NxhpxgEcnLqKeYOajVconakFZbSAQIhAN3OEKJK0ETRD/tX5TzemS925kiGHY7Cg8C9upqDqb2N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25500},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fa885fbb88344e681e89454333d2e7cd6983bd9e","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_0.0.8_1761612599397_0.4564873292111422","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@edux-design/menus","version":"0.0.9","_id":"@edux-design/menus@0.0.9","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"016a8be51763cd84413819d50a5808d50486d8d1","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-0.0.9.tgz","fileCount":9,"integrity":"sha512-1B51RQxIDFMZ5SrgZDKZCInGPcLY+YzSCqokjvM1JmkL2E41b6SIRGoEjpCqSRVLayP6ce4HKkKHVMk5IwZrvQ==","signatures":[{"sig":"MEQCIHzRbJ5SCWlMaBNCJ9wnVkTD2dD9krkEEb0Xvbp9QoToAiB6jDG5WdnxhnbtWb4WOc3T2+cFskPVtoIOh3XzL14Kdw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27929},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"f5cbe7e930f10ef501a97afc6c5cdcb4edd29812","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","description":"Accessible menu primitives built on top of the popover system. The package exports:","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_0.0.9_1765248138980_0.7495335765978666","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@edux-design/menus","version":"1.0.0","_id":"@edux-design/menus@1.0.0","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"908c944e444766138061bad0af130dc874442cac","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-1.0.0.tgz","fileCount":9,"integrity":"sha512-nzFVxroSSwmUQsFPDQZDKVpJQsF7OXo4yV8dAtcVNTgFk1TcyHLwj8CBAsVR51ogJnnXTuyI64A04CzDxxN3Dg==","signatures":[{"sig":"MEUCIQDcodRBh2WF0CT5nk8PlSH6f1W+o85wf0d+/WXqwQYewAIgO3M5pXSlj9CoW/M9nzuwZfo9gOQl/X0t7kS5Z8UMhwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28074},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"7250cb811a32db15e58b04e1b9865d3876905b5f","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","description":"Accessible menu primitives built on top of the popover system. The package exports:","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_1.0.0_1767265777678_0.6513610015678952","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@edux-design/menus","version":"1.0.1","_id":"@edux-design/menus@1.0.1","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"803d24c6cacaab30e8628ac1979cad9dbf1b9ea5","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-1.0.1.tgz","fileCount":9,"integrity":"sha512-RaUQs3YtI4EjnyZ11IN//5LmlIq1w6zkMRyigvLsz0v/zd8b8f6YXXrGgIoMki6P/gOl47ppW9Ms95zY5y9Ryw==","signatures":[{"sig":"MEUCIQDXuj7z2gr2V7pwrV7lw4mvLDZ+0uFFdxO7msj7zN+qRwIgeUFVDsRveA8rY2xN+XhbYtrTpO8rUATCxnCknELyZic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29465},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"0f1cd0a0aa07ecb9511a73dab0b66549878f24ab","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","description":"Accessible menu primitives built on top of the popover system. The package exports:","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_1.0.1_1775689299759_0.3840619596236101","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@edux-design/menus","version":"1.0.2","_id":"@edux-design/menus@1.0.2","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"dist":{"shasum":"0d381f3e9cdaccffd78502b6be07ecd098f1f9e5","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-1.0.2.tgz","fileCount":11,"integrity":"sha512-CdcaqxYveIoSpori7ujljUOosnVphhZuZ6Q7192692A0rouoVGEQq/kc8WG0UKOAkCKsUNtn/SHBHhlb6a/B3A==","signatures":[{"sig":"MEQCIBYGKemzSxD1QC1OdlIjRhvPR1NHTBxz/9KK4i+M155JAiApb5RN/ROGT5ybBwoaLGdmgqwmlZbck9+FnbryptQ4gg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117741},"types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"132adf84dec372c46d4e0d87545649d21c71fc5c","private":false,"scripts":{"dev":"tsup src/index.js --watch --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","check-types":"tsc --noEmit","generate:component":"turbo gen react-component"},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"_npmVersion":"10.9.2","description":"Accessible menu primitives built on top of the popover system.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","postcss":"^8.5.6","typescript":"^5.9.2","tailwindcss":"^4.1.12","@tailwindcss/cli":"^4.1.12","@edux-design/utils":"*","@edux-design/buttons":"*","@tailwindcss/postcss":"^4.1.12","@edux-design/popovers":"*"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/buttons":"*","@edux-design/popovers":"*"},"_npmOperationalInternal":{"tmp":"tmp/menus_1.0.2_1784279796168_0.26180171522264484","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@edux-design/menus","version":"1.0.3","private":false,"sideEffects":["**/*.css"],"types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"lint":"eslint . --max-warnings 0","build":"tsup src/index.js --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","dev":"tsup src/index.js --watch --format esm,cjs --external react,react-dom,@edux-design/utils,@radix-ui/react-popover","generate:component":"turbo gen react-component","check-types":"tsc --noEmit"},"peerDependencies":{"react":">=18","react-dom":">=18","@edux-design/utils":"*","@edux-design/popovers":"*","@edux-design/buttons":"*"},"devDependencies":{"typescript":"^5.9.2","tailwindcss":"^4.1.12","postcss":"^8.5.6","tsup":"^8.5.0","@tailwindcss/cli":"^4.1.12","@tailwindcss/postcss":"^4.1.12","@edux-design/utils":"*","@edux-design/popovers":"*","@edux-design/buttons":"*"},"_id":"@edux-design/menus@1.0.3","gitHead":"de9a978f289dd3d3b8cfa9c6fdf9fc6ab40900d0","description":"Accessible menu primitives built on top of the popover system.","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-NWg29xjn28aszdjT2fiRujGfxCDYdA+e+rnCIEyNRC2+Z/cy37ttqyzp9UrA0TIlU/TluGiHqK2RDTwFHP9mtQ==","shasum":"027ef0a274af0abc39caf7b4fddcbf94a7fd9a42","tarball":"https://registry.npmjs.org/@edux-design/menus/-/menus-1.0.3.tgz","fileCount":11,"unpackedSize":126229,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDfTSPRP9Bo+uHp6MUj204lR5l5SnVwI8QNeicMGOQ8AAIhAIUwW1KNPT6ceY4GtneRD2oornMn7J9IV7clvoG3Acrb"}]},"_npmUser":{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"},"directories":{},"maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/menus_1.0.3_1784328615387_0.6699635301336149"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-20T01:13:20.125Z","modified":"2026-07-17T22:50:15.709Z","0.0.1":"2025-10-20T01:13:20.440Z","0.0.2":"2025-10-20T02:20:19.515Z","0.0.3":"2025-10-23T04:19:39.198Z","0.0.4":"2025-10-27T05:16:15.853Z","0.0.5":"2025-10-27T05:41:54.300Z","0.0.6":"2025-10-27T05:53:00.573Z","0.0.7":"2025-10-27T22:50:32.572Z","0.0.8":"2025-10-28T00:49:59.602Z","0.0.9":"2025-12-09T02:42:19.113Z","1.0.0":"2026-01-01T11:09:37.836Z","1.0.1":"2026-04-08T23:01:39.906Z","1.0.2":"2026-07-17T09:16:36.295Z","1.0.3":"2026-07-17T22:50:15.549Z"},"description":"Accessible menu primitives built on top of the popover system.","maintainers":[{"name":"vjdalsanto26","email":"viraj.gunawardana@cambridge.org"}],"readme":"# @edux-design/menus\n\nAccessible menu primitives built on top of the popover system.\n\nThe package exports:\n\n- `Menu` for either a trigger button menu or a viewport-anchored context menu\n- `MenuList` for the focus-managed menu surface\n- `MenuGroup`, `MenuGroupLabel`, and `MenuSeparator` for grouped sections\n- `MenuItem` for actionable rows with optional leading and trailing adornments\n- `MenuSub`, `MenuSubTrigger`, and `MenuSubContent` for nested secondary menus\n\nMenus integrate with `@edux-design/buttons` for triggers and `@edux-design/popovers` for positioning.\nShared overlay and row-emphasis motion comes from `@edux-design/tokens`.\n\n---\n\n## Installation\n\n```bash\npnpm add @edux-design/menus @edux-design/buttons @edux-design/popovers @edux-design/utils\n# or\nnpm install @edux-design/menus @edux-design/buttons @edux-design/popovers @edux-design/utils\n```\n\nPeer deps also include `react@^19.1.0` and `react-dom@^19.1.0`.\n\n---\n\n## Usage\n\n```jsx\nimport {\n  Menu,\n  MenuList,\n  MenuGroup,\n  MenuItem,\n  MenuSub,\n  MenuSubTrigger,\n  MenuSubContent,\n} from \"@edux-design/menus\";\n\nexport function InsertMenu() {\n  return (\n    <Menu\n      button=\"Insert\"\n      contentProps={{ className: \"min-w-[220px]\" }}\n      trapFocus={false}\n      disableOutsidePointerEvents={false}\n      onOpenAutoFocus={(event) => event.preventDefault()}\n    >\n      <MenuList>\n        <MenuItem startAdornment={<span>Aa</span>}>Heading</MenuItem>\n        <MenuItem endAdornment={<span>Ctrl+K</span>}>\n          Command palette\n        </MenuItem>\n\n        <MenuSub>\n          <MenuSubTrigger startAdornment={<span>#</span>}>\n            Layout\n          </MenuSubTrigger>\n          <MenuSubContent>\n            <MenuList className=\"min-w-[200px]\">\n              <MenuItem>Two columns</MenuItem>\n              <MenuItem>Three columns</MenuItem>\n            </MenuList>\n          </MenuSubContent>\n        </MenuSub>\n      </MenuList>\n    </Menu>\n  );\n}\n```\n\nGrouped sections can either be composed explicitly with `MenuGroup`, or inferred automatically from `group`, `groupLabel`, and `groupOrder` on direct `MenuItem` and `MenuSub` children.\n\nFor context-menu use cases, control the menu externally and pass `anchorPoint={{ x, y }}` from the pointer event instead of rendering a trigger button.\n\n```jsx\nimport { useState } from \"react\";\nimport { Menu, MenuList, MenuItem } from \"@edux-design/menus\";\n\nexport function CanvasContextMenu() {\n  const [anchorPoint, setAnchorPoint] = useState(null);\n\n  return (\n    <>\n      <div\n        onContextMenu={(event) => {\n          event.preventDefault();\n          setAnchorPoint({ x: event.clientX, y: event.clientY });\n        }}\n      >\n        Right-click me\n      </div>\n\n      <Menu\n        open={Boolean(anchorPoint)}\n        onOpenChange={(nextOpen) => {\n          if (!nextOpen) {\n            setAnchorPoint(null);\n          }\n        }}\n        anchorPoint={anchorPoint}\n      >\n        <MenuList>\n          <MenuItem onClick={() => setAnchorPoint(null)}>Cut</MenuItem>\n          <MenuItem onClick={() => setAnchorPoint(null)}>Copy</MenuItem>\n        </MenuList>\n      </Menu>\n    </>\n  );\n}\n```\n\n---\n\n## Component API\n\n### `Menu`\n\n- Accepts either a string trigger, which renders an `@edux-design/buttons` `Button`, or a custom React node.\n- `button` is optional when using `anchorPoint` for a triggerless context menu.\n- Supports controlled and uncontrolled modes via `open`, `defaultOpen`, and `onOpenChange`.\n- Use `anchorPoint={{ x, y }}` to position the root menu directly from viewport coordinates such as a right-click event.\n- Forwards `align`, `side`, `trapFocus`, `disableOutsidePointerEvents`, and other content props to the underlying popover.\n- Applies the shared `.eds-motion-overlay` recipe from `@edux-design/tokens` by default.\n\n### `MenuItem`\n\n- Use `startAdornment` for a leading icon, badge, or label.\n- Use `endAdornment` for a shortcut hint, status badge, or custom trailing content.\n- Use `disabled` to make an item non-interactive.\n- Use `closeOnSelect={false}` when selecting the item should not dismiss the full menu tree.\n- Use `group`, `groupLabel`, and `groupOrder` when the list should auto-build grouped sections.\n- Uses the shared `.eds-motion-row-emphasis` recipe from `@edux-design/tokens` for hover and focus emphasis.\n\n### `MenuGroup`\n\n- Wrap related items in `MenuGroup` to render a section label and divider without repeating group props on each child.\n- Use `label` for the heading text and `order` to sort groups when multiple groups are present in one list.\n- Use `MenuGroupLabel` and `MenuSeparator` directly when you need fully manual structure.\n\n### `MenuSub`\n\n- `MenuSub` manages a nested secondary menu.\n- `MenuSubTrigger` renders like a normal `MenuItem` and adds a trailing submenu indicator by default.\n- `MenuSubContent` positions the nested panel to the right of the trigger by default.\n- `MenuSub` also supports `group`, `groupLabel`, and `groupOrder` when it is a direct child of `MenuList`.\n\n---\n\n## Keyboard behavior\n\n- `ArrowDown` and `ArrowUp` loop through items in the active menu list.\n- `Home` and `End` jump to the first and last enabled items.\n- Typeahead moves focus to the next matching item label.\n- `Enter` and `Space` activate the focused item.\n- `ArrowRight` opens a focused submenu trigger.\n- `ArrowLeft` and `Escape` close the active submenu and return focus to its trigger.\n- `Tab` closes the menu so focus can leave naturally.\n- Selecting a standard `MenuItem` closes the full open menu tree.\n\n---\n\n## Development\n\n```bash\npnpm --filter @edux-design/menus lint\npnpm --filter @edux-design/menus check-types\npnpm --filter @edux-design/menus build\n```\n\nStorybook examples live in `src/demos/Menu.stories.jsx`.\n\n---\n\n## Notes\n\n- Menu items render as `<li role=\"menuitem\">` rows inside a `role=\"menu\"` list.\n- When integrating with routing libraries, keep navigation inside the item `onClick`.\n- Menu animations are applied via the `data-[state=open|closed]` classes on the popover content.\n","readmeFilename":"README.md"}