In-feed notices

## Background

* We currently struggle to display notices / prompts in a consistent and clear manner.
  * Build you algorithm is one-off design
  * Verify email is a one-off design
  * Some notices such as 'Minds Chat' appear in the sidebar.
    * Anything displayed in the sidebar is available to desktop users only, so mobile responsive and mobile users miss out.
* Additionally, we want to present new calls to action to users, e.g. Download the app, Refer friends

## Proposition

The above issues have prompted us to explore a means a more effective method of delivering notices.
* Notices should be designed as a system, that can be used across all screen sizes on web, as well as mobile.
* There should be consistent design languages across all notices.
* We assume that clear, relevant and well positioned notices will result in an upward trend of actions committed by the user.

## Designs

* [Responsive component designs](https://www.figma.com/file/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?node-id=865%3A7348)
* [Light mode example](https://www.figma.com/file/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?node-id=865%3A9264)
* [Questionnaire](https://www.figma.com/proto/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?page-id=865%3A7347&node-id=865%3A8394&viewport=241%2C48%2C0.5&scaling=min-zoom)
* [Verify email](https://www.figma.com/proto/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?page-id=865%3A7347&node-id=865%3A8388&viewport=241%2C48%2C0.5&scaling=min-zoom)

## Behaviors
1. Notices appear on the Newsfeed. We should leave open the possibility to display them elsewhere in the future.
2. Only one notice is displayed per page. If the user qualifies for multiple notices, the highest-priority notice is displayed until either (a) its action is completed, or (b) the notice is dismissed.
3. The notice states should be consistent across sessions and devices. If a user dismisses the questionnaire notice on web, they should not then see it on mobile.
4. When user clicks dismiss, should it be dismissed for 60 days.
----
- **For the future**: We want to use this component to message many more things in the future (e.g. user surveys, connect wallet, town hall invites, etc.) but we're concerned about overwhelming the feeds. While not necessary for this initial effort, we should think about and plan for a method for determining when and where in a feed to present these to users, when they are most likely to engage with them. Consider every appearance of a notice an opportunity, and the opportunity cost of presenting the wrong one, presenting one at the wrong time, etc.

## Notices
There are many applications for in-feed notices, however the initial iteration will be limited to the following use cases.

| Notice                    | Description                                                                                                                                                                                      | Dismissable | Position | Sticky | Display priority | Conditions                              | Primary action                                                            | Secondary action                          |
|---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|----------|--------|------------------|-----------------------------------------|---------------------------------------------------------------------------|-------------------------------------------|
| Verify your email address | Click the link in your email to verify your address and get the most out of Minds. This helps us fight spammers. (Ironically, check your spam folder if you don't find our email in your inbox.) | No          | Top      | Yes    | 1                | User has not yet verified email         | Re-send email                                                             |                                           |
| Enable notifications      | Get alerted when someone replies to you, or likes, reminds, or subscribes to your content. Customize your settings to decide which notifications you want.                                       | Yes         | In-feed  | No     | 3                | User has not enabled push notifications | Enable notifications                                                      | Customize (link to notifications settings) |
| Build your algorithm      | Take control of your social media. Your preferences will improve your Discovery and similar feeds. But don't worry, it won't impact your default newsfeed.                                       | Yes         | Top      | No     | 2                | User has not yet completed BYA          | Complete questionnaire (launch modal)                                     | Learn more (link to blog)                 |
| Invite friends            | Minds gets better with friends. Share your referral link to invite them to join. If they earn money on Minds, you'll earn a 5% referral fee.                                                     | Yes         | In-feed  | No     | 4                | User has no referrals in last 60 days   | Share invite (copy referral URL; on mobile, display native share options) |                                           |

## Analytics

For each new type of in-feed notice we create, we should set up analytics that let us measure the reach and effectiveness of the notice. Things to measure:

- [ ] Impressions: How many times was a notice viewed
- [ ] Engagements (Primary): How many times did the primary action get clicked
- [ ] Engagements (Secondary): How many times did the secondary action get clicked
- [ ] Dismissals: How many times was the notice dismissed (user clicked `X` to remove)

## Acceptance
- [ ] A new user who has not yet verified an email address will see the `Verify your email address` notice.
- [ ] A user who has not yet enabled push notifications will see the `Enable push notifications` notice.
- [ ] A user who has not yet completed the social compass will see the `Build Your Algorithm` notice.
- [ ] A user who has not referred any friends in 60 days will see the `Invite friends` notice.
- [ ] The notices are presented, one at a time, per the priority order indicated above.
- [ ] The notices are positioned on the page according to the table above.
- [ ] The `Verify your email address` notice sticks to the top of the viewport. The other notices do not.
- [ ] Upon completing a notice, the state of the notice changes to indicate completion. @michaelfbradley 
- [ ] The old `Build your algorithm` Newsfeed component does not appear anymore.
- [ ] The old `Verify your email address` Newsfeed component does not appear anymore.
- [ ] The layout and visual style of the new notices matches the designs linked above.
- [ ] The notices respond to change in viewport size, changing between dark/light mode, and language settings (if translations are available).

Story points: 8.0