* 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: Icon spacing in filter menus
fix: Selected options should be sorted to the top always
* fix: Focus lost when typing in filter options
* Reduce size of selected icon
* Fix issue #8026: Prevent multiple context menus from being open simultaneously
- Created useCoordinatedMenuState hook that wraps Reakit's useMenuState
- Enhanced MenuProvider with menu registry and coordination logic
- Expanded MenuProvider scope to wrap entire application
- Updated key menu components to use coordinated menu state:
- DocumentMenu
- Template (SubMenu)
- FilterOptions
- AccountMenu
- CollectionMenu
- Ensures only one context menu can be open at a time
- Maintains existing Reakit integration and component structure
* Update all imports, add lint rule
* Update to named export
* fix: Sidebar still needs separate MenuProvider to track isOpen within
* fix: Cannot directly open a menu with another open
---------
Co-authored-by: codegen-sh[bot] <131295404+codegen-sh[bot]@users.noreply.github.com>
Co-authored-by: Tom Moor <tom@getoutline.com>
* improv: use statusFilter instead of includeArchive,includeDrafts for document search
* improv: update FilterComponent to add support for multiple selected items
* feat: update document type search ui
* fix test
* Restore support for old parameters to avoid breaking change
---------
Co-authored-by: Tom Moor <tom.moor@gmail.com>
* fix: add toc to mobile views and center the branding
* add padding to bottom of sidebar
* put the mobile branding inline
* finesse the padding
* make spelling of sign-in email less crazy looking
* move mobile sidebar button into header
* adds scene to search and 404 pages
* fix title alignment
* make filter buttons tight
* clean up unused imports
* lint
Co-authored-by: Tom Moor <tom.moor@gmail.com>
This PR moves the entire project to Typescript. Due to the ~1000 ignores this will lead to a messy codebase for a while, but the churn is worth it – all of those ignore comments are places that were never type-safe previously.
closes#1282