feat: PromptField (#10191)
* Initial TokenField implementation
* tokenize with regex
* rich copy paste
* undo/redo
* refactor undo/redo to enable external state updates
* Support autocomplete when the collection is not always mounted
* Add tests for undo/redo
* support positioning popover inline with cursor
* Add states and handle some browser differences
* setup tests
* Add more story examples
* PromptField
* lint
* update browser test scripts
* implement plus menu
* Wrap tokens in zero width spaces so cursor is placed correctly cross browser
* migrate to useKeyboard
* fix triple click
* Fix cursor position with trailing newlines
* skip flaky test for now
* run browser tests in ci
* run in docker
* set the working directory
* use absolute path?
* Pass value to menu onAction
* Support checking multiple drag types at once
* refactor PromptField API
* fix browser test
* Move TokenField into AI package temporarily
* revert running browser tests in CI for now
* cleanup
* Fix locale
* support async completions
* example of attachment upload states
* Add upload progress directly into Attachment component
* review comments
* don't depend on useKeyboard shortcuts
* typescript