* chore: Replace lodash with es-toolkit
Migrate all direct lodash imports to es-toolkit/compat for a smaller,
faster, lodash-compatible utility library. Transitive lodash usage from
other packages remains unchanged.
* fix: Restore isPlainObject semantics in CanCan policy
The lodash migration aliased `isObject` to `lodash/isPlainObject` and
the codemod incorrectly mapped the local name to es-toolkit's `isObject`,
which also returns true for arrays and functions. This caused condition
objects in policy definitions to be skipped, breaking authorization
checks across the codebase.
* fix: Restore unicode-aware length counting in validators
es-toolkit/compat's size() returns string.length, while lodash's _.size()
counts unicode code points. Switch to [...value].length to preserve the
previous behavior so multi-byte characters like emoji count as one.
* fix: loading of doc policies should be delayed until menu is opened
* fix: fetch upon hover and display menu only when data is loaded
* fix: remove documents.isFetching
* fix: wait for policies to load
* fix: bifurcate
* fix: className is never used at any callsite of
* fix: MenuContext
* fix: collection is derived from document
* fix: mount MenuContent only when button is clicked
* fix: jsdoc
* fix: aria-label
* fix: review