Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
Weblate 2019-02-27 17:33:37 +00:00
commit 2194eebfd0
255 changed files with 3715 additions and 3159 deletions

View file

@ -31,7 +31,6 @@ src/components/views/globals/UpdateCheckBar.js
src/components/views/messages/MFileBody.js
src/components/views/messages/RoomAvatarEvent.js
src/components/views/messages/TextualBody.js
src/components/views/room_settings/AliasSettings.js
src/components/views/room_settings/ColorSettings.js
src/components/views/rooms/Autocomplete.js
src/components/views/rooms/AuxPanel.js

View file

@ -15,6 +15,9 @@ module.exports = {
"flowtype",
"babel"
],
globals: {
LANGUAGES_FILE: "readonly",
},
env: {
es6: true,
},

View file

@ -1,3 +1,549 @@
Changes in [1.0.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v1.0.1) (2019-02-15)
===================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v1.0.0...v1.0.1)
* Fix community invites crashing the app
[\#2650](https://github.com/matrix-org/matrix-react-sdk/pull/2650)
Changes in [1.0.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v1.0.0) (2019-02-14)
===================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v1.0.0-rc.2...v1.0.0)
* Update from Weblate.
[\#2646](https://github.com/matrix-org/matrix-react-sdk/pull/2646)
* Remove 'welcome' from top-left menu
[\#2641](https://github.com/matrix-org/matrix-react-sdk/pull/2641)
* Turn on pin unread rooms for everyone
[\#2645](https://github.com/matrix-org/matrix-react-sdk/pull/2645)
* Update help buoy text and issue links
[\#2640](https://github.com/matrix-org/matrix-react-sdk/pull/2640)
* Fix icons being cut off in settings
[\#2644](https://github.com/matrix-org/matrix-react-sdk/pull/2644)
* Add credit for cover photo usage
[\#2643](https://github.com/matrix-org/matrix-react-sdk/pull/2643)
* make e2e icons on message transparent
[\#2642](https://github.com/matrix-org/matrix-react-sdk/pull/2642)
* fix close button being half off screen
[\#2639](https://github.com/matrix-org/matrix-react-sdk/pull/2639)
* Fix excessive timeline whitespace
[\#2638](https://github.com/matrix-org/matrix-react-sdk/pull/2638)
* Remove the white screen of welcome
[\#2637](https://github.com/matrix-org/matrix-react-sdk/pull/2637)
* always rerender room tiles
[\#2636](https://github.com/matrix-org/matrix-react-sdk/pull/2636)
Changes in [1.0.0-rc.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v1.0.0-rc.2) (2019-02-14)
=============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v1.0.0-rc.1...v1.0.0-rc.2)
* Update from Weblate.
[\#2635](https://github.com/matrix-org/matrix-react-sdk/pull/2635)
* use throttle as its more responsive
[\#2632](https://github.com/matrix-org/matrix-react-sdk/pull/2632)
* update range when items size changes
[\#2631](https://github.com/matrix-org/matrix-react-sdk/pull/2631)
* Fix registration after clicking email link
[\#2630](https://github.com/matrix-org/matrix-react-sdk/pull/2630)
* Re-check key backup status when settings opened
[\#2626](https://github.com/matrix-org/matrix-react-sdk/pull/2626)
* Improve room list rendering performance
[\#2629](https://github.com/matrix-org/matrix-react-sdk/pull/2629)
* Adjust top left menu items
[\#2628](https://github.com/matrix-org/matrix-react-sdk/pull/2628)
* Normalised icon strokes to 1px
[\#2627](https://github.com/matrix-org/matrix-react-sdk/pull/2627)
* Security: Force TURN setting was inverted
[\#2623](https://github.com/matrix-org/matrix-react-sdk/pull/2623)
* Add redesigned dark theme
[\#2619](https://github.com/matrix-org/matrix-react-sdk/pull/2619)
* Fix mx_RoomTile_name weighting
[\#2610](https://github.com/matrix-org/matrix-react-sdk/pull/2610)
* Add divider between tabs and regular buttons in room header
[\#2621](https://github.com/matrix-org/matrix-react-sdk/pull/2621)
* Update from Weblate.
[\#2622](https://github.com/matrix-org/matrix-react-sdk/pull/2622)
* Change taking a community off the left-left panel less scary
[\#2609](https://github.com/matrix-org/matrix-react-sdk/pull/2609)
* Fixes and styling related to e2e icons and dialogs
[\#2620](https://github.com/matrix-org/matrix-react-sdk/pull/2620)
* Fix: stickers layout
[\#2618](https://github.com/matrix-org/matrix-react-sdk/pull/2618)
* Fix: dont assume settings label only has one line
[\#2616](https://github.com/matrix-org/matrix-react-sdk/pull/2616)
* Labs feature: recent room breadcrumbs
[\#2615](https://github.com/matrix-org/matrix-react-sdk/pull/2615)
* Fix: roomlist reordering lags
[\#2612](https://github.com/matrix-org/matrix-react-sdk/pull/2612)
* Change text in e2e UX to new copy
[\#2617](https://github.com/matrix-org/matrix-react-sdk/pull/2617)
* Add display name / avatar to incoming sas dialog
[\#2613](https://github.com/matrix-org/matrix-react-sdk/pull/2613)
* Restore backup on new recovery method dialog
[\#2614](https://github.com/matrix-org/matrix-react-sdk/pull/2614)
* Welcome page cleanup
[\#2611](https://github.com/matrix-org/matrix-react-sdk/pull/2611)
* Scale up settings UI to be easier to read
[\#2604](https://github.com/matrix-org/matrix-react-sdk/pull/2604)
* !important shouldn't have a space
[\#2608](https://github.com/matrix-org/matrix-react-sdk/pull/2608)
* Add legacy verification button on wait
[\#2607](https://github.com/matrix-org/matrix-react-sdk/pull/2607)
* Update from Weblate.
[\#2606](https://github.com/matrix-org/matrix-react-sdk/pull/2606)
Changes in [1.0.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v1.0.0-rc.1) (2019-02-08)
=============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.14.8...v1.0.0-rc.1)
* Call isGuest correctly
[\#2603](https://github.com/matrix-org/matrix-react-sdk/pull/2603)
* Update from Weblate.
[\#2602](https://github.com/matrix-org/matrix-react-sdk/pull/2602)
* Prompt to restore backup rather than verify
[\#2594](https://github.com/matrix-org/matrix-react-sdk/pull/2594)
* Remove key backup & sas from labs
[\#2599](https://github.com/matrix-org/matrix-react-sdk/pull/2599)
* Update avatar colors
[\#2600](https://github.com/matrix-org/matrix-react-sdk/pull/2600)
* Fix: typeerror when creating DM
[\#2601](https://github.com/matrix-org/matrix-react-sdk/pull/2601)
* Render disabled mxField textareas as disabled
[\#2591](https://github.com/matrix-org/matrix-react-sdk/pull/2591)
* SDK support for welcome page
[\#2597](https://github.com/matrix-org/matrix-react-sdk/pull/2597)
* Change SAS to decimal / emoji
[\#2596](https://github.com/matrix-org/matrix-react-sdk/pull/2596)
* Render join rules and guest access changes in the timeline
[\#2592](https://github.com/matrix-org/matrix-react-sdk/pull/2592)
* Ensure toggle switches listen to property changes
[\#2590](https://github.com/matrix-org/matrix-react-sdk/pull/2590)
* Local echo on room access settings
[\#2593](https://github.com/matrix-org/matrix-react-sdk/pull/2593)
* guard custom tags with feature flag
[\#2589](https://github.com/matrix-org/matrix-react-sdk/pull/2589)
* remove ll feature flag, it's time!
[\#2588](https://github.com/matrix-org/matrix-react-sdk/pull/2588)
* Trust on decrypt
[\#2583](https://github.com/matrix-org/matrix-react-sdk/pull/2583)
* Remove click-to-verify from SAS
[\#2586](https://github.com/matrix-org/matrix-react-sdk/pull/2586)
* Fix: make sure custom tag scroller doesn't overflow parent
[\#2587](https://github.com/matrix-org/matrix-react-sdk/pull/2587)
* Fix: throttle custom tags updating in LLP
[\#2585](https://github.com/matrix-org/matrix-react-sdk/pull/2585)
* Fix firefox scrolling settings tabs differently
[\#2579](https://github.com/matrix-org/matrix-react-sdk/pull/2579)
* Actually change power levels when they are changed
[\#2580](https://github.com/matrix-org/matrix-react-sdk/pull/2580)
* Fix: logging in again breaks CustomRoomTagStore
[\#2584](https://github.com/matrix-org/matrix-react-sdk/pull/2584)
* Fix: click on notif badge
[\#2582](https://github.com/matrix-org/matrix-react-sdk/pull/2582)
* Extend slash command '/topic' to display the room topic
[\#2532](https://github.com/matrix-org/matrix-react-sdk/pull/2532)
* Fix: community badges
[\#2581](https://github.com/matrix-org/matrix-react-sdk/pull/2581)
* Bring back custom tags, also badges on communities
[\#2575](https://github.com/matrix-org/matrix-react-sdk/pull/2575)
* Style reset password to match design
[\#2578](https://github.com/matrix-org/matrix-react-sdk/pull/2578)
* Key Backup: Don't fail if no keys
[\#2577](https://github.com/matrix-org/matrix-react-sdk/pull/2577)
* Remove old user and room settings
[\#2554](https://github.com/matrix-org/matrix-react-sdk/pull/2554)
* increase debouncing of filtering because its quite laggy atm
[\#2576](https://github.com/matrix-org/matrix-react-sdk/pull/2576)
* Tweak field padding to avoid overlapping with selected text
[\#2573](https://github.com/matrix-org/matrix-react-sdk/pull/2573)
* Adapt login flow for the v2 design
[\#2574](https://github.com/matrix-org/matrix-react-sdk/pull/2574)
* Remove the arrow-paren lint rule
[\#2572](https://github.com/matrix-org/matrix-react-sdk/pull/2572)
* Ensure we show registration form when custom URLs are disabled
[\#2571](https://github.com/matrix-org/matrix-react-sdk/pull/2571)
* Fix: search term disappears when collapsing and expanding left panel
[\#2568](https://github.com/matrix-org/matrix-react-sdk/pull/2568)
* Fix: 'jump to bottom' creates big amounts of whitespace at the bottom
[\#2567](https://github.com/matrix-org/matrix-react-sdk/pull/2567)
* Fix: being able to size sections in leftpanel larger than their content
while filtering
[\#2566](https://github.com/matrix-org/matrix-react-sdk/pull/2566)
* Redesign: widget makeover
[\#2565](https://github.com/matrix-org/matrix-react-sdk/pull/2565)
* Restore dropdown chevron to right
[\#2564](https://github.com/matrix-org/matrix-react-sdk/pull/2564)
* Remove warning about encryption being beta
[\#2563](https://github.com/matrix-org/matrix-react-sdk/pull/2563)
* Add e2e icon to room header/composer/member info, more ...
[\#2557](https://github.com/matrix-org/matrix-react-sdk/pull/2557)
* Remove guest warning bar
[\#2562](https://github.com/matrix-org/matrix-react-sdk/pull/2562)
* Style tweaks to support auth background
[\#2561](https://github.com/matrix-org/matrix-react-sdk/pull/2561)
* Set a minimum width on the settings tab content
[\#2560](https://github.com/matrix-org/matrix-react-sdk/pull/2560)
* Fix exception while saving room settings
[\#2555](https://github.com/matrix-org/matrix-react-sdk/pull/2555)
* Disable old settings, making tabbed settings the default
[\#2559](https://github.com/matrix-org/matrix-react-sdk/pull/2559)
* fix UnknownDeviceDialog layout
[\#2558](https://github.com/matrix-org/matrix-react-sdk/pull/2558)
* Misc fixes to settings
[\#2553](https://github.com/matrix-org/matrix-react-sdk/pull/2553)
* Add error message when registration is disabled
[\#2548](https://github.com/matrix-org/matrix-react-sdk/pull/2548)
* Hide registration fields that aren't used by any flow
[\#2551](https://github.com/matrix-org/matrix-react-sdk/pull/2551)
* Ensure correct server URLs with .well-known and server type
[\#2547](https://github.com/matrix-org/matrix-react-sdk/pull/2547)
* Spell homeserver correctly
[\#2552](https://github.com/matrix-org/matrix-react-sdk/pull/2552)
* Auto-focus username on registration
[\#2546](https://github.com/matrix-org/matrix-react-sdk/pull/2546)
* Fixed settings dialog header; Adjust padding on dialog
[\#2549](https://github.com/matrix-org/matrix-react-sdk/pull/2549)
* Fix empty lightbox when there is no avatarUrl
[\#2314](https://github.com/matrix-org/matrix-react-sdk/pull/2314)
* make overflow gradients much smaller and turn bottom into drop shadow
[\#2544](https://github.com/matrix-org/matrix-react-sdk/pull/2544)
* Make auth validation less annoying
[\#2539](https://github.com/matrix-org/matrix-react-sdk/pull/2539)
* layout composer independent of avatar being present
[\#2545](https://github.com/matrix-org/matrix-react-sdk/pull/2545)
* Matthew/cyrillic
[\#2543](https://github.com/matrix-org/matrix-react-sdk/pull/2543)
* Allow expanding the left panel manually when in narrow mode
[\#2541](https://github.com/matrix-org/matrix-react-sdk/pull/2541)
* Redesign: community page cleanup
[\#2538](https://github.com/matrix-org/matrix-react-sdk/pull/2538)
* Redesign: Disable ILAG
[\#2536](https://github.com/matrix-org/matrix-react-sdk/pull/2536)
* Use custom appearance and arrow for field selects
[\#2540](https://github.com/matrix-org/matrix-react-sdk/pull/2540)
* Fix typo
[\#2537](https://github.com/matrix-org/matrix-react-sdk/pull/2537)
* Merge redesign into develop
[\#2535](https://github.com/matrix-org/matrix-react-sdk/pull/2535)
* disable e2e tests everywhere as redesign breaks them for now
[\#2534](https://github.com/matrix-org/matrix-react-sdk/pull/2534)
* avoid horizontal scrollbar in composer when placeholder doesn't fit
[\#2533](https://github.com/matrix-org/matrix-react-sdk/pull/2533)
* fix dropdown style when input is shown
[\#2531](https://github.com/matrix-org/matrix-react-sdk/pull/2531)
* Redesign: tiny fix: stretch device label in member info if content doesn't
fill it
[\#2530](https://github.com/matrix-org/matrix-react-sdk/pull/2530)
* Style registration flow
[\#2527](https://github.com/matrix-org/matrix-react-sdk/pull/2527)
* Redesign: small member info panel makeover
[\#2522](https://github.com/matrix-org/matrix-react-sdk/pull/2522)
* Render the home page when viewing the directory
[\#2529](https://github.com/matrix-org/matrix-react-sdk/pull/2529)
* Fix indentation on all new settings CSS
[\#2528](https://github.com/matrix-org/matrix-react-sdk/pull/2528)
* Round 1 of misc fixes for settings
[\#2526](https://github.com/matrix-org/matrix-react-sdk/pull/2526)
* Implement the Security & Privacy tab of new room settings
[\#2523](https://github.com/matrix-org/matrix-react-sdk/pull/2523)
* Implement the Advanced tab of new room settings
[\#2525](https://github.com/matrix-org/matrix-react-sdk/pull/2525)
* Implement the Roles & Permissions tab of new room settings
[\#2524](https://github.com/matrix-org/matrix-react-sdk/pull/2524)
* Redesign: room directory makeover
[\#2519](https://github.com/matrix-org/matrix-react-sdk/pull/2519)
* Iterate upon the room upgrade warning bar
[\#2518](https://github.com/matrix-org/matrix-react-sdk/pull/2518)
* redesign: small fixes
[\#2520](https://github.com/matrix-org/matrix-react-sdk/pull/2520)
* Implement the "general" tab of new room settings
[\#2516](https://github.com/matrix-org/matrix-react-sdk/pull/2516)
* Tweak auth overflow on Windows and Linux
[\#2521](https://github.com/matrix-org/matrix-react-sdk/pull/2521)
* Redesign: switch layout when filtering room sublists
[\#2515](https://github.com/matrix-org/matrix-react-sdk/pull/2515)
* Make native scrollbars prettier
[\#2470](https://github.com/matrix-org/matrix-react-sdk/pull/2470)
* Add server type selector and style login flow
[\#2517](https://github.com/matrix-org/matrix-react-sdk/pull/2517)
* Implement flair tab in user settings
[\#2512](https://github.com/matrix-org/matrix-react-sdk/pull/2512)
* Override UA/OS styles for disabled Field selects
[\#2502](https://github.com/matrix-org/matrix-react-sdk/pull/2502)
* Be more positive with setting labels
[\#2504](https://github.com/matrix-org/matrix-react-sdk/pull/2504)
* Redesign: new roomlist layout fixes
[\#2514](https://github.com/matrix-org/matrix-react-sdk/pull/2514)
* Redesign: new layout algorithm for room sublists.
[\#2507](https://github.com/matrix-org/matrix-react-sdk/pull/2507)
* Short-Authentication-String Verification
[\#2461](https://github.com/matrix-org/matrix-react-sdk/pull/2461)
* Fix unmount TypeError in `DeviceVerifyButtons`
[\#2513](https://github.com/matrix-org/matrix-react-sdk/pull/2513)
* Remove support for team servers
[\#2511](https://github.com/matrix-org/matrix-react-sdk/pull/2511)
* Initial structure for new room settings
[\#2510](https://github.com/matrix-org/matrix-react-sdk/pull/2510)
* Tweak wording on logout warning
[\#2509](https://github.com/matrix-org/matrix-react-sdk/pull/2509)
* Fix NPE in RoomRecoveryReminder
[\#2508](https://github.com/matrix-org/matrix-react-sdk/pull/2508)
* New text/caption for key backup by verifying device
[\#2506](https://github.com/matrix-org/matrix-react-sdk/pull/2506)
* Implement the "Security & Privacy" tab of new user settings
[\#2499](https://github.com/matrix-org/matrix-react-sdk/pull/2499)
* Add simple animations to toggle switches
[\#2505](https://github.com/matrix-org/matrix-react-sdk/pull/2505)
* Default a Field's placeholder to the label
[\#2503](https://github.com/matrix-org/matrix-react-sdk/pull/2503)
* Have the settings dialog be fixed in size
[\#2501](https://github.com/matrix-org/matrix-react-sdk/pull/2501)
* Implement the "Help & About" tab of new user settings
[\#2500](https://github.com/matrix-org/matrix-react-sdk/pull/2500)
* Implement the "Voice & Video" tab of new user settings
[\#2498](https://github.com/matrix-org/matrix-react-sdk/pull/2498)
* Add widget screenshots to the Labs section
[\#2497](https://github.com/matrix-org/matrix-react-sdk/pull/2497)
* Implement the "Preferences" tab on new user settings
[\#2495](https://github.com/matrix-org/matrix-react-sdk/pull/2495)
* Add target="_blank" to links that don't have it
[\#2496](https://github.com/matrix-org/matrix-react-sdk/pull/2496)
* Implement the "Notifications" tab of new user settings
[\#2494](https://github.com/matrix-org/matrix-react-sdk/pull/2494)
* Implement the "Labs" tab of new user settings
[\#2492](https://github.com/matrix-org/matrix-react-sdk/pull/2492)
* Implement the "General" tab of new user settings
[\#2491](https://github.com/matrix-org/matrix-react-sdk/pull/2491)
* Appease linter in auth related files
[\#2493](https://github.com/matrix-org/matrix-react-sdk/pull/2493)
* Update text and links in authentication flows
[\#2489](https://github.com/matrix-org/matrix-react-sdk/pull/2489)
* Move LanguageSelector to views
[\#2490](https://github.com/matrix-org/matrix-react-sdk/pull/2490)
* Restyle auth page language selector
[\#2488](https://github.com/matrix-org/matrix-react-sdk/pull/2488)
* Fix desktop captcha check
[\#2487](https://github.com/matrix-org/matrix-react-sdk/pull/2487)
* Basic structure for tabbed user settings
[\#2476](https://github.com/matrix-org/matrix-react-sdk/pull/2476)
* Token encouragement if zxcvbn gives no feedback
[\#2471](https://github.com/matrix-org/matrix-react-sdk/pull/2471)
* Fix: show rooms and people section when empty while filtering
[\#2481](https://github.com/matrix-org/matrix-react-sdk/pull/2481)
* Fix AuthFooter CSS rules conflicting with anchors all over the app
[\#2486](https://github.com/matrix-org/matrix-react-sdk/pull/2486)
* Support selects on Field
[\#2484](https://github.com/matrix-org/matrix-react-sdk/pull/2484)
* Fix integrations server error popup being hidden behind right panel
[\#2482](https://github.com/matrix-org/matrix-react-sdk/pull/2482)
* Fix: apparently room can be null here
[\#2480](https://github.com/matrix-org/matrix-react-sdk/pull/2480)
* Redesign: pull jump to bottom button out of room status bar
[\#2478](https://github.com/matrix-org/matrix-react-sdk/pull/2478)
* Redesign: set default size of 350px for left panel
[\#2479](https://github.com/matrix-org/matrix-react-sdk/pull/2479)
* Avoid "jumpiness" with inline typing indicator
[\#2456](https://github.com/matrix-org/matrix-react-sdk/pull/2456)
* De-lint CompatabilityPage & LoggedInView
[\#2472](https://github.com/matrix-org/matrix-react-sdk/pull/2472)
* Remove Status theme-specific hacks
[\#2473](https://github.com/matrix-org/matrix-react-sdk/pull/2473)
* Error if no sessions decrypted
[\#2469](https://github.com/matrix-org/matrix-react-sdk/pull/2469)
* Fix settings direct chat
[\#2466](https://github.com/matrix-org/matrix-react-sdk/pull/2466)
* Show verify button when we have a device to verify
[\#2464](https://github.com/matrix-org/matrix-react-sdk/pull/2464)
* Redesign: Add a form field component
[\#2463](https://github.com/matrix-org/matrix-react-sdk/pull/2463)
* Load fonts and images via source-relative URLs and requires
[\#2460](https://github.com/matrix-org/matrix-react-sdk/pull/2460)
* Say when backup is signed by unknown device
[\#2455](https://github.com/matrix-org/matrix-react-sdk/pull/2455)
* Add an /upgraderoom command to make upgrading easier for development
[\#2458](https://github.com/matrix-org/matrix-react-sdk/pull/2458)
* Merge develop->experimental
[\#2457](https://github.com/matrix-org/matrix-react-sdk/pull/2457)
* Fix: show hand cursor in topleft menu so its clear you can click it
[\#2454](https://github.com/matrix-org/matrix-react-sdk/pull/2454)
* Fix: search makeover missing icons
[\#2453](https://github.com/matrix-org/matrix-react-sdk/pull/2453)
* Redesign: search makeover
[\#2448](https://github.com/matrix-org/matrix-react-sdk/pull/2448)
* Revert "Tiled room UI"
[\#2451](https://github.com/matrix-org/matrix-react-sdk/pull/2451)
* Update from Weblate.
[\#2452](https://github.com/matrix-org/matrix-react-sdk/pull/2452)
* Improve room sublist resizing
[\#2440](https://github.com/matrix-org/matrix-react-sdk/pull/2440)
* Different dialog for new trusted backup
[\#2435](https://github.com/matrix-org/matrix-react-sdk/pull/2435)
* De-lint a few more files
[\#2436](https://github.com/matrix-org/matrix-react-sdk/pull/2436)
* Recalculate the visible rooms when rooms are upgraded
[\#2433](https://github.com/matrix-org/matrix-react-sdk/pull/2433)
* Navigate to the upgraded room's create event where possible
[\#2432](https://github.com/matrix-org/matrix-react-sdk/pull/2432)
* Don't show rooms with tombstones in the address picker
[\#2429](https://github.com/matrix-org/matrix-react-sdk/pull/2429)
* Add separate dialog for recovery method removed
[\#2427](https://github.com/matrix-org/matrix-react-sdk/pull/2427)
* Set which servers to try and join upgraded rooms through
[\#2428](https://github.com/matrix-org/matrix-react-sdk/pull/2428)
* Render a tile for tombstone events
[\#2430](https://github.com/matrix-org/matrix-react-sdk/pull/2430)
* Regenerate en_EN.json to sort entries
[\#2431](https://github.com/matrix-org/matrix-react-sdk/pull/2431)
* Key backup: Debounce passphrase feedback
[\#2426](https://github.com/matrix-org/matrix-react-sdk/pull/2426)
* Set backup niggles: 2
[\#2425](https://github.com/matrix-org/matrix-react-sdk/pull/2425)
* Fix lint errors in MessageComposerInput
[\#2423](https://github.com/matrix-org/matrix-react-sdk/pull/2423)
* Set backup niggles: 1
[\#2424](https://github.com/matrix-org/matrix-react-sdk/pull/2424)
* PoC: Add simple state counters to room heading
[\#2388](https://github.com/matrix-org/matrix-react-sdk/pull/2388)
* Fix a few things with cancelling recovery reminder
[\#2420](https://github.com/matrix-org/matrix-react-sdk/pull/2420)
* Add spaces back to async arrow functions
[\#2422](https://github.com/matrix-org/matrix-react-sdk/pull/2422)
* fix grid growing wider than viewport on chrome
[\#2421](https://github.com/matrix-org/matrix-react-sdk/pull/2421)
* Tiled room UI
[\#2348](https://github.com/matrix-org/matrix-react-sdk/pull/2348)
* Fix path to New Recovery Method icon
[\#2417](https://github.com/matrix-org/matrix-react-sdk/pull/2417)
* run unit tests on riot-web like before
[\#2419](https://github.com/matrix-org/matrix-react-sdk/pull/2419)
* Refactor travis-ci to use parallel jobs
[\#2414](https://github.com/matrix-org/matrix-react-sdk/pull/2414)
* Fix black-on-black GIF icon for stickers
[\#2408](https://github.com/matrix-org/matrix-react-sdk/pull/2408)
* Don't reset cached room list values when they are falsey
[\#2413](https://github.com/matrix-org/matrix-react-sdk/pull/2413)
* Make logout warning nag about key backups
[\#2407](https://github.com/matrix-org/matrix-react-sdk/pull/2407)
* Clarify readme instructions for developers
[\#2404](https://github.com/matrix-org/matrix-react-sdk/pull/2404)
* Add slash command for changing room name
[\#2401](https://github.com/matrix-org/matrix-react-sdk/pull/2401)
* Flatten and simplify the memberlist sorting algorithm
[\#2381](https://github.com/matrix-org/matrix-react-sdk/pull/2381)
* Tiny fixes for custom status messages on experimental
[\#2403](https://github.com/matrix-org/matrix-react-sdk/pull/2403)
* Part 3 of 3: Apply today's changes to experimental again
[\#2400](https://github.com/matrix-org/matrix-react-sdk/pull/2400)
* Part 2 of 3: Merge develop->experimental minus #2336
[\#2399](https://github.com/matrix-org/matrix-react-sdk/pull/2399)
* Part 1 of 3: Back out bad merge for develop->experimental
[\#2398](https://github.com/matrix-org/matrix-react-sdk/pull/2398)
* Fix browser navigation not working between /home, /login, /register, etc
[\#2383](https://github.com/matrix-org/matrix-react-sdk/pull/2383)
* Don't re-sort the room list if the user is hovering over it
[\#2396](https://github.com/matrix-org/matrix-react-sdk/pull/2396)
* Merge develop into experimental
[\#2395](https://github.com/matrix-org/matrix-react-sdk/pull/2395)
* Added colour var to all themes
[\#2379](https://github.com/matrix-org/matrix-react-sdk/pull/2379)
* Colour, contrast & legibility improvements
[\#2378](https://github.com/matrix-org/matrix-react-sdk/pull/2378)
* Redesign: add feedback dialog & button in tag panel
[\#2376](https://github.com/matrix-org/matrix-react-sdk/pull/2376)
* Redesign: add badge with dot to rm button, to see it catches your eye better
[\#2371](https://github.com/matrix-org/matrix-react-sdk/pull/2371)
* Fix misaligned (+) icon
[\#2374](https://github.com/matrix-org/matrix-react-sdk/pull/2374)
* Avoid 'transparent black' gradients in left panel
[\#2373](https://github.com/matrix-org/matrix-react-sdk/pull/2373)
* Normalised icons
[\#2370](https://github.com/matrix-org/matrix-react-sdk/pull/2370)
* Redesign: give right panel default width
[\#2369](https://github.com/matrix-org/matrix-react-sdk/pull/2369)
* Redesign: Fix login field looking inline
[\#2368](https://github.com/matrix-org/matrix-react-sdk/pull/2368)
* Redesign: select search query on focus
[\#2367](https://github.com/matrix-org/matrix-react-sdk/pull/2367)
* Redesign: fix remaining right panel collapse issues.
[\#2366](https://github.com/matrix-org/matrix-react-sdk/pull/2366)
* Redesign: left panel fixes
[\#2364](https://github.com/matrix-org/matrix-react-sdk/pull/2364)
* Redesign: allow to hide the right panel when clicking already active button
& persist
[\#2361](https://github.com/matrix-org/matrix-react-sdk/pull/2361)
* Redesign: make room tiles less high so more rooms fit on the screen
[\#2359](https://github.com/matrix-org/matrix-react-sdk/pull/2359)
* Redesign: ignore any unknown tags
[\#2358](https://github.com/matrix-org/matrix-react-sdk/pull/2358)
* Redesign: disable setting theme completely
[\#2357](https://github.com/matrix-org/matrix-react-sdk/pull/2357)
* Force use of dharma theme
[\#2355](https://github.com/matrix-org/matrix-react-sdk/pull/2355)
* Redesign: some small fixes
[\#2354](https://github.com/matrix-org/matrix-react-sdk/pull/2354)
* Redesign: restyle jump to first unread message & rework read marker logic
(rebased)
[\#2345](https://github.com/matrix-org/matrix-react-sdk/pull/2345)
* Redesign: fix add room button alignment when collapsed
[\#2343](https://github.com/matrix-org/matrix-react-sdk/pull/2343)
* Redesign: confirm sign out from top left menu
[\#2342](https://github.com/matrix-org/matrix-react-sdk/pull/2342)
* Redesign: fix room header avatar in edit mode
[\#2344](https://github.com/matrix-org/matrix-react-sdk/pull/2344)
* Redesign: make community UX usable
[\#2341](https://github.com/matrix-org/matrix-react-sdk/pull/2341)
* Redesign: resizer persistence
[\#2321](https://github.com/matrix-org/matrix-react-sdk/pull/2321)
* Redesign: improve room sub list sizing & persist sizes
[\#2297](https://github.com/matrix-org/matrix-react-sdk/pull/2297)
* Redesign: temp solution to make room settings usable
[\#2298](https://github.com/matrix-org/matrix-react-sdk/pull/2298)
* Redesign: typing notifications in timeline
[\#2276](https://github.com/matrix-org/matrix-react-sdk/pull/2276)
* Redesign: add scroll indicator gradients to top and bottom of room sub list
[\#2275](https://github.com/matrix-org/matrix-react-sdk/pull/2275)
* Redesign: move member query field to bottom of member list
[\#2270](https://github.com/matrix-org/matrix-react-sdk/pull/2270)
* Redesign: room list visual polish
[\#2269](https://github.com/matrix-org/matrix-react-sdk/pull/2269)
* Redesign: bring back & restyle room filter field
[\#2267](https://github.com/matrix-org/matrix-react-sdk/pull/2267)
* Redesign: increase interaction rectangle of resize handles
[\#2262](https://github.com/matrix-org/matrix-react-sdk/pull/2262)
* Redesign: move right panel below room/group header
[\#2260](https://github.com/matrix-org/matrix-react-sdk/pull/2260)
* Redesign: use native auto-hiding scrollbars in room sub lists
[\#2264](https://github.com/matrix-org/matrix-react-sdk/pull/2264)
* Redesign: basic makeover of member info panel
[\#2248](https://github.com/matrix-org/matrix-react-sdk/pull/2248)
* Redesign: memberlist basic makeover
[\#2245](https://github.com/matrix-org/matrix-react-sdk/pull/2245)
* Redesign: tweak room list font sizes
[\#2246](https://github.com/matrix-org/matrix-react-sdk/pull/2246)
* Redesign: Fix room lists sizing
[\#2234](https://github.com/matrix-org/matrix-react-sdk/pull/2234)
* Redesign: fix import path
[\#2243](https://github.com/matrix-org/matrix-react-sdk/pull/2243)
* Redesign: update (most) icons
[\#2241](https://github.com/matrix-org/matrix-react-sdk/pull/2241)
* Redesign: fix basic room header layout
[\#2240](https://github.com/matrix-org/matrix-react-sdk/pull/2240)
* Redesign: 1st go at top left menu & restyling context menus
[\#2239](https://github.com/matrix-org/matrix-react-sdk/pull/2239)
* Redesign: Initial timeline tweaks
[\#2238](https://github.com/matrix-org/matrix-react-sdk/pull/2238)
* Redesign: Align visuals of room list with design
[\#2233](https://github.com/matrix-org/matrix-react-sdk/pull/2233)
* Redesign: room section header tidbits
[\#2229](https://github.com/matrix-org/matrix-react-sdk/pull/2229)
* Redesign: Add (+) button in room section header to add rooms
[\#2228](https://github.com/matrix-org/matrix-react-sdk/pull/2228)
* Redesign: 1st go at resizing room sublists
[\#2226](https://github.com/matrix-org/matrix-react-sdk/pull/2226)
* Redesign: remove room list truncation and DND
[\#2224](https://github.com/matrix-org/matrix-react-sdk/pull/2224)
* Redesign: resizeable/collapsible sections
[\#2210](https://github.com/matrix-org/matrix-react-sdk/pull/2210)
Changes in [0.14.8](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.14.8) (2019-01-22)
=====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.14.8-rc.1...v0.14.8)

View file

@ -1,11 +1,15 @@
# Settings Reference
This document serves as developer documentation for using "Granular Settings". Granular Settings allow users to specify different values for a setting at particular levels of interest. For example, a user may say that in a particular room they want URL previews off, but in all other rooms they want them enabled. The `SettingsStore` helps mask the complexity of dealing with the different levels and exposes easy to use getters and setters.
This document serves as developer documentation for using "Granular Settings". Granular Settings allow users to specify
different values for a setting at particular levels of interest. For example, a user may say that in a particular room
they want URL previews off, but in all other rooms they want them enabled. The `SettingsStore` helps mask the complexity
of dealing with the different levels and exposes easy to use getters and setters.
## Levels
Granular Settings rely on a series of known levels in order to use the correct value for the scenario. These levels, in order of prioirty, are:
Granular Settings rely on a series of known levels in order to use the correct value for the scenario. These levels, in
order of prioirty, are:
* `device` - The current user's device
* `room-device` - The current user's device, but only when in a specific room
* `room-account` - The current user's account, but only when in a specific room
@ -14,12 +18,14 @@ Granular Settings rely on a series of known levels in order to use the correct v
* `config` - Values are defined by `config.json`
* `default` - The hardcoded default for the settings
Individual settings may control which levels are appropriate for them as part of the defaults. This is often to ensure that room administrators cannot force account-only settings upon participants.
Individual settings may control which levels are appropriate for them as part of the defaults. This is often to ensure
that room administrators cannot force account-only settings upon participants.
## Settings
Settings are the different options a user may set or experience in the application. These are pre-defined in `src/settings/Settings.js` under the `SETTINGS` constant and have the following minimum requirements:
Settings are the different options a user may set or experience in the application. These are pre-defined in
`src/settings/Settings.js` under the `SETTINGS` constant and have the following minimum requirements:
```
// The ID is used to reference the setting throughout the application. This must be unique.
"theSettingId": {
@ -47,13 +53,21 @@ Settings are the different options a user may set or experience in the applicati
### Getting values for a setting
After importing `SettingsStore`, simply make a call to `SettingsStore.getValue`. The `roomId` parameter should always be supplied where possible, even if the setting does not have a per-room level value. This is to ensure that the value returned is best represented in the room, particularly if the setting ever gets a per-room level in the future.
After importing `SettingsStore`, simply make a call to `SettingsStore.getValue`. The `roomId` parameter should always
be supplied where possible, even if the setting does not have a per-room level value. This is to ensure that the value
returned is best represented in the room, particularly if the setting ever gets a per-room level in the future.
In settings pages it is often desired to have the value at a particular level instead of getting the calculated value. Call `SettingsStore.getValueAt` to get the value of a setting at a particular level, and optionally make it explicitly at that level. By default `getValueAt` will traverse the tree starting at the provided level; making it explicit means it will not go beyond the provided level. When using `getValueAt`, please be sure to use `SettingLevel` to represent the target level.
In settings pages it is often desired to have the value at a particular level instead of getting the calculated value.
Call `SettingsStore.getValueAt` to get the value of a setting at a particular level, and optionally make it explicitly
at that level. By default `getValueAt` will traverse the tree starting at the provided level; making it explicit means
it will not go beyond the provided level. When using `getValueAt`, please be sure to use `SettingLevel` to represent the
target level.
### Setting values for a setting
Values are defined at particular levels and should be done in a safe manner. There are two checks to perform to ensure a clean save: is the level supported and can the user actually set the value. In most cases, neither should be an issue although there are circumstances where this changes. An example of a safe call is:
Values are defined at particular levels and should be done in a safe manner. There are two checks to perform to ensure a
clean save: is the level supported and can the user actually set the value. In most cases, neither should be an issue
although there are circumstances where this changes. An example of a safe call is:
```javascript
const isSupported = SettingsStore.isLevelSupported(SettingLevel.ROOM);
if (isSupported) {
@ -64,11 +78,13 @@ if (isSupported) {
}
```
These checks may also be performed in different areas of the application to avoid the verbose example above. For instance, the component which allows changing the setting may be hidden conditionally on the above conditions.
These checks may also be performed in different areas of the application to avoid the verbose example above. For
instance, the component which allows changing the setting may be hidden conditionally on the above conditions.
##### `SettingsFlag` component
Where possible, the `SettingsFlag` component should be used to set simple "flip-a-bit" (true/false) settings. The `SettingsFlag` also supports simple radio button options, such as the theme the user would like to use.
Where possible, the `SettingsFlag` component should be used to set simple "flip-a-bit" (true/false) settings. The
`SettingsFlag` also supports simple radio button options, such as the theme the user would like to use.
```html
<SettingsFlag name="theSettingId"
level={SettingsLevel.ROOM}
@ -86,42 +102,65 @@ Where possible, the `SettingsFlag` component should be used to set simple "flip-
### Getting the display name for a setting
Simply call `SettingsStore.getDisplayName`. The appropriate display name will be returned and automatically translated for you. If a display name cannot be found, it will return `null`.
Simply call `SettingsStore.getDisplayName`. The appropriate display name will be returned and automatically translated
for you. If a display name cannot be found, it will return `null`.
## Features
Occasionally some parts of the application may be undergoing testing and are not quite production ready. These are commonly known to be behind a "labs flag". Features behind lab flags must go through the granular settings system, and look and act very much normal settings. The exception is that they must supply `isFeature: true` as part of the setting definition and should go through the helper functions on `SettingsStore`.
Occasionally some parts of the application may be undergoing testing and are not quite production ready. These are
commonly known to be behind a "labs flag". Features behind lab flags must go through the granular settings system, and
look and act very much normal settings. The exception is that they must supply `isFeature: true` as part of the setting
definition and should go through the helper functions on `SettingsStore`.
Although features have levels and a default value, the calculation of those options is blocked by the feature's state. A feature's state is determined from the `SdkConfig` and is a little complex. If `enableLabs` (a legacy flag) is `true` then the feature's state is `labs`, if it is `false`, the state is `disable`. If `enableLabs` is not set then the state is determined from the `features` config, such as in the following:
Although features have levels and a default value, the calculation of those options is blocked by the feature's state.
A feature's state is determined from the `SdkConfig` and is a little complex. If `enableLabs` (a legacy flag) is `true`
then the feature's state is `labs`, if it is `false`, the state is `disable`. If `enableLabs` is not set then the state
is determined from the `features` config, such as in the following:
```json
"features": {
"feature_lazyloading": "labs"
}
```
In this example, `feature_lazyloading` is in the `labs` state. It may also be in the `enable` or `disable` state with a similar approach. If the state is invalid, the feature is in the `disable` state. A feature's levels are only calculated if it is in the `labs` state, therefore the default only applies in that scenario. If the state is `enable`, the feature is always-on.
In this example, `feature_lazyloading` is in the `labs` state. It may also be in the `enable` or `disable` state with a
similar approach. If the state is invalid, the feature is in the `disable` state. A feature's levels are only calculated
if it is in the `labs` state, therefore the default only applies in that scenario. If the state is `enable`, the feature
is always-on.
Once a feature flag has served its purpose, it is generally recommended to remove it and the associated feature flag checks. This would enable the feature implicitly as it is part of the application now.
Once a feature flag has served its purpose, it is generally recommended to remove it and the associated feature flag
checks. This would enable the feature implicitly as it is part of the application now.
### Determining if a feature is enabled
A simple call to `SettingsStore.isFeatureEnabled` will tell you if the feature is enabled. This will perform all the required calculations to determine if the feature is enabled based upon the configuration and user selection.
A simple call to `SettingsStore.isFeatureEnabled` will tell you if the feature is enabled. This will perform all the
required calculations to determine if the feature is enabled based upon the configuration and user selection.
### Enabling a feature
Features can only be enabled if the feature is in the `labs` state, otherwise this is a no-op. To find the current set of features in the `labs` state, call `SettingsStore.getLabsFeatures`. To set the value, call `SettingsStore.setFeatureEnabled`.
Features can only be enabled if the feature is in the `labs` state, otherwise this is a no-op. To find the current set
of features in the `labs` state, call `SettingsStore.getLabsFeatures`. To set the value, call
`SettingsStore.setFeatureEnabled`.
## Setting controllers
Settings may have environmental factors that affect their value or need additional code to be called when they are modified. A setting controller is able to override the calculated value for a setting and react to changes in that setting. Controllers are not a replacement for the level handlers and should only be used to ensure the environment is kept up to date with the setting where it is otherwise not possible. An example of this is the notification settings: they can only be considered enabled if the platform supports notifications, and enabling notifications requires additional steps to actually enable notifications.
Settings may have environmental factors that affect their value or need additional code to be called when they are
modified. A setting controller is able to override the calculated value for a setting and react to changes in that
setting. Controllers are not a replacement for the level handlers and should only be used to ensure the environment is
kept up to date with the setting where it is otherwise not possible. An example of this is the notification settings:
they can only be considered enabled if the platform supports notifications, and enabling notifications requires
additional steps to actually enable notifications.
For more information, see `src/settings/controllers/SettingController.js`.
## Local echo
`SettingsStore` will perform local echo on all settings to ensure that immediately getting values does not cause a split-brain scenario. As mentioned in the "Setting values for a setting" section, the appropriate checks should be done to ensure that the user is allowed to set the value. The local echo system assumes that the user has permission and that the request will go through successfully. The local echo only takes effect until the request to save a setting has completed (either successfully or otherwise).
`SettingsStore` will perform local echo on all settings to ensure that immediately getting values does not cause a
split-brain scenario. As mentioned in the "Setting values for a setting" section, the appropriate checks should be done
to ensure that the user is allowed to set the value. The local echo system assumes that the user has permission and that
the request will go through successfully. The local echo only takes effect until the request to save a setting has
completed (either successfully or otherwise).
```javascript
SettingsStore.setValue(...).then(() => {
@ -131,24 +170,69 @@ SettingsStore.getValue(...); // this will return the value set in `setValue` abo
```
## Watching for changes
Most use cases do not need to set up a watcher because they are able to react to changes as they are made, or the
changes which are made are not significant enough for it to matter. Watchers are intended to be used in scenarios where
it is important to react to changes made by other logged in devices. Typically, this would be done within the component
itself, however the component should not be aware of the intricacies of setting inversion or remapping to particular
data structures. Instead, a generic watcher interface is provided on `SettingsStore` to watch (and subsequently unwatch)
for changes in a setting.
An example of a watcher in action would be:
```javascript
class MyComponent extends React.Component {
settingWatcherRef = null;
componentWillMount() {
const callback = (settingName, roomId, level, newValAtLevel, newVal) => {
this.setState({color: newVal});
};
this.settingWatcherRef = SettingsStore.watchSetting("roomColor", "!example:matrix.org", callback);
}
componentWillUnmount() {
SettingsStore.unwatchSetting(this.settingWatcherRef);
}
}
```
# Maintainers Reference
The granular settings system has a few complex parts to power it. This section is to document how the `SettingsStore` is supposed to work.
The granular settings system has a few complex parts to power it. This section is to document how the `SettingsStore` is
supposed to work.
### General information
The `SettingsStore` uses the hardcoded `LEVEL_ORDER` constant to ensure that it is using the correct override procedure. The array is checked from left to right, simulating the behaviour of overriding values from the higher levels. Each level should be defined in this array, including `default`.
The `SettingsStore` uses the hardcoded `LEVEL_ORDER` constant to ensure that it is using the correct override procedure.
The array is checked from left to right, simulating the behaviour of overriding values from the higher levels. Each
level should be defined in this array, including `default`.
Handlers (`src/settings/handlers/SettingsHandler.js`) represent a single level and are responsible for getting and setting values at that level. Handlers also provide additional information to the `SettingsStore` such as if the level is supported or if the current user may set values at the level. The `SettingsStore` will use the handler to enforce checks and manipulate settings. Handlers are also responsible for dealing with migration patterns or legacy settings for their level (for example, a setting being renamed or using a different key from other settings in the underlying store). Handlers are provided to the `SettingsStore` via the `LEVEL_HANDLERS` constant. `SettingsStore` will optimize lookups by only considering handlers that are supported on the platform.
Handlers (`src/settings/handlers/SettingsHandler.js`) represent a single level and are responsible for getting and
setting values at that level. Handlers also provide additional information to the `SettingsStore` such as if the level
is supported or if the current user may set values at the level. The `SettingsStore` will use the handler to enforce
checks and manipulate settings. Handlers are also responsible for dealing with migration patterns or legacy settings for
their level (for example, a setting being renamed or using a different key from other settings in the underlying store).
Handlers are provided to the `SettingsStore` via the `LEVEL_HANDLERS` constant. `SettingsStore` will optimize lookups by
only considering handlers that are supported on the platform.
Local echo is achieved through `src/settings/handlers/LocalEchoWrapper.js` which acts as a wrapper around a given handler. This is automatically applied to all defined `LEVEL_HANDLERS` and proxies the calls to the wrapped handler where possible. The echo is achieved by a simple object cache stored within the class itself. The cache is invalidated immediately upon the proxied save call succeeding or failing.
Local echo is achieved through `src/settings/handlers/LocalEchoWrapper.js` which acts as a wrapper around a given
handler. This is automatically applied to all defined `LEVEL_HANDLERS` and proxies the calls to the wrapped handler
where possible. The echo is achieved by a simple object cache stored within the class itself. The cache is invalidated
immediately upon the proxied save call succeeding or failing.
Controllers are notified of changes by the `SettingsStore`, and are given the opportunity to override values after the `SettingsStore` has deemed the value calculated. Controllers are invoked as the last possible step in the code.
Controllers are notified of changes by the `SettingsStore`, and are given the opportunity to override values after the
`SettingsStore` has deemed the value calculated. Controllers are invoked as the last possible step in the code.
### Features
Features automatically get considered as `disabled` if they are not listed in the `SdkConfig` or `enable_labs` is false/not set. Features are always checked against the configuration before going through the level order as they have the option of being forced-on or forced-off for the application. This is done by the `features` section and looks something like this:
Features automatically get considered as `disabled` if they are not listed in the `SdkConfig` or `enable_labs` is
false/not set. Features are always checked against the configuration before going through the level order as they have
the option of being forced-on or forced-off for the application. This is done by the `features` section and looks
something like this:
```
"features": {
@ -159,3 +243,21 @@ Features automatically get considered as `disabled` if they are not listed in th
```
If `enableLabs` is true in the configuration, the default for features becomes `"labs"`.
### Watchers
Watchers can appear complicated under the hood: there is a central `WatchManager` which handles the actual invocation
of callbacks, and callbacks are managed by the SettingsStore by redirecting the caller's callback to a dedicated
callback. This is done so that the caller can reuse the same function as their callback without worrying about whether
or not it'll unsubscribe all watchers.
Setting changes are emitted into the default `WatchManager`, which calculates the new value for the setting. Ideally,
we'd also try and suppress updates which don't have a consequence on this value, however there's not an easy way to do
this. Instead, we just dispatch an update for all changes and leave it up to the consumer to deduplicate.
In practice, handlers which rely on remote changes (account data, room events, etc) will always attach a listener to the
`MatrixClient`. They then watch for changes to events they care about and send off appropriate updates to the
generalized `WatchManager` - a class specifically designed to deduplicate the logic of managing watchers. The handlers
which are localized to the local client (device) generally just trigger the `WatchManager` when they manipulate the
setting themselves as there's nothing to really 'watch'.

View file

@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
"version": "0.14.8",
"version": "1.0.1",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
@ -73,13 +73,13 @@
"gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279",
"gfm.css": "^1.1.1",
"glob": "^5.0.14",
"highlight.js": "^9.13.0",
"highlight.js": "9.14.2",
"is-ip": "^2.0.0",
"isomorphic-fetch": "^2.2.1",
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
"matrix-js-sdk": "0.14.3",
"matrix-js-sdk": "1.0.0",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",

View file

@ -70,7 +70,7 @@ input[type=search].mx_textinput_icon {
// FIXME THEME - Tint by CSS rather than referencing a duplicate asset
input[type=text].mx_textinput_icon.mx_textinput_search,
input[type=search].mx_textinput_icon.mx_textinput_search {
background-image: url('$(res)/img/feather-icons/search-input.svg');
background-image: url('$(res)/img/feather-customised/search-input.svg');
}
// dont search UI as not all browsers support it,
@ -82,13 +82,6 @@ input[type=search]::-webkit-search-results-decoration {
display: none;
}
.input[type=text]::-webkit-input-placeholder,
.input[type=text]::-moz-placeholder,
.input[type=search]::-webkit-input-placeholder,
.input[type=search]::-moz-placeholder {
color: #a5aab2;
}
// Override Firefox's UA style so we get a consistent look across browsers
input::placeholder,
textarea::placeholder {
@ -111,6 +104,71 @@ textarea {
color: $primary-fg-color;
}
// .mx_textinput is a container for a text input
// + some other controls like buttons, ...
// it has the appearance of a text box so the controls
// appear to be part of the input
.mx_Dialog, .mx_MatrixChat {
:not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type=text],
:not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type=search],
.mx_textinput {
display: block;
box-sizing: border-box;
background-color: transparent;
color: $input-darker-fg-color;
border-radius: 4px;
border: 1px solid #c1c1c1;
// these things should probably not be defined
// globally
margin: 9px;
flex: 0 0 auto;
}
.mx_textinput {
display: flex;
align-items: center;
> input[type=text],
> input[type=search] {
border: none;
flex: 1;
color: $primary-fg-color;
}
}
:not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type=text]::placeholder,
:not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type=search]::placeholder,
.mx_textinput input::placeholder {
color: $roomsublist-label-fg-color;
}
}
/*** panels ***/
.dark-panel {
background-color: $dark-panel-bg-color;
}
.dark-panel {
:not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type=text],
:not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type=search],
.mx_textinput {
color: $input-darker-fg-color;
background-color: $input-darker-bg-color;
border: none;
}
}
.light-panel {
:not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type=text],
:not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) > input[type=search],
.mx_textinput {
color: $input-lighter-fg-color;
background-color: $input-lighter-bg-color;
border: none;
}
}
/* Prevent ugly dotted highlight around selected elements in Firefox */
::-moz-focus-inner {
border: 0;
@ -191,12 +249,6 @@ textarea {
box-shadow: none;
}
/* View Source Dialog overide */
.mx_Dialog_wrapper.mx_Dialog_viewsource .mx_Dialog {
padding-left: 10px;
padding-right: 10px;
}
.mx_Dialog {
background-color: $primary-bg-color;
color: $light-fg-color;
@ -257,7 +309,7 @@ textarea {
}
.mx_Dialog_cancelButton {
mask: url('$(res)/img/feather-icons/cancel.svg');
mask: url('$(res)/img/feather-customised/cancel.svg');
mask-repeat: no-repeat;
mask-position: center;
width: 36px;

View file

@ -10,6 +10,7 @@
@import "./structures/_HeaderButtons.scss";
@import "./structures/_HomePage.scss";
@import "./structures/_LeftPanel.scss";
@import "./structures/_MainSplit.scss";
@import "./structures/_MatrixChat.scss";
@import "./structures/_MyGroups.scss";
@import "./structures/_NotificationPanel.scss";
@ -149,16 +150,16 @@
@import "./views/settings/_Notifications.scss";
@import "./views/settings/_PhoneNumbers.scss";
@import "./views/settings/_ProfileSettings.scss";
@import "./views/settings/tabs/_GeneralRoomSettingsTab.scss";
@import "./views/settings/tabs/_GeneralUserSettingsTab.scss";
@import "./views/settings/tabs/_HelpSettingsTab.scss";
@import "./views/settings/tabs/_NotificationSettingsTab.scss";
@import "./views/settings/tabs/_PreferencesSettingsTab.scss";
@import "./views/settings/tabs/_RolesRoomSettingsTab.scss";
@import "./views/settings/tabs/_SecurityRoomSettingsTab.scss";
@import "./views/settings/tabs/_SecuritySettingsTab.scss";
@import "./views/settings/tabs/_SettingsTab.scss";
@import "./views/settings/tabs/_VoiceSettingsTab.scss";
@import "./views/settings/tabs/room/_GeneralRoomSettingsTab.scss";
@import "./views/settings/tabs/room/_RolesRoomSettingsTab.scss";
@import "./views/settings/tabs/room/_SecurityRoomSettingsTab.scss";
@import "./views/settings/tabs/user/_GeneralUserSettingsTab.scss";
@import "./views/settings/tabs/user/_HelpUserSettingsTab.scss";
@import "./views/settings/tabs/user/_NotificationUserSettingsTab.scss";
@import "./views/settings/tabs/user/_PreferencesUserSettingsTab.scss";
@import "./views/settings/tabs/user/_SecurityUserSettingsTab.scss";
@import "./views/settings/tabs/user/_VoiceUserSettingsTab.scss";
@import "./views/verification/_VerificationShowSas.scss";
@import "./views/voip/_CallView.scss";
@import "./views/voip/_IncomingCallbox.scss";

View file

@ -170,7 +170,6 @@ limitations under the License.
.mx_GroupView > .mx_MainSplit {
flex: 1;
display: flex;
}
.mx_GroupView_body {

View file

@ -0,0 +1,21 @@
/*
Copyright 2019 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_MainSplit {
display: flex;
flex-direction: row;
min-width: 0;
}

View file

@ -49,11 +49,11 @@ limitations under the License.
height: 40px;
width: 40px;
border-radius: 20px;
background-color: $roomheader-addroom-color;
background-color: $roomheader-addroom-bg-color;
position: relative;
&:before {
background-color: $accent-fg-color;
background-color: $roomheader-addroom-fg-color;
mask: url('$(res)/img/icons-create-room.svg');
mask-repeat: no-repeat;
mask-position: center;

View file

@ -65,15 +65,15 @@ limitations under the License.
}
.mx_RightPanel_membersButton::before {
mask-image: url('$(res)/img/feather-icons/user.svg');
mask-image: url('$(res)/img/feather-customised/user.svg');
}
.mx_RightPanel_filesButton::before {
mask-image: url('$(res)/img/feather-icons/files.svg');
mask-image: url('$(res)/img/feather-customised/files.svg');
}
.mx_RightPanel_notifsButton::before {
mask-image: url('$(res)/img/feather-icons/notifications.svg');
mask-image: url('$(res)/img/feather-customised/notifications.svg');
}
.mx_RightPanel_groupMembersButton::before {

View file

@ -83,15 +83,24 @@ limitations under the License.
}
.mx_RoomSubList_addRoom {
background-color: $roomheader-addroom-color;
color: $roomsublist-background;
background-image: url('$(res)/img/icons-room-add.svg');
background-repeat: no-repeat;
background-position: center;
background-color: $roomheader-addroom-bg-color;
border-radius: 10px; // 16/2 + 2 padding
height: 16px;
flex: 0 0 16px;
background-clip: content-box;
position: relative;
&:before {
background-color: $roomheader-addroom-fg-color;
mask: url('$(res)/img/icons-room-add.svg');
mask-repeat: no-repeat;
mask-position: center;
content: '';
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
}
.mx_RoomSubList_badgeHighlight {
@ -100,7 +109,7 @@ limitations under the License.
.mx_RoomSubList_chevron {
pointer-events: none;
mask: url('$(res)/img/feather-icons/dropdown-arrow.svg');
mask: url('$(res)/img/feather-customised/dropdown-arrow.svg');
mask-repeat: no-repeat;
transition: transform 0.2s ease-in;
width: 10px;

View file

@ -77,7 +77,6 @@ limitations under the License.
.mx_RoomView .mx_MainSplit {
flex: 1 1 0;
display: flex;
}
.mx_RoomView_body {
@ -125,7 +124,7 @@ limitations under the License.
.mx_RoomView_messagePanelSearchSpinner:before {
background-color: $greyed-fg-color;
mask: url('$(res)/img/feather-icons/search-input.svg');
mask: url('$(res)/img/feather-customised/search-input.svg');
mask-repeat: no-repeat;
mask-position: center;
mask-size: 50px;

View file

@ -24,12 +24,12 @@ limitations under the License.
}
.mx_TagPanelButtons > .mx_GroupsButton:before {
mask: url('$(res)/img/feather-icons/users.svg');
mask: url('$(res)/img/feather-customised/users.svg');
mask-position: center 11px;
}
.mx_TagPanelButtons > .mx_TagPanelButtons_report:before {
mask: url('$(res)/img/feather-icons/life-buoy.svg');
mask: url('$(res)/img/feather-customised/life-buoy.svg');
mask-position: center 9px;
}

View file

@ -41,7 +41,7 @@ limitations under the License.
.mx_TopLeftMenuButton_chevron {
margin: 0 7px;
mask: url('$(res)/img/feather-icons/dropdown-arrow.svg');
mask: url('$(res)/img/feather-customised/dropdown-arrow.svg');
mask-repeat: no-repeat;
width: 10px;
height: 6px;

View file

@ -14,6 +14,19 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_ViewSource_label_left {
float: left;
}
.mx_ViewSource_label_right {
float: right;
}
.mx_ViewSource_label_bottom {
clear: both;
border-bottom: 1px solid #e5e5e5;
}
.mx_ViewSource pre {
text-align: left;
font-size: 12px;

View file

@ -58,6 +58,10 @@ limitations under the License.
background-color: $authpage-body-bg-color;
}
.mx_AuthBody input.error {
color: $warning-color;
}
.mx_AuthBody_editServerDetails {
padding-left: 1em;
font-size: 12px;
@ -99,3 +103,7 @@ limitations under the License.
text-align: center;
width: 100%;
}
.mx_AuthBody_spinner {
margin: 1em 0;
}

View file

@ -28,19 +28,19 @@ limitations under the License.
padding: 0;
li.mx_TopLeftMenu_icon_home::after {
mask-image: url('$(res)/img/feather-icons/home.svg');
mask-image: url('$(res)/img/feather-customised/home.svg');
}
li.mx_TopLeftMenu_icon_settings::after {
mask-image: url('$(res)/img/feather-icons/settings.svg');
mask-image: url('$(res)/img/feather-customised/settings.svg');
}
li.mx_TopLeftMenu_icon_signin::after {
mask-image: url('$(res)/img/feather-icons/sign-in.svg');
mask-image: url('$(res)/img/feather-customised/sign-in.svg');
}
li.mx_TopLeftMenu_icon_signout::after {
mask-image: url('$(res)/img/feather-icons/sign-out.svg');
mask-image: url('$(res)/img/feather-customised/sign-out.svg');
}
li::after {

View file

@ -67,12 +67,20 @@ limitations under the License.
.mx_DevTools_textarea {
font-size: 12px;
max-width: 624px;
max-width: 684px;
min-height: 250px;
padding: 10px;
width: 100%;
}
.mx_DevTools_content .mx_Field_input {
display: inline-block;
}
.mx_DevTools_content .mx_Field_input + .mx_Field_input {
margin-left: 42px;
}
.mx_DevTools_tgl {
display: none;

View file

@ -18,17 +18,27 @@ limitations under the License.
// ==========================================================
.mx_RoomSettingsDialog_settingsIcon:before {
mask-image: url('$(res)/img/feather-icons/settings.svg');
mask-image: url('$(res)/img/feather-customised/settings.svg');
}
.mx_RoomSettingsDialog_securityIcon:before {
mask-image: url('$(res)/img/feather-icons/lock.svg');
mask-image: url('$(res)/img/feather-customised/lock.svg');
}
.mx_RoomSettingsDialog_rolesIcon:before {
mask-image: url('$(res)/img/feather-icons/users-sm.svg');
mask-image: url('$(res)/img/feather-customised/users-sm.svg');
}
.mx_RoomSettingsDialog_warningIcon:before {
mask-image: url('$(res)/img/feather-icons/warning-triangle.svg');
mask-image: url('$(res)/img/feather-customised/warning-triangle.svg');
}
.mx_RoomSettingsDialog .mx_Dialog_title {
-ms-text-overflow: ellipsis;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
margin: 0 auto;
padding-left: 40px;
padding-right: 80px;
}

View file

@ -18,33 +18,33 @@ limitations under the License.
// ==========================================================
.mx_UserSettingsDialog_settingsIcon:before {
mask-image: url('$(res)/img/feather-icons/settings.svg');
mask-image: url('$(res)/img/feather-customised/settings.svg');
}
.mx_UserSettingsDialog_voiceIcon:before {
mask-image: url('$(res)/img/feather-icons/phone.svg');
mask-image: url('$(res)/img/feather-customised/phone.svg');
}
.mx_UserSettingsDialog_bellIcon:before {
mask-image: url('$(res)/img/feather-icons/notifications.svg');
mask-image: url('$(res)/img/feather-customised/notifications.svg');
}
.mx_UserSettingsDialog_preferencesIcon:before {
mask-image: url('$(res)/img/feather-icons/sliders.svg');
mask-image: url('$(res)/img/feather-customised/sliders.svg');
}
.mx_UserSettingsDialog_securityIcon:before {
mask-image: url('$(res)/img/feather-icons/lock.svg');
mask-image: url('$(res)/img/feather-customised/lock.svg');
}
.mx_UserSettingsDialog_helpIcon:before {
mask-image: url('$(res)/img/feather-icons/help-circle.svg');
mask-image: url('$(res)/img/feather-customised/help-circle.svg');
}
.mx_UserSettingsDialog_labsIcon:before {
mask-image: url('$(res)/img/feather-icons/flag.svg');
mask-image: url('$(res)/img/feather-customised/flag.svg');
}
.mx_UserSettingsDialog_flairIcon:before {
mask-image: url('$(res)/img/feather-icons/flair.svg');
mask-image: url('$(res)/img/feather-customised/flair.svg');
}

View file

@ -24,7 +24,7 @@ limitations under the License.
padding-bottom: 10px;
&:before {
mask: url("$(res)/img/e2e/lock-warning.svg");
mask: url("$(res)/img/e2e/lock-warning-filled.svg");
mask-repeat: no-repeat;
background-color: $primary-fg-color;
content: "";

View file

@ -45,7 +45,7 @@ limitations under the License.
width: 10px;
height: 6px;
padding-right: 9px;
mask: url('$(res)/img/feather-icons/dropdown-arrow.svg');
mask: url('$(res)/img/feather-customised/dropdown-arrow.svg');
mask-repeat: no-repeat;
background: $primary-fg-color;
}

View file

@ -1,5 +1,5 @@
/*
Copyright 2017 New Vector Ltd.
Copyright 2017, 2019 New Vector Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@ -16,47 +16,38 @@ limitations under the License.
.mx_EditableItemList {
margin-top: 12px;
margin-bottom: 0px;
margin-bottom: 10px;
}
.mx_EditableItem {
display: flex;
margin-left: 56px;
margin-bottom: 5px;
margin-left: 15px;
}
.mx_EditableItem .mx_EditableItem_editable {
border: 0px;
border-bottom: 1px solid $strong-input-border-color;
padding: 0px;
min-width: 240px;
max-width: 400px;
margin-bottom: 16px;
}
.mx_EditableItem .mx_EditableItem_editable:focus {
border-bottom: 1px solid $accent-color;
outline: none;
box-shadow: none;
}
.mx_EditableItem .mx_EditableItem_editablePlaceholder {
color: $settings-grey-fg-color;
}
.mx_EditableItem .mx_EditableItem_addButton,
.mx_EditableItem .mx_EditableItem_removeButton {
padding-left: 0.5em;
position: relative;
.mx_EditableItem_delete {
margin-right: 5px;
cursor: pointer;
visibility: hidden;
vertical-align: middle;
}
.mx_EditableItem:hover .mx_EditableItem_addButton,
.mx_EditableItem:hover .mx_EditableItem_removeButton {
visibility: visible;
.mx_EditableItem_email {
vertical-align: middle;
}
.mx_EditableItem_promptText {
margin-right: 10px;
}
.mx_EditableItem_confirmBtn {
margin-right: 5px;
}
.mx_EditableItemList_newItem .mx_Field input {
// Use 100% of the space available for the input, but don't let the 10px
// padding on either side of the input to push it out of alignment.
width: calc(100% - 20px);
}
.mx_EditableItemList_label {
margin-bottom: 8px;
}
margin-bottom: 5px;
}

View file

@ -48,7 +48,7 @@ limitations under the License.
right: 10px;
width: 10px;
height: 6px;
mask: url('$(res)/img/feather-icons/dropdown-arrow.svg');
mask: url('$(res)/img/feather-customised/dropdown-arrow.svg');
mask-repeat: no-repeat;
background-color: $primary-fg-color;
z-index: 1;
@ -88,6 +88,7 @@ limitations under the License.
top: 0px;
margin: 7px 8px;
padding: 2px;
pointer-events: none; // Allow clicks to fall through to the input
}
.mx_Field input:focus + label,
@ -104,6 +105,7 @@ limitations under the License.
top: -13px;
padding: 0 2px;
background-color: $field-focused-label-bg-color;
pointer-events: initial;
}
.mx_Field input:focus + label,

View file

@ -144,39 +144,39 @@ $AppsDrawerBodyHeight: 273px;
}
.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_minimise {
mask-image: url('$(res)/img/feather-icons/widget/minimise.svg');
mask-image: url('$(res)/img/feather-customised/widget/minimise.svg');
background-color: $accent-color;
}
.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_maximise {
mask-image: url('$(res)/img/feather-icons/widget/maximise.svg');
mask-image: url('$(res)/img/feather-customised/widget/maximise.svg');
background-color: $accent-color;
}
.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_reload {
mask-image: url('$(res)/img/feather-icons/widget/refresh.svg');
mask-image: url('$(res)/img/feather-customised/widget/refresh.svg');
mask-size: 100%;
}
.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_popout {
mask-image: url('$(res)/img/feather-icons/widget/external-link.svg');
mask-image: url('$(res)/img/feather-customised/widget/external-link.svg');
}
.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_snapshot {
mask-image: url('$(res)/img/feather-icons/widget/camera.svg');
mask-image: url('$(res)/img/feather-customised/widget/camera.svg');
}
.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_edit {
mask-image: url('$(res)/img/feather-icons/widget/edit.svg');
mask-image: url('$(res)/img/feather-customised/widget/edit.svg');
}
.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_delete {
mask-image: url('$(res)/img/feather-icons/widget/bin.svg');
mask-image: url('$(res)/img/feather-customised/widget/bin.svg');
background-color: $warning-color;
}
.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_cancel {
mask-image: url('$(res)/img/feather-icons/widget/x-circle.svg');
mask-image: url('$(res)/img/feather-customised/widget/x-circle.svg');
}
/* delete ? */

View file

@ -23,11 +23,11 @@ limitations under the License.
}
.mx_E2EIcon_verified {
mask-image: url('$(res)/img/feather-icons/e2e/lock-verified.svg');
mask-image: url('$(res)/img/e2e/lock-verified.svg');
background-color: $accent-color;
}
.mx_E2EIcon_warning {
mask-image: url('$(res)/img/feather-icons/e2e/lock-warning.svg');
mask-image: url('$(res)/img/e2e/lock-warning.svg');
background-color: $warning-color;
}

View file

@ -81,7 +81,6 @@ limitations under the License.
color: $primary-fg-color;
}
/*
.mx_EntityTile_unavailable .mx_EntityTile_avatar,
.mx_EntityTile_unavailable .mx_EntityTile_name,
.mx_EntityTile_unavailable .mx_EntityTile_name_hover,
@ -89,7 +88,7 @@ limitations under the License.
.mx_EntityTile_offline_beenactive .mx_EntityTile_name,
.mx_EntityTile_offline_beenactive .mx_EntityTile_name_hover
{
opacity: 0.66;
opacity: 0.5;
}
.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar,
@ -105,7 +104,6 @@ limitations under the License.
{
opacity: 0.25;
}
*/
.mx_EntityTile_subtext {
font-size: 11px;

View file

@ -45,14 +45,14 @@ limitations under the License.
.mx_EventTile .mx_SenderProfile {
color: $primary-fg-color;
font-size: 14px;
display: block; /* anti-zalgo, with overflow hidden */
display: inline-block; /* anti-zalgo, with overflow hidden */
overflow-y: hidden;
cursor: pointer;
padding-left: 65px; /* left gutter */
padding-bottom: 0px;
padding-top: 0px;
margin: 0px;
line-height: 22px;
line-height: 17px;
}
.mx_EventTile .mx_SenderProfile .mx_Flair {
@ -277,8 +277,7 @@ limitations under the License.
}
/* End to end encryption stuff */
.mx_EventTile_e2eIcon:hover {
.mx_EventTile:hover .mx_EventTile_e2eIcon {
opacity: 1;
}
@ -297,12 +296,12 @@ limitations under the License.
}
.mx_EventTile_e2eIcon_undecryptable, .mx_EventTile_e2eIcon_unverified {
mask-image: url('$(res)/img/feather-icons/e2e/warning.svg');
mask-image: url('$(res)/img/e2e/warning.svg');
background-color: $warning-color;
}
.mx_EventTile_e2eIcon_unencrypted {
mask-image: url('$(res)/img/feather-icons/e2e/warning.svg');
mask-image: url('$(res)/img/e2e/warning.svg');
background-color: $composer-e2e-icon-color;
}
@ -409,7 +408,13 @@ limitations under the License.
.mx_EventTile_content .markdown-body code {
// deliberate constants as we're behind an invert filter
background-color: #f8f8f8;
color: #333;
}
.mx_EventTile_content .markdown-body {
pre, code {
// deliberate constants as we're behind an invert filter
color: #333;
}
}
.mx_EventTile_pre_container {

View file

@ -27,15 +27,15 @@ limitations under the License.
mask-repeat: no-repeat;
}
.mx_MemberDeviceInfo_icon_blacklisted {
mask-image: url('$(res)/img/feather-icons/e2e/blacklisted.svg');
mask-image: url('$(res)/img/e2e/blacklisted.svg');
background-color: $warning-color;
}
.mx_MemberDeviceInfo_icon_verified {
mask-image: url('$(res)/img/feather-icons/e2e/verified.svg');
mask-image: url('$(res)/img/e2e/verified.svg');
background-color: $accent-color;
}
.mx_MemberDeviceInfo_icon_unverified {
mask-image: url('$(res)/img/feather-icons/e2e/warning.svg');
mask-image: url('$(res)/img/e2e/warning.svg');
background-color: $warning-color;
}

View file

@ -32,8 +32,13 @@ limitations under the License.
.mx_MemberInfo_cancel {
height: 16px;
padding: 10px 15px;
width: 16px;
padding: 10px 0 10px 10px;
cursor: pointer;
mask-image: url('$(res)/img/minimise.svg');
mask-repeat: no-repeat;
mask-position: 16px center;
background-color: $rightpanel-button-color;
}
.mx_MemberInfo_name h2 {
@ -43,7 +48,7 @@ limitations under the License.
.mx_MemberInfo h2 {
font-size: 18px;
font-weight: 600;
margin: 16px 0;
margin: 16px 0 16px 15px;
}
.mx_MemberInfo_container {

View file

@ -83,7 +83,7 @@ limitations under the License.
}
.mx_MemberList_invite span {
background-image: url('$(res)/img/feather-icons/user-add.svg');
background-image: url('$(res)/img/feather-customised/user-add.svg');
background-repeat: no-repeat;
background-position: center left;
padding-left: 25px;

View file

@ -193,7 +193,7 @@ limitations under the License.
}
.mx_MessageComposer_upload {
mask-image: url('$(res)/img/feather-icons/paperclip.svg');
mask-image: url('$(res)/img/feather-customised/paperclip.svg');
}
.mx_MessageComposer_hangup {
@ -201,15 +201,15 @@ limitations under the License.
}
.mx_MessageComposer_voicecall {
mask-image: url('$(res)/img/feather-icons/phone.svg');
mask-image: url('$(res)/img/feather-customised/phone.svg');
}
.mx_MessageComposer_videocall {
mask-image: url('$(res)/img/feather-icons/video.svg');
mask-image: url('$(res)/img/feather-customised/video.svg');
}
.mx_MessageComposer_stickers {
mask-image: url('$(res)/img/feather-icons/face.svg');
mask-image: url('$(res)/img/feather-customised/face.svg');
}
.mx_MessageComposer_formatting {
@ -255,14 +255,29 @@ limitations under the License.
}
.mx_MessageComposer_formatbar_markdown {
height: 17px;
width: 30px;
margin-right: 64px;
}
.mx_MessageComposer_input_markdownIndicator {
cursor: pointer;
height: 10px;
width: 12px;
padding: 4px 4px 4px 0;
opacity: 0.8;
}
.mx_MessageComposer_formatbar_markdown,
.mx_MessageComposer_input_markdownIndicator {
cursor: pointer;
mask-image: url('$(res)/img/markdown.svg');
mask-size: contain;
mask-position: center;
mask-repeat: no-repeat;
background-color: $composer-button-color;
&.mx_MessageComposer_markdownDisabled {
opacity: 0.2;
}
}
.mx_MatrixChat_useCompactLayout {

View file

@ -203,7 +203,7 @@ limitations under the License.
}
.mx_RoomHeader_settingsButton {
mask-image: url('$(res)/img/feather-icons/settings.svg');
mask-image: url('$(res)/img/feather-customised/settings.svg');
}
.mx_RoomHeader_forgetButton {
@ -212,15 +212,15 @@ limitations under the License.
}
.mx_RoomHeader_searchButton {
mask-image: url('$(res)/img/feather-icons/search.svg');
mask-image: url('$(res)/img/feather-customised/search.svg');
}
.mx_RoomHeader_shareButton {
mask-image: url('$(res)/img/feather-icons/share.svg');
mask-image: url('$(res)/img/feather-customised/share.svg');
}
.mx_RoomHeader_manageIntegsButton {
mask-image: url('$(res)/img/feather-icons/grid.svg');
mask-image: url('$(res)/img/feather-customised/grid.svg');
}
.mx_RoomHeader_showPanel {

View file

@ -102,7 +102,6 @@ limitations under the License.
.mx_RoomTile_name {
font-size: 14px;
font-weight: 600;
padding: 0 6px;
color: $roomtile-name-color;
white-space: nowrap;
@ -155,7 +154,7 @@ limitations under the License.
.mx_RoomTile_unread, .mx_RoomTile_highlight {
.mx_RoomTile_name {
// font-weight: 700; // bold is too loud in the end
font-weight: 600;
color: $roomtile-selected-color;
}
}
@ -191,3 +190,7 @@ limitations under the License.
.mx_RoomTile.mx_RoomTile_transparent:focus {
background-color: $roomtile-transparent-focused-color;
}
.mx_GroupInviteTile .mx_RoomTile_name {
flex: 1;
}

View file

@ -32,7 +32,7 @@ limitations under the License.
width: 37px;
height: 37px;
background-color: $accent-color;
mask: url('$(res)/img/feather-icons/search-input.svg');
mask: url('$(res)/img/feather-customised/search-input.svg');
mask-repeat: no-repeat;
mask-position: center;
}

View file

@ -40,6 +40,7 @@ limitations under the License.
}
.mx_WhoIsTypingTile_remainingAvatarPlaceholder {
position: relative;
display: inline-block;
color: #acacac;
background-color: #ddd;

View file

@ -104,7 +104,7 @@ limitations under the License.
.mx_ProfileSettings_avatarOverlayImg:before {
background-color: $settings-profile-overlay-placeholder-fg-color;
mask: url("$(res)/img/feather-icons/upload.svg");
mask: url("$(res)/img/feather-customised/upload.svg");
mask-repeat: no-repeat;
mask-size: 14px;
mask-position: center;

View file

@ -14,11 +14,11 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_HelpSettingsTab_debugButton {
.mx_HelpUserSettingsTab_debugButton {
margin-bottom: 5px;
margin-top: 5px;
}
.mx_HelpSettingsTab span.mx_AccessibleButton {
.mx_HelpUserSettingsTab span.mx_AccessibleButton {
word-break: break-word;
}

View file

@ -14,6 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_NotificationSettingsTab .mx_SettingsTab_heading {
.mx_NotificationUserSettingsTab .mx_SettingsTab_heading {
margin-bottom: 10px; // Give some spacing between the title and the first elements
}

View file

@ -14,11 +14,11 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_PreferencesSettingsTab .mx_Field {
.mx_PreferencesUserSettingsTab .mx_Field {
margin-right: 100px; // Align with the rest of the controls
}
.mx_PreferencesSettingsTab .mx_Field input {
.mx_PreferencesUserSettingsTab .mx_Field input {
display: block;
// Subtract 10px padding on left and right

View file

@ -14,40 +14,40 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_SecuritySettingsTab .mx_DevicesPanel {
.mx_SecurityUserSettingsTab .mx_DevicesPanel {
// Normally the panel is 880px, however this can easily overflow the container.
// TODO: Fix the table to not be squishy
width: auto;
max-width: 880px;
}
.mx_SecuritySettingsTab_deviceInfo {
.mx_SecurityUserSettingsTab_deviceInfo {
display: table;
padding-left: 0;
}
.mx_SecuritySettingsTab_deviceInfo > li {
.mx_SecurityUserSettingsTab_deviceInfo > li {
display: table-row;
}
.mx_SecuritySettingsTab_deviceInfo > li > label,
.mx_SecuritySettingsTab_deviceInfo > li > span {
.mx_SecurityUserSettingsTab_deviceInfo > li > label,
.mx_SecurityUserSettingsTab_deviceInfo > li > span {
display: table-cell;
padding-right: 1em;
}
.mx_SecuritySettingsTab_importExportButtons .mx_AccessibleButton {
.mx_SecurityUserSettingsTab_importExportButtons .mx_AccessibleButton {
margin-right: 10px;
}
.mx_SecuritySettingsTab_importExportButtons {
.mx_SecurityUserSettingsTab_importExportButtons {
margin-bottom: 15px;
}
.mx_SecuritySettingsTab_ignoredUser {
.mx_SecurityUserSettingsTab_ignoredUser {
margin-bottom: 5px;
}
.mx_SecuritySettingsTab_ignoredUser .mx_AccessibleButton {
.mx_SecurityUserSettingsTab_ignoredUser .mx_AccessibleButton {
margin-right: 10px;
}

View file

@ -14,15 +14,15 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
.mx_VoiceSettingsTab .mx_Field select {
.mx_VoiceUserSettingsTab .mx_Field select {
width: 100%;
max-width: 100%;
}
.mx_VoiceSettingsTab .mx_Field {
.mx_VoiceUserSettingsTab .mx_Field {
margin-right: 100px; // align with the rest of the fields
}
.mx_VoiceSettingsTab_missingMediaPermissions {
.mx_VoiceUserSettingsTab_missingMediaPermissions {
margin-bottom: 15px;
}

View file

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="25px" height="25px" viewBox="0 0 25 25" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
<title>5EF602F6-A36C-41EE-BAEC-50801DFD5492</title>
<desc>Created with sketchtool.</desc>
<defs></defs>
<g id="1:1-chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Chat-People-2c-Invite-modal-ERROR" transform="translate(-611.000000, -358.000000)">
<g id="avatar_error" transform="translate(611.000000, 358.000000)">
<circle id="Oval-2" fill="#FF0064" cx="12.5" cy="12.5" r="12.5"></circle>
<path d="M11.2470703,15.0292969 C11.2470703,14.5901671 11.2733559,14.2082536 11.3259277,13.8835449 C11.3784996,13.5588363 11.4650873,13.2619642 11.5856934,12.9929199 C11.7062994,12.7238756 11.8624665,12.4687512 12.0541992,12.2275391 C12.2459319,11.9863269 12.4809556,11.7296563 12.7592773,11.4575195 C12.9695649,11.2534169 13.1659333,11.0601409 13.3483887,10.8776855 C13.530844,10.6952302 13.6916497,10.508139 13.8308105,10.3164062 C13.9699714,10.1246735 14.0797522,9.920574 14.1601562,9.70410156 C14.2405603,9.48762913 14.2807617,9.2464206 14.2807617,8.98046875 C14.2807617,8.39908563 14.1369643,7.9553238 13.8493652,7.64916992 C13.5617661,7.34301605 13.1396512,7.18994141 12.5830078,7.18994141 C12.3603504,7.18994141 12.1438813,7.22086558 11.9335938,7.28271484 C11.7233062,7.34456411 11.5346688,7.44352146 11.3676758,7.57958984 C11.2006828,7.71565823 11.0661626,7.88883358 10.9641113,8.09912109 C10.86206,8.3094086 10.8110352,8.5629868 10.8110352,8.85986328 L8.55664062,8.85986328 C8.56282555,8.27848017 8.66951394,7.76668515 8.87670898,7.32446289 C9.08390403,6.88224063 9.36840639,6.51115059 9.73022461,6.21118164 C10.0920428,5.91121269 10.515704,5.68546625 11.0012207,5.53393555 C11.4867375,5.38240484 12.0139946,5.30664062 12.5830078,5.30664062 C13.2076854,5.30664062 13.7643205,5.38704347 14.2529297,5.54785156 C14.7415389,5.70865966 15.1559228,5.94368335 15.4960938,6.25292969 C15.8362647,6.56217603 16.0944815,6.9394509 16.270752,7.38476562 C16.4470224,7.83008035 16.5351562,8.33414432 16.5351562,8.89697266 C16.5351562,9.30517782 16.4702155,9.68554511 16.340332,10.0380859 C16.2104486,10.3906268 16.0372732,10.7215154 15.8208008,11.0307617 C15.6043283,11.3400081 15.356935,11.6368801 15.0786133,11.9213867 C14.8002916,12.2058933 14.5126968,12.4873033 14.2158203,12.765625 C13.8756493,13.0748713 13.6483567,13.413491 13.5339355,13.7814941 C13.4195144,14.1494973 13.3592123,14.5654274 13.3530273,15.0292969 L11.2470703,15.0292969 Z M11.0893555,17.9145508 C11.0893555,17.7413728 11.1171872,17.5805671 11.1728516,17.4321289 C11.2285159,17.2836907 11.310465,17.1538092 11.4187012,17.0424805 C11.5269374,16.9311518 11.6599113,16.8445641 11.817627,16.7827148 C11.9753426,16.7208656 12.156249,16.6899414 12.3603516,16.6899414 C12.5644541,16.6899414 12.7453605,16.7208656 12.9030762,16.7827148 C13.0607918,16.8445641 13.1937657,16.9311518 13.302002,17.0424805 C13.4102382,17.1538092 13.4937334,17.2836907 13.5524902,17.4321289 C13.611247,17.5805671 13.640625,17.7413728 13.640625,17.9145508 C13.640625,18.2547218 13.529298,18.5392241 13.3066406,18.7680664 C13.0839833,18.9969087 12.7685567,19.1113281 12.3603516,19.1113281 C11.9521464,19.1113281 11.6382661,18.9969087 11.4187012,18.7680664 C11.1991363,18.5392241 11.0893555,18.2547218 11.0893555,17.9145508 L11.0893555,17.9145508 Z" id="?" fill="#FFFFFF"></path>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 569 B

View file

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="23px" height="15px" viewBox="0 0 23 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch -->
<title>D335F9E8-C813-47D7-B1BE-C8DEF2C8214F</title>
<desc>Created with sketchtool.</desc>
<defs>
<text id="text-1" font-family="markdown" font-size="14" font-weight="normal" fill="#DDDDDD">
<tspan x="829.125" y="759"></tspan>
</text>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="1" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0526494565 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
<filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-3">
<feOffset dx="1" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0526494565 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
</defs>
<g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" fill-opacity="1">
<g id="02_x-Chat-text-input-markdown-panel-MD_off-BUTTONS-ON" transform="translate(-829.000000, -745.000000)" fill="#DDDDDD">
<g id="button_md_off">
<use filter="url(#filter-2)" xlink:href="#text-1"></use>
<use filter="url(#filter-3)" xlink:href="#text-1"></use>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 483 B

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="23px" height="15px" viewBox="0 0 23 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 39 (31667) - http://www.bohemiancoding.com/sketch -->
<title>2A63B135-4281-4FBB-A88C-012AE22E9594</title>
<desc>Created with sketchtool.</desc>
<defs></defs>
<g id="Screens-revised" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" font-size="14" font-family="markdown" font-weight="normal">
<g id="02_x-Chat-text-input-markdown-panel-MD_on" transform="translate(-829.000000, -745.000000)" fill="#4A4A4A">
<text id="button_markdown_on">
<tspan x="829.125" y="759"></tspan>
</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 906 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="612px" height="612px" viewBox="0 90 612 612" enable-background="new 0 90 612 612" xml:space="preserve">
<path fill="#76CFA6" d="M612,149.5v135.983c0,22.802-27.582,33.979-43.531,18.032l-37.939-37.941L271.787,524.317
c-9.959,9.958-26.104,9.958-36.062,0l-24.041-24.042c-9.959-9.958-9.959-26.104,0-36.062l258.746-258.746l-37.935-37.937
C416.48,151.519,427.822,124,450.525,124H586.5C600.583,124,612,135.417,612,149.5z M432.469,411.719l-17,17
c-4.782,4.782-7.469,11.269-7.469,18.031V600H68V260h280.5c6.763,0,13.248-2.687,18.03-7.468l17-17
C399.595,219.467,388.218,192,365.5,192H51c-28.167,0-51,22.833-51,51v374c0,28.167,22.833,51,51,51h374c28.167,0,51-22.833,51-51
V429.749C476,407.031,448.532,395.654,432.469,411.719z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="612px" height="612px" viewBox="0 90 612 612" enable-background="new 0 90 612 612" xml:space="preserve">
<path stroke="#76CFA6" fill="#76CFA6" stroke-width="40" stroke-miterlimit="10" d="M517.593,435.2c-9.204,0-17.093,7.053-17.811,16.257
c-8.247,99.33-91.8,176.786-193.401,176.786c-106.98,0-194.119-86.54-194.119-192.923c0-104.71,84.389-190.294,189.098-192.924
c2.75-0.12,4.901,2.032,4.901,4.781v60.124c0,15.061,16.614,24.146,29.404,16.137l114.989-80.444
c11.953-7.53,11.953-24.862,0-32.393l-114.869-79.369c-12.79-8.009-29.405,1.076-29.405,16.137v54.626
c0,2.629-2.032,4.781-4.661,4.781C176.929,209.286,76.522,310.649,76.522,435.32c0,126.225,102.917,228.424,229.858,228.424
c120.487,0,219.221-91.681,229.022-209.299C536.359,444.046,527.992,435.2,517.593,435.2L517.593,435.2z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="30px" height="22px" viewBox="-1 -1 30 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: bin/sketchtool 1.4 (305) - http://www.bohemiancoding.com/sketch -->
<title>icons_video</title>
<desc>Created with bin/sketchtool.</desc>
<defs></defs>
<g id="02-Chat" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="02_13-Chat-member-profile" sketch:type="MSArtboardGroup" transform="translate(-910.000000, -723.000000)" stroke="#76CFA6">
<g id="icons_video" sketch:type="MSLayerGroup" transform="translate(910.000000, 722.000000)">
<g id="Rectangle-20-+-Path-16" transform="translate(0.000000, 0.464286)" sketch:type="MSShapeGroup">
<rect id="Rectangle-20" fill="#FFFFFF" x="0" y="0.535714286" width="20" height="20" rx="4"></rect>
<path d="M20.75,10.6964286 C20.75,14.0446429 24.188247,15.7371974 24.188247,15.7371974 C25.5057636,16.651593 26.5738219,16.0843085 26.5738219,14.4868066 L26.5738219,6.90605053 C26.5738219,5.30108314 25.4784055,4.70120148 24.188247,5.65565975 C24.188247,5.65565975 20.75,7.34821429 20.75,10.6964286 Z" id="Path-16"></path>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="2048px" height="1792px" viewBox="0 0 2048 1792" enable-background="new 0 0 2048 1792" xml:space="preserve">
<path fill="#76CFA6" d="M1024,672c79.333,0,147.166,28.167,203.5,84.5c56.333,56.334,84.5,124.167,84.5,203.5
c0,79.334-28.167,147.167-84.5,203.5c-56.334,56.334-124.167,84.5-203.5,84.5c-79.334,0-147.167-28.166-203.5-84.5
C764.166,1107.167,736,1039.334,736,960c0-79.333,28.166-147.166,84.5-203.5C876.833,700.167,944.666,672,1024,672z M1728,256
c70.666,0,131,25,181,75s75,110.334,75,181v896c0,70.667-25,131-75,181s-110.334,75-181,75H320c-70.667,0-131-25-181-75
s-75-110.333-75-181V512c0-70.666,25-131,75-181s110.333-75,181-75h224l51-136c12.666-32.666,35.833-60.833,69.5-84.5
C698.166,11.834,732.666,0,768,0h512c35.333,0,69.833,11.834,103.5,35.5c33.666,23.667,56.833,51.834,69.5,84.5l51,136H1728z
M1024,1408c123.333,0,228.833-43.833,316.5-131.5c87.666-87.666,131.5-193.166,131.5-316.5c0-123.333-43.834-228.833-131.5-316.5
C1252.833,555.834,1147.333,512,1024,512c-123.334,0-228.834,43.834-316.5,131.5C619.833,731.167,576,836.667,576,960
c0,123.334,43.833,228.834,131.5,316.5C795.166,1364.167,900.666,1408,1024,1408z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.4.2 (15857) - http://www.bohemiancoding.com/sketch -->
<title>Slice 1</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<path d="M9.74464309,-3.02908503 L8.14106175,-3.02908503 L8.14106175,8.19448443 L-3.03028759,8.19448443 L-3.03028759,9.7978515 L8.14106175,9.7978515 L8.14106175,20.9685098 L9.74464309,20.9685098 L9.74464309,9.7978515 L20.9697124,9.7978515 L20.9697124,8.19448443 L9.74464309,8.19448443 L9.74464309,-3.02908503" id="Fill-108" opacity="0.9" fill="#76CFA6" sketch:type="MSShapeGroup" transform="translate(8.969712, 8.969712) rotate(-315.000000) translate(-8.969712, -8.969712) "></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1 KiB

View file

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="26px" height="26px" viewBox="-1 -2 26 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: sketchtool 3.4 (381) - http://www.bohemiancoding.com/sketch -->
<title>icons_directory</title>
<desc>Created with sketchtool.</desc>
<defs></defs>
<g id="01-Sign-up" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="01_2-Sign-up-2" sketch:type="MSArtboardGroup" transform="translate(-14.000000, -689.000000)" fill="#454545">
<g id="Left-panel" sketch:type="MSLayerGroup" transform="translate(-4.000000, 0.000000)">
<g id="right_bottom" transform="translate(0.000000, 626.000000)" sketch:type="MSShapeGroup">
<g id="Group-Copy-29" transform="translate(18.000000, 27.000000)">
<g id="icons_directory" transform="translate(0.000000, 36.000000)">
<path d="M8.74940618,2.46971496 C8.58491686,2.46971496 8.47565321,2.15795724 8.32719715,1.68349169 C8.11698337,1.01306413 7.80106888,0 6.69002375,0 L1.38182898,0 C0.63064133,0 0.0243467933,0.589073634 0.00118764846,1.35391924 L0,19.6264846 C0,20.3895487 0.620546318,21.0095012 1.38182898,21.0095012 L22.6187648,21.0095012 C23.3800475,21.0095012 24,20.3895487 24,19.6264846 L24,3.85213777 C24,3.08966746 23.3800475,2.46971496 22.6187648,2.46971496 L8.74940618,2.46971496 Z M23.1086698,19.5068597 C23.1086698,19.7757653 22.8889549,19.9946556 22.6187648,19.9946556 L1.38182898,19.9946556 C1.11163895,19.9946556 0.890736342,19.7757653 0.890736342,19.5068597 L0.89192399,6.49465558 L23.1086698,6.49465558 L23.1086698,19.5068597 L23.1086698,19.5068597 Z M23.1086698,5.60391924 L0.89192399,5.60391924 L0.89192399,1.36698337 C0.90023753,1.09976247 1.11579572,0.890736342 1.38182898,0.890736342 L6.69002375,0.890736342 C7.10273159,0.890736342 7.24643705,1.2131829 7.47624703,1.94893112 C7.66270784,2.54453682 7.91805226,3.36045131 8.74940618,3.36045131 L22.6187648,3.36045131 C22.8889549,3.36045131 23.1086698,3.5807601 23.1086698,3.85213777 L23.1086698,5.60391924 L23.1086698,5.60391924 Z" id="Fill-137"></path>
<path d="M23.1086698,19.5068597 C23.1086698,19.7757653 22.8889549,19.9946556 22.6187648,19.9946556 L1.38182898,19.9946556 C1.11163895,19.9946556 0.890736342,19.7757653 0.890736342,19.5068597 L0.89192399,6.49465558 L23.1086698,6.49465558 L23.1086698,19.5068597 L23.1086698,19.5068597 Z" id="Path-Copy-2" fill-opacity="0.1"></path>
<path d="M0.89192399,5.60391924 L0.89192399,1.36698337 C0.90023753,1.09976247 1.11579572,0.890736342 1.38182898,0.890736342 L6.69002375,0.890736342 C7.10273159,0.890736342 7.24643705,1.2131829 7.47624703,1.94893112 C7.66270784,2.54453682 7.91805226,3.36045131 8.74940618,3.36045131 L22.6187648,3.36045131 C22.8889549,3.36045131 23.1086698,3.5807601 23.1086698,3.85213777 L23.1086698,5.60391924 L0.89192399,5.60391924 Z" id="Path-Copy" fill-opacity="0.1"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
<title>2805649B-D39D-43EA-A357-659EF9B97BA4</title>
<desc>Created with sketchtool.</desc>
<defs></defs>
<g id="Typing-Indicator" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="typing-indicator" transform="translate(-301.000000, -328.000000)" fill="#BA6363">
<path d="M307,340 C310.313708,340 313,337.313708 313,334 C313,330.686292 310.313708,328 307,328 C303.686292,328 301,330.686292 301,334 C301,337.313708 303.686292,340 307,340 Z M304,333 L310,333 L310,335 L304,335 L304,333 Z" id="blocked_icon"></path>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 883 B

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="10px" height="12px" viewBox="0 0 10 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
<title>48BF5D32-306C-4B20-88EB-24B1F743CAC9</title>
<desc>Created with sketchtool.</desc>
<defs></defs>
<g id="Typing-Indicator" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.4">
<g id="typing-indicator" transform="translate(-301.000000, -172.000000)" fill="#76CFA6">
<path d="M309.666667,175.666667 C309.666667,173.633333 308.033333,172 306,172 C303.966667,172 302.333333,173.633333 302.333333,175.666667 L302.333333,176.666667 L301,176.666667 L301,184 L306,184 L311,184 L311,176.666667 L309.666667,176.666667 L309.666667,175.666667 Z M306,176.666667 L303.666667,176.666667 L303.666667,175.666667 C303.666667,174.366667 304.7,173.333333 306,173.333333 C307.3,173.333333 308.333333,174.366667 308.333333,175.666667 L308.333333,176.666667 L306,176.666667 L306,176.666667 Z" id="verified_icon"></path>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="10px" height="12px" viewBox="0 0 10 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
<title>48BF5D32-306C-4B20-88EB-24B1F743CAC9</title>
<desc>Created with sketchtool.</desc>
<defs></defs>
<g id="Typing-Indicator" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="typing-indicator" transform="translate(-301.000000, -172.000000)" fill="#f44">
<path d="M309.666667,175.666667 C309.666667,173.633333 308.033333,172 306,172 C303.966667,172 302.333333,173.633333 302.333333,175.666667 L302.333333,176.666667 L301,176.666667 L301,184 L306,184 L311,184 L311,176.666667 L309.666667,176.666667 L309.666667,175.666667 Z M306,176.666667 L303.666667,176.666667 L303.666667,175.666667 C303.666667,174.366667 304.7,173.333333 306,173.333333 C307.3,173.333333 308.333333,174.366667 308.333333,175.666667 L308.333333,176.666667 L306,176.666667 L306,176.666667 Z" id="verified_icon"></path>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="14px" height="12px" viewBox="0 0 14 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
<title>16F5F38E-A6A3-472A-BC13-13F0F12876CF</title>
<desc>Created with sketchtool.</desc>
<defs></defs>
<g id="Typing-Indicator" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.200000003">
<g id="typing-indicator" transform="translate(-301.000000, -141.000000)" fill="#000000">
<g id="unencrypted_icon" transform="translate(301.000000, 141.000000)">
<g id="Lock-Copy" transform="translate(0.000000, 4.000000)">
<g id="Layer_1">
<polygon id="Shape" points="1.33333333 0.666666667 0 0.666666667 0 8 5 8 10 8 10 0.666666667 8.66666667 0.666666667"></polygon>
</g>
</g>
<g id="Lock-Copy-2" transform="translate(6.000000, 0.000000)">
<g id="Layer_1">
<path d="M7.66666667,3.66666667 C7.66666667,1.63333333 6.03333333,0 4,0 C1.96666667,0 0.333333333,1.63333333 0.333333333,3.66666667 L0.333333333,4.66666667 L7.66666667,4.66666667 L7.66666667,3.66666667 Z M1.66666667,4.66666667 L1.66666667,3.66666667 C1.66666667,2.36666667 2.7,1.33333333 4,1.33333333 C5.3,1.33333333 6.33333333,2.36666667 6.33333333,3.66666667 L6.33333333,4.66666667 L4,4.66666667 L1.66666667,4.66666667 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="10px" height="12px" viewBox="0 0 10 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
<title>48BF5D32-306C-4B20-88EB-24B1F743CAC9</title>
<desc>Created with sketchtool.</desc>
<defs></defs>
<g id="Typing-Indicator" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="typing-indicator" transform="translate(-301.000000, -172.000000)" fill="#76CFA6">
<path d="M309.666667,175.666667 C309.666667,173.633333 308.033333,172 306,172 C303.966667,172 302.333333,173.633333 302.333333,175.666667 L302.333333,176.666667 L301,176.666667 L301,184 L306,184 L311,184 L311,176.666667 L309.666667,176.666667 L309.666667,175.666667 Z M306,176.666667 L303.666667,176.666667 L303.666667,175.666667 C303.666667,174.366667 304.7,173.333333 306,173.333333 C307.3,173.333333 308.333333,174.366667 308.333333,175.666667 L308.333333,176.666667 L306,176.666667 L306,176.666667 Z" id="verified_icon"></path>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="15px" height="12px" viewBox="0 0 15 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
<title>CCDDE6F6-B552-48FD-AD54-6939841CA2DD</title>
<desc>Created with sketchtool.</desc>
<defs></defs>
<g id="Typing-Indicator" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="typing-indicator" transform="translate(-299.000000, -294.000000)" fill="#E9BF37">
<path d="M313.568455,304.982113 L306.898576,294.310305 C306.776309,294.117108 306.563606,294 306.334971,294 C306.106335,294 305.893632,294.117108 305.771366,294.310305 L299.101486,304.982113 C298.971497,305.189962 298.966004,305.452367 299.087182,305.665474 C299.20836,305.87858 299.436676,306.008036 299.681766,306.002604 L313.021525,306.002604 C313.260642,305.995965 313.477893,305.861783 313.590891,305.650946 C313.703889,305.440108 313.695328,305.184904 313.568455,304.982113 L313.568455,304.982113 Z M307.018633,304.00164 L305.684657,304.00164 L305.684657,302.667664 L307.018633,302.667664 L307.018633,304.00164 Z M307.018633,301.333689 L305.684657,301.333689 L305.684657,297.998749 L307.018633,297.998749 L307.018633,301.333689 Z" id="unverified_icon"></path>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

Before

Width:  |  Height:  |  Size: 440 B

After

Width:  |  Height:  |  Size: 440 B

View file

@ -1,6 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="25" viewBox="0 0 22 25">
<g fill="none" fill-rule="evenodd" stroke="#7AC9A1" stroke-linecap="round" stroke-linejoin="round">
<path stroke-width="2" d="M8.23 21.01l-5.233-.007a1.995 1.995 0 0 1-1.997-2V11a2 2 0 0 1 2-2h14c1.259 0 2 .939 2 1M5 9V6a5 5 0 1 1 10 0v3"/>
<path stroke-width="1" d="M8.23 21.01l-5.233-.007a1.995 1.995 0 0 1-1.997-2V11a2 2 0 0 1 2-2h14c1.259 0 2 .939 2 1M5 9V6a5 5 0 1 1 10 0v3"/>
<path fill="#7AC9A1" d="M15.5 24s5.5-2.4 5.5-6v-4.2L15.5 12 10 13.8V18c0 3.6 5.5 6 5.5 6z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 454 B

After

Width:  |  Height:  |  Size: 454 B

View file

@ -0,0 +1 @@
<svg height="42" width="37" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><mask id="a" fill="#fff"><path d="m23.521 14.596h-1.777a.454.454 0 0 1 -.456-.45v-4.14a8.974 8.974 0 0 0 -8.57-9 8.884 8.884 0 0 0 -9.253 8.82v4.365a.454.454 0 0 1 -.456.45h-1.78a1.218 1.218 0 0 0 -1.229 1.215v15.93a1.218 1.218 0 0 0 1.229 1.214h22.247a1.218 1.218 0 0 0 1.231-1.215v-15.974a1.153 1.153 0 0 0 -1.186-1.215zm-17.276-4.77a6.114 6.114 0 0 1 6.473-6.075 6.251 6.251 0 0 1 5.88 6.255v4.185a.454.454 0 0 1 -.456.45h-11.486a.454.454 0 0 1 -.456-.45v-4.365zm20.255 11.174c6.344.019 11.481 5.156 11.5 11.5 0 6.351-5.149 11.5-11.5 11.5s-11.5-5.149-11.5-11.5 5.149-11.5 11.5-11.5z" fill="#fff" fill-rule="evenodd"/></mask><g fill="#000" fill-rule="evenodd"><path d="m-.909 32.909h19.773c2.392-6.604 4.34-10.526 5.844-11.766s1.808-8.258.912-21.052h-26.529z" mask="url(#a)" transform="translate(0 -1)"/><path d="m26.5 21c-5.799 0-10.5 4.701-10.5 10.5s4.701 10.5 10.5 10.5 10.5-4.701 10.5-10.5c-.017-5.792-4.708-10.483-10.5-10.5zm1.444 16.012h-2.888v-2.493h3.019v2.494zm.131-9.712-.787 5.775h-1.575l-.788-5.775v-1.312h3.15z" fill-rule="nonzero"/></g></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1 +1,9 @@
<svg height="42" width="37" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><mask id="a" fill="#fff"><path d="m23.521 14.596h-1.777a.454.454 0 0 1 -.456-.45v-4.14a8.974 8.974 0 0 0 -8.57-9 8.884 8.884 0 0 0 -9.253 8.82v4.365a.454.454 0 0 1 -.456.45h-1.78a1.218 1.218 0 0 0 -1.229 1.215v15.93a1.218 1.218 0 0 0 1.229 1.214h22.247a1.218 1.218 0 0 0 1.231-1.215v-15.974a1.153 1.153 0 0 0 -1.186-1.215zm-17.276-4.77a6.114 6.114 0 0 1 6.473-6.075 6.251 6.251 0 0 1 5.88 6.255v4.185a.454.454 0 0 1 -.456.45h-11.486a.454.454 0 0 1 -.456-.45v-4.365zm20.255 11.174c6.344.019 11.481 5.156 11.5 11.5 0 6.351-5.149 11.5-11.5 11.5s-11.5-5.149-11.5-11.5 5.149-11.5 11.5-11.5z" fill="#fff" fill-rule="evenodd"/></mask><g fill="#000" fill-rule="evenodd"><path d="m-.909 32.909h19.773c2.392-6.604 4.34-10.526 5.844-11.766s1.808-8.258.912-21.052h-26.529z" mask="url(#a)" transform="translate(0 -1)"/><path d="m26.5 21c-5.799 0-10.5 4.701-10.5 10.5s4.701 10.5 10.5 10.5 10.5-4.701 10.5-10.5c-.017-5.792-4.708-10.483-10.5-10.5zm1.444 16.012h-2.888v-2.493h3.019v2.494zm.131-9.712-.787 5.775h-1.575l-.788-5.775v-1.312h3.15z" fill-rule="nonzero"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="23" height="25" viewBox="0 0 23 25">
<defs>
<path id="a" d="M15 23a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm0-10.5a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-3 0v-3a1.5 1.5 0 0 1 1.5-1.5zm0 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z"/>
</defs>
<g fill="none" fill-rule="evenodd" stroke="#F56679" stroke-linecap="round" stroke-linejoin="round" transform="translate(1 1)">
<path stroke-width="1" d="M7.23 20.01l-5.233-.007a2 2 0 0 1-1.997-2V10a2 2 0 0 1 2-2h14c1.259 0 2 .939 2 1M4 8V5a5 5 0 1 1 10 0v3"/>
<use fill="#F56679" xlink:href="#a"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 665 B

View file

Before

Width:  |  Height:  |  Size: 276 B

After

Width:  |  Height:  |  Size: 276 B

View file

Before

Width:  |  Height:  |  Size: 498 B

After

Width:  |  Height:  |  Size: 498 B

View file

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" xml:space="preserve">
<g>
<rect fill="#000000" x="167.664" y="69.108" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 219.262 633.2606)" width="146.238" height="404.224"/>
<path fill="#000000" d="M502.05,64.887L447.116,9.952c-13.386-13.385-36.032-12.44-50.585,2.113l-51.609,51.61L448.328,167.08l51.609-51.608
C514.486,100.918,515.434,78.271,502.05,64.887z"/>
<polygon fill="#000000" points="36.56,378.704 0,512 133.283,475.439"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 780 B

View file

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" xml:space="preserve">
<g>
<rect fill="#76CFA6" x="167.664" y="69.108" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 219.262 633.2606)" width="146.238" height="404.224"/>
<path fill="#76CFA6" d="M502.05,64.887L447.116,9.952c-13.386-13.385-36.032-12.44-50.585,2.113l-51.609,51.61L448.328,167.08l51.609-51.608
C514.486,100.918,515.434,78.271,502.05,64.887z"/>
<polygon fill="#76CFA6" points="36.56,378.704 0,512 133.283,475.439"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 780 B

View file

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="22px" height="16px" viewBox="-1 -1 22 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: sketchtool 3.4 (381) - http://www.bohemiancoding.com/sketch -->
<title>icon_eol</title>
<desc>Created with sketchtool.</desc>
<defs></defs>
<g id="03-Input" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="03_2-Mentions-autocomplete" sketch:type="MSArtboardGroup" transform="translate(-772.000000, -670.000000)">
<g id="icon_eol" sketch:type="MSLayerGroup" transform="translate(772.000000, 670.000000)">
<path d="M0,7.5 L17,7.5" id="Path-118" stroke="#76CFA6" sketch:type="MSShapeGroup"></path>
<path d="M13,2 L18,7.38056399 L13,12.761128" id="Path-119" stroke="#76CFA6" sketch:type="MSShapeGroup"></path>
<path d="M19.5,0 L19.5,14" id="Path-120" stroke="#76CFA6" sketch:type="MSShapeGroup"></path>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

Before

Width:  |  Height:  |  Size: 335 B

After

Width:  |  Height:  |  Size: 335 B

View file

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

Before

Width:  |  Height:  |  Size: 801 B

After

Width:  |  Height:  |  Size: 801 B

View file

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 391 B

View file

Before

Width:  |  Height:  |  Size: 357 B

After

Width:  |  Height:  |  Size: 357 B

View file

Before

Width:  |  Height:  |  Size: 524 B

After

Width:  |  Height:  |  Size: 524 B

View file

Before

Width:  |  Height:  |  Size: 927 B

After

Width:  |  Height:  |  Size: 927 B

View file

Before

Width:  |  Height:  |  Size: 352 B

After

Width:  |  Height:  |  Size: 352 B

View file

Before

Width:  |  Height:  |  Size: 332 B

After

Width:  |  Height:  |  Size: 332 B

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

Before

Width:  |  Height:  |  Size: 369 B

After

Width:  |  Height:  |  Size: 369 B

View file

Before

Width:  |  Height:  |  Size: 914 B

After

Width:  |  Height:  |  Size: 914 B

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

Before

Width:  |  Height:  |  Size: 674 B

After

Width:  |  Height:  |  Size: 674 B

View file

Before

Width:  |  Height:  |  Size: 674 B

After

Width:  |  Height:  |  Size: 674 B

View file

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

Before

Width:  |  Height:  |  Size: 952 B

After

Width:  |  Height:  |  Size: 952 B

View file

Before

Width:  |  Height:  |  Size: 546 B

After

Width:  |  Height:  |  Size: 546 B

View file

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 362 B

View file

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 345 B

View file

Before

Width:  |  Height:  |  Size: 357 B

After

Width:  |  Height:  |  Size: 357 B

Some files were not shown because too many files have changed in this diff Show more