* Add reference preview/edit drawer to the library, with mobile bottom-sheet layout
* Fix stylelint comment spacing and update library Cypress spec for the drawer flow
* Fix desktop drawer focus/escape handling and autosave race in the library
Replace the desktop preview panel's hand-rolled Escape listener with the
shared FocusTrap component (already used for the mobile sheet), fixing
missing focus trap/restore and reusing existing infrastructure instead of
duplicating it. Track whether the kebab actions menu is open via a ref so
Escape closes just the menu first, not the whole panel.
Guard the autosave-on-blur form against redundant saves (skip when nothing
changed since the last save) and out-of-order responses (serialize saves
through a queue so a later edit can't be clobbered by a stale response).
Remove dead commented-out JSX for unimplemented tabs/actions.
* Reinstate library reference analytics events for the new preview drawer
* Surface an error notification when deleting a reference from the drawer fails
* Fix stuck kebab-menu state and blocked outside clicks in the reference drawer
* Share error-message extraction and add a test for the delete-failure path
* Fix formatting
* Fix the translation
GitOrigin-RevId: a0082377c6e3f6712fba80c485b9cde4d431c90f
* Rename dropdown primitives to OL-prefixed components
* Migrate all consumers to OL-prefixed dropdown components
* Migrate subscription dropdown shells to OL components
* Update pdf-preview story to OL-prefixed dropdown components
* Migrate navbar and spelling dropdowns to OL components
* Move dropdown primitives to ol/ol-dropdown-menu, remove BS5 import aliases
* Rename dropdown prop types to OL-prefixed, clean up BS5 import aliases
* Widen OLDropdownItem/Toggle/Menu props to include AriaAttributes and data-*
GitOrigin-RevId: 0babce46867849b3f176bac8cf1652dc76fd34da
* Merge intermediate component wrappers into OL-prefixed components
* Replace all intermediate wrapper consumers with OL-prefixed components directly
* Fix jsx/js files still importing deleted shim components
* Remove duplicate OLNotification imports left by first pass
* Rename OLTagIcon to TagIcon, remove OL prefix
* Rename OLDropdownMenuItem to DropdownMenuItem, remove OL prefix
* Remove OLNotification, use Notification directly
* Move Notification to the main shared component folder
* Update tag-icon import path out of ol/
* Move TagIcon to the main shared component folder
* Update dropdown-menu-item import path out of ol/
* Move DropdownMenuItem to the main shared component folder
* Fix dropdown-menu-item import path to dropdown/ subfolder
* Remove BS5 alias prefixes from shared components
* Restore notification-list wrapper in Notification component
* Add translation for loading button
* Remove redundant import aliasing
* Resolve conflicts
* Restore notification container `notification-list`
GitOrigin-RevId: 24a5af18599a3e02ac6fd61c09cf5a49ef6e0020
* [web] Disabled AI state for project collaborators
Displays a disabled state, along with an informative tooltip in Editor AI controls.
GitOrigin-RevId: a749cd25d54f6ef3d7bf4276343400894bc193a4
* visual updates to optional fields in manual bib entry
* omitting onClose from button auto complete props
GitOrigin-RevId: 922695e8eaec83702b482123dc4b4483fe957b78
* Initial working version of auto complete button component
* generalising button auto complete for use in bibtex entry form
* Adding optional fuzzy searching
* Restoring delete optional field
* Removing dropdown specific styling
* Updating item/group interface for autocomplete
* Auto complete allowing full keyboard nav functionality
* Custom class for dropdown-upward
* Adding error validation for duplicate name with standard field
* fixing type errors
* Replacing Fuse with MiniSearch
* Adding clear button and frontend tests for ol-autocomplete
* Adding fuzzysearch option to autocomplete story
* removing unused vars and noddy comment
* Fixing lint failure
* Updating fuzzy search threshold
* Using downshift natural highlight
* Required label for aria compliancy
* changing how create item is handled
* addressing review comments
* Using AutoExpandingTextArea for optional fields and hooking in validation
* Formatting
* Requiring items prop for ol-autocomplete
* Fixing type failure in test
GitOrigin-RevId: 9b8f719fbb2bdd75fc1d5a9076908559040a8a78
* Add a dark version of the checkbox component
* Add theming to storybook
* Fix storybook
* adding correct border colors
---------
Co-authored-by: davibaweja <davibaweja@gmail.com>
GitOrigin-RevId: e350ab7a0800edd960d99bb892e527b97106b17d
* Replace placeholders with labels
* Add 'Close dialog' label to modal close button to distinguish from footer Close button
* Add and translate heading on the not found page
* Update textarea to have id matching label's for attribute
Simplify test for template description textarea
* Label PDF zoom level dropdown button
* Improve test selectors to use semantic roles and accessible names
GitOrigin-RevId: d215ddca30ddf844cfffbcf0e528a601b134d772
* Add focus-trap-react npm package
* Trap the focus for the Modal
* In some cases, the focus will not return to the trigger element
* If there are no tabbable elements, the focus should fallback
* Add explanations for focusTrapOptions props and extend test
* Auto generate package-lock.json - Add focus-trap-react npm package
GitOrigin-RevId: 488a05d5e95dd369c69bedcfaf7c1fd5e456e302
* Convert OLModal to named exports only
* Make closeButton the default for OLModalHeader
* Set `closeButton={false}` for modal that is not dismissible
* Fix duplicated imports
* Remove another unnecessary `closeButton` prop
* Fix import
---------
Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>
GitOrigin-RevId: ddd7be6e59a966ac634683d2494d6e9d2c3732e6
* Update test for the loading spinner component
* Create a story for the loading spinner component
* Move role and use CSS for spacing instead
* Add a classname prop
* Reuse LoadingSpinner
* Use OLSpinner instead of Spinner
* Use data-testid since status role was moved
* Wait for journals to load
* Use `isLoading` prop instead and fix the button's height
* Use `isLoading` prop instead
* Use LoadingSpinner instead and remove spacing
* Update test for the loading spinner component
* Use `isLoading` prop instead
* Add aria-describedby to layout button for processing state
* Replace `spinner` to `ol-spinner`
* Scope status
* Remove redundant `div.loading`
---------
Co-authored-by: Antoine Clausse <antoine.clausse@overleaf.com>
GitOrigin-RevId: 8f43b991f8f458b2abd5a4661913ac9b972d892a