Step 5 of sending a post (waiting for the AppView to index the new record)
can take an unbounded amount of time, but the post is already created after
step 4. Close the composer immediately after the record is written and show
a pending toast while the AppView wait runs in the background. When it
settles, swap the pending toast in place for the existing success toast.
Adds a 'pending' ToastType that renders a spinner via the existing Loader,
and a new Toast.promise() helper that drives the in-place swap on both
sonner and sonner-native.
* Split out into macro component
* Add Action component
* Add fallback
* add button to view post after sending
* Dismiss toast when clicking action button
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* update: toast colors for accessibility
* update: toast color codes from figma
* condense the colors to remove select calls that are unecessary
* remove unused select
* Reorg
* Move animation into css file
* Update style comment
* Extract core component, use platform-specific wrappers
* Pull out platform specific styles
* Just move styles into Toast component itself
* Rename cleanup
* Update API
* Add duration optional prop
* Add some type docs
* add exp eased slide aniamtions
* Make toasts full width on mobile web
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>