* feat(base/modal): order props alphabetically
* feat(base/ui): added ripple color for tertiary button
* feat(prejoin): removed autoFocus from input and adjusted content
* feat(conference): adjusted RaisedHandCountLabel and added extra code spaces
* feat(prejoin): fixed content to fit tablets
* feat(conference): moved header button styles to navigation styles
* feat(mobile/navigation): updated header navigation button styles
* feat(prejoin): updated elements width, removed left inset
* feat(base/modal) added keyboard dismiss functionality
* feat(lobby) updated ui and start knocking if name is set
* feat(prejoin) updated ui and hide input if name is not required
* feat(prejoin) updated join button styles
* feat(prejoin) removed extra empty space
* feat(prejoin) updated disable join condition
* feat(base/modal) moved keaboard dismiss functionality
* feat(conference) updated auto knock condition
* feat(prejoin) updated button styles and disabling condition
* feat(lobby) updated styles
* feat(lobby/prejoin) updated styles for buttons and inputs
* feat(lobby/prejoin) updated contentContainer styles
* feat(lobby/prejoin) created shouldEnableAutoKnock helper
Up until now we relied on implicit loading of middlewares and reducers, through
having imports in each feature's index.js.
This leads to many complex import cycles which result in (sometimes) hard to fix
bugs in addition to (often) breaking mobile because a web-only feature gets
imported on mobile too, thanks to the implicit loading.
This PR changes that to make the process explicit. Both middlewares and reducers
are imported in a single place, the app entrypoint. They have been divided into
3 categories: any, web and native, which represent each of the platforms
respectively.
Ideally no feature should have an index.js exporting actions, action types and
components, but that's a larger ordeal, so this is just the first step in
getting there. In order to both set example and avoid large cycles the app
feature has been refactored to not have an idex.js itself.