(core) Enable MFA configuration (and add SMS)

Summary:
Enables configuration of multi-factor authentication from the
account page (for users who sign in with email/password), and adds
SMS as an authentication method.

Test Plan: Project, browser and server tests.

Reviewers: paulfitz

Reviewed By: paulfitz

Differential Revision: https://phab.getgrist.com/D3215
This commit is contained in:
George Gevoian
2022-01-19 11:41:06 -08:00
parent 1b4580d92e
commit 0d005eb78d
13 changed files with 839 additions and 345 deletions

View File

@@ -67,6 +67,8 @@
--icon-Log: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuNSw4LjUgTDYuNSw4LjUgQzYuMjIzODU3NjMsOC41IDYsOC4yNzYxNDIzNyA2LDggQzYsNy43MjM4NTc2MyA2LjIyMzg1NzYzLDcuNSA2LjUsNy41IEw3LjUsNy41IEw3LjUsMC41IEM3LjUsMC4yMjM4NTc2MjUgNy43MjM4NTc2MywwIDgsMCBDOC4yNzYxNDIzNywwIDguNSwwLjIyMzg1NzYyNSA4LjUsMC41IEw4LjUsMyBMOS41LDMgQzkuNzc2MTQyMzcsMyAxMCwzLjIyMzg1NzYzIDEwLDMuNSBDMTAsMy43NzYxNDIzNyA5Ljc3NjE0MjM3LDQgOS41LDQgTDguNSw0IEw4LjUsMTIgTDkuNSwxMiBDOS43NzYxNDIzNywxMiAxMCwxMi4yMjM4NTc2IDEwLDEyLjUgQzEwLDEyLjc3NjE0MjQgOS43NzYxNDIzNywxMyA5LjUsMTMgTDguNSwxMyBMOC41LDE1LjUgQzguNSwxNS43NzYxNDI0IDguMjc2MTQyMzcsMTYgOCwxNiBDNy43MjM4NTc2MywxNiA3LjUsMTUuNzc2MTQyNCA3LjUsMTUuNSBMNy41LDguNSBaIE0xMiwyIEwxMiw1IEwxNSw1IEwxNSwyIEwxMiwyIFogTTExLjUsMSBMMTUuNSwxIEMxNS43NzYxNDI0LDEgMTYsMS4yMjM4NTc2MyAxNiwxLjUgTDE2LDUuNSBDMTYsNS43NzYxNDIzNyAxNS43NzYxNDI0LDYgMTUuNSw2IEwxMS41LDYgQzExLjIyMzg1NzYsNiAxMSw1Ljc3NjE0MjM3IDExLDUuNSBMMTEsMS41IEMxMSwxLjIyMzg1NzYzIDExLjIyMzg1NzYsMSAxMS41LDEgWiBNMTIsMTEgTDEyLDE0IEwxNSwxNCBMMTUsMTEgTDEyLDExIFogTTExLjUsMTAgTDE1LjUsMTAgQzE1Ljc3NjE0MjQsMTAgMTYsMTAuMjIzODU3NiAxNiwxMC41IEwxNiwxNC41IEMxNiwxNC43NzYxNDI0IDE1Ljc3NjE0MjQsMTUgMTUuNSwxNSBMMTEuNSwxNSBDMTEuMjIzODU3NiwxNSAxMSwxNC43NzYxNDI0IDExLDE0LjUgTDExLDEwLjUgQzExLDEwLjIyMzg1NzYgMTEuMjIzODU3NiwxMCAxMS41LDEwIFogTTQsOS41IEw0LDYuNSBMMSw2LjUgTDEsOS41IEw0LDkuNSBaIE00LjUsMTAuNSBMMC41LDEwLjUgQzAuMjIzODU3NjI1LDEwLjUgMCwxMC4yNzYxNDI0IDAsMTAgTDguODgxNzg0MmUtMTYsNiBDOC44ODE3ODQyZS0xNiw1LjcyMzg1NzYzIDAuMjIzODU3NjI1LDUuNSAwLjUsNS41IEw0LjUsNS41IEM0Ljc3NjE0MjM3LDUuNSA1LDUuNzIzODU3NjMgNSw2IEw1LDEwIEM1LDEwLjI3NjE0MjQgNC43NzYxNDIzNywxMC41IDQuNSwxMC41IFoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg==');
--icon-Mail: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0LjUsMTMgQzE0Ljc3NTg1NzYsMTMgMTUsMTIuNzc1ODU3NiAxNSwxMi41IEwxNSwxLjUgQzE1LDEuMjI0MTQyMzcgMTQuNzc1ODU3NiwxIDE0LjUsMSBMMS41LDEgQzEuMjI0MTQyMzcsMSAxLDEuMjI0MTQyMzcgMSwxLjUgTDEsMTIuNSBDMSwxMi43NzU4NTc2IDEuMjI0MTQyMzcsMTMgMS41LDEzIEwxNC41LDEzIFogTTE0LjUsMTQgTDEuNSwxNCBDMC42NzE4NTc2MjUsMTQgMCwxMy4zMjgxNDI0IDAsMTIuNSBMMCwxLjUgQzAsMC42NzE4NTc2MjUgMC42NzE4NTc2MjUsOC44ODE3ODQyZS0xNiAxLjUsOC44ODE3ODQyZS0xNiBMMTQuNSw4Ljg4MTc4NDJlLTE2IEMxNS4zMjgxNDI0LDguODgxNzg0MmUtMTYgMTYsMC42NzE4NTc2MjUgMTYsMS41IEwxNiwxMi41IEMxNiwxMy4zMjgxNDI0IDE1LjMyODE0MjQsMTQgMTQuNSwxNCBaIE0xMy4xODMzODExLDMuMTEzMDIxMzUgQzEzLjM5NzEwMzUsMi45MzgxNTc1NiAxMy43MTIxMTQ5LDIuOTY5NjU4NyAxMy44ODY5Nzg2LDMuMTgzMzgxMSBDMTQuMDYxODQyNCwzLjM5NzEwMzUxIDE0LjAzMDM0MTMsMy43MTIxMTQ4NiAxMy44MTY2MTg5LDMuODg2OTc4NjUgTDguMzE2NjE4OSw4LjM4Njk3ODY1IEM4LjEzMjQzNTk1LDguNTM3NjczNzggNy44Njc1NjQwNSw4LjUzNzY3Mzc4IDcuNjgzMzgxMSw4LjM4Njk3ODY1IEwyLjE4MzM4MTEsMy44ODY5Nzg2NSBDMS45Njk2NTg3LDMuNzEyMTE0ODYgMS45MzgxNTc1NiwzLjM5NzEwMzUxIDIuMTEzMDIxMzUsMy4xODMzODExIEMyLjI4Nzg4NTE0LDIuOTY5NjU4NyAyLjYwMjg5NjQ5LDIuOTM4MTU3NTYgMi44MTY2MTg5LDMuMTEzMDIxMzUgTDgsNy4zNTM5Njk1MyBMMTMuMTgzMzgxMSwzLjExMzAyMTM1IFoiIGZpbGw9IiMwMDAiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg==');
--icon-Minus: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHJlY3QgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIiB4PSIyIiB5PSI3LjUiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxIiByeD0iLjUiLz48L3N2Zz4=');
--icon-MobileChat: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTExLjUgOC41VjE0LjVDMTEuNSAxNC43NjUyIDExLjM5NDYgMTUuMDE5NiAxMS4yMDcxIDE1LjIwNzFDMTEuMDE5NiAxNS4zOTQ2IDEwLjc2NTIgMTUuNSAxMC41IDE1LjVIMi41QzIuMjM0NzggMTUuNSAxLjk4MDQzIDE1LjM5NDYgMS43OTI4OSAxNS4yMDcxQzEuNjA1MzYgMTUuMDE5NiAxLjUgMTQuNzY1MiAxLjUgMTQuNVYyLjVDMS41IDIuMjM0NzggMS42MDUzNiAxLjk4MDQzIDEuNzkyODkgMS43OTI4OUMxLjk4MDQzIDEuNjA1MzYgMi4yMzQ3OCAxLjUgMi41IDEuNUg0LjUiIHN0cm9rZT0iIzI2MjYzMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PHBhdGggZD0iTTE0LjUgNi41SDkuNUw2LjUgOC41VjEuNUM2LjUgMS4yMzQ3OCA2LjYwNTM2IDAuOTgwNDMgNi43OTI4OSAwLjc5Mjg5M0M2Ljk4MDQzIDAuNjA1MzU3IDcuMjM0NzggMC41IDcuNSAwLjVIMTQuNUMxNC43NjUyIDAuNSAxNS4wMTk2IDAuNjA1MzU3IDE1LjIwNzEgMC43OTI4OTNDMTUuMzk0NiAwLjk4MDQzIDE1LjUgMS4yMzQ3OCAxNS41IDEuNVY1LjVDMTUuNSA1Ljc2NTIyIDE1LjM5NDYgNi4wMTk1NyAxNS4yMDcxIDYuMjA3MTFDMTUuMDE5NiA2LjM5NDY0IDE0Ljc2NTIgNi41IDE0LjUgNi41WiIgc3Ryb2tlPSIjMjYyNjMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=');
--icon-MobileChat2: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTggMEgxNUMxNS4yNjUyIDAgMTUuNTE5NiAwLjEwNTM1NyAxNS43MDcxIDAuMjkyODkzQzE1Ljg5NDYgMC40ODA0MyAxNiAwLjczNDc4NCAxNiAxVjVDMTYgNS4yNjUyMiAxNS44OTQ2IDUuNTE5NTcgMTUuNzA3MSA1LjcwNzExQzE1LjUxOTYgNS44OTQ2NCAxNS4yNjUyIDYgMTUgNkgxMEw3IDhWMUM3IDAuNzM0Nzg0IDcuMTA1MzYgMC40ODA0MyA3LjI5Mjg5IDAuMjkyODkzQzcuNDgwNDMgMC4xMDUzNTcgNy43MzQ3OCAwIDggMFYwWiIgZmlsbD0iIzE2QjM3OCIvPjxwYXRoIGQ9Ik0xMCA3VjEzSDNWNEg2VjFIM0MyLjQ2OTU3IDEgMS45NjA4NiAxLjIxMDcxIDEuNTg1NzkgMS41ODU3OUMxLjIxMDcxIDEuOTYwODYgMSAyLjQ2OTU3IDEgM1YxNEMxIDE0LjUzMDQgMS4yMTA3MSAxNS4wMzkxIDEuNTg1NzkgMTUuNDE0MkMxLjk2MDg2IDE1Ljc4OTMgMi40Njk1NyAxNiAzIDE2SDEwQzEwLjUzMDQgMTYgMTEuMDM5MSAxNS43ODkzIDExLjQxNDIgMTUuNDE0MkMxMS43ODkzIDE1LjAzOTEgMTIgMTQuNTMwNCAxMiAxNFY3SDEwWiIgZmlsbD0iIzE2QjM3OCIvPjwvc3ZnPg==');
--icon-NewNotification: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGN4PSI4IiBjeT0iOCIgcj0iMyIvPjwvc3ZnPg==');
--icon-Notification: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEuNSwxMSBDMi4zMjg4NTc2MywxMSAzLDEwLjMyODg1NzYgMyw5LjUgTDMsNSBDMywyLjIzODg1NzYzIDUuMjM4ODU3NjMsMCA4LDAgQzEwLjc2MTE0MjQsMCAxMywyLjIzODg1NzYzIDEzLDUgTDEzLDkuNSBDMTMsMTAuMjIwMzMyNCAxNC4wNDg5ODI4LDExIDE1LDExIEwxNS41LDExIEMxNS43NzYxNDI0LDExIDE2LDExLjIyMzg1NzYgMTYsMTEuNSBDMTYsMTEuNzc2MTQyNCAxNS43NzYxNDI0LDEyIDE1LjUsMTIgTDAuNSwxMiBDMC4yMjM4NTc2MjUsMTIgMCwxMS43NzYxNDI0IDAsMTEuNSBDMCwxMS4yMjM4NTc2IDAuMjIzODU3NjI1LDExIDAuNSwxMSBMMS41MDAwMDAyNiwxMSBaIE0zLjUwMDQ0ODk0LDExIEwxMi42NzQ1Njg5LDExIEMxMi4yNjMzODg1LDEwLjU3NzkwMjggMTIsMTAuMDU1NTcxOCAxMiw5LjUgTDEyLDUgQzEyLDIuNzkxMTQyMzcgMTAuMjA4ODU3NiwxIDgsMSBDNS43OTExNDIzNywxIDQsMi43OTExNDIzNyA0LDUgTDQsOS41IEM0LDEwLjA2Mjg5NTUgMy44MTQxNTM5MSwxMC41ODIyMjQ1IDMuNTAwNDQ4OTQsMTEgWiBNOS41LDEzLjUgQzkuNSwxMy4yMjM4NTc2IDkuNzIzODU3NjMsMTMgMTAsMTMgQzEwLjI3NjE0MjQsMTMgMTAuNSwxMy4yMjM4NTc2IDEwLjUsMTMuNSBDMTAuNSwxNC44ODExNDI0IDkuMzgxMTQyMzcsMTYgOCwxNiBDNi42MTg4NTc2MywxNiA1LjUsMTQuODgxMTQyNCA1LjUsMTMuNSBDNS41LDEzLjIyMzg1NzYgNS43MjM4NTc2MywxMyA2LDEzIEM2LjI3NjE0MjM3LDEzIDYuNSwxMy4yMjM4NTc2IDYuNSwxMy41IEM2LjUsMTQuMzI4ODU3NiA3LjE3MTE0MjM3LDE1IDgsMTUgQzguODI4ODU3NjMsMTUgOS41LDE0LjMyODg1NzYgOS41LDEzLjUgWiIgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+');
--icon-Offline: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkuMTc1MzI0MDksNy4xMTc1NjkxMyBMMTEuNTU5NTE0Nyw0LjczMzM3ODUgQzguMjc0NDE0MjEsMy4zMTk2ODAxNCA0LjMxODgyNzQ1LDMuOTU0MDg5NTYgMS42MzU1LDYuNjM2NjA2NzcgQzEuNDQwMjA4MzcsNi44MzE4Mzk0MyAxLjEyMzYyNTg5LDYuODMxNzkxNjMgMC45MjgzOTMyMjcsNi42MzY1IEMwLjczMzE2MDU2OCw2LjQ0MTIwODM3IDAuNzMzMjA4MzcyLDYuMTI0NjI1ODkgMC45Mjg1LDUuOTI5MzkzMjMgQzQuMDA4NTkyMjksMi44NTAyMzA5OSA4LjU5NzM2ODQ3LDIuMTk5Nzc3NDUgMTIuMzE0ODYwNiwzLjk3ODAzMjYxIEwxNC4xNDY0NDY2LDIuMTQ2NDQ2NjEgQzE0LjM0MTcwODgsMS45NTExODQ0NiAxNC42NTgyOTEyLDEuOTUxMTg0NDYgMTQuODUzNTUzNCwyLjE0NjQ0NjYxIEMxNS4wNDg4MTU1LDIuMzQxNzA4NzYgMTUuMDQ4ODE1NSwyLjY1ODI5MTI0IDE0Ljg1MzU1MzQsMi44NTM1NTMzOSBMMTMuMjMwNDA4LDQuNDc2Njk4NzUgQzEzLjg4NDI3OTksNC44Nzg3NDgwNCAxNC41MDE5MTUyLDUuMzYyOTc5NTMgMTUuMDY4NSw1LjkyOTM5MzIzIEMxNS4yNjM3OTE2LDYuMTI0NjI1ODkgMTUuMjYzODM5NCw2LjQ0MTIwODM3IDE1LjA2ODYwNjgsNi42MzY1IEMxNC44NzMzNzQxLDYuODMxNzkxNjMgMTQuNTU2NzkxNiw2LjgzMTgzOTQzIDE0LjM2MTUsNi42MzY2MDY3NyBDMTMuNzkyMzczOSw2LjA2NzY1MjQ4IDEzLjE2NjAxNDksNS41OTA4MzI3NCAxMi41MDA5NTkyLDUuMjA2MTQ3NTYgTDEwLjI2MzI2MjIsNy40NDM4NDQ1NSBDMTAuOTgyMjA2Miw3LjczNjQ0NTI2IDExLjY1NTg5NTIsOC4xNzQyNjQ1MyAxMi4yMzk0MDkxLDguNzU3MzAyMzcgQzEyLjQzNDc1MDksOC45NTI0ODQ4MiAxMi40MzQ4ODAxLDkuMjY5MDY3MjggMTIuMjM5Njk3Niw5LjQ2NDQwOTA5IEMxMi4wNDQ1MTUyLDkuNjU5NzUwOSAxMS43Mjc5MzI3LDkuNjU5ODgwMDggMTEuNTMyNTkwOSw5LjQ2NDY5NzYzIEMxMC45MzgzNDY0LDguODcwOTM3ODcgMTAuMjMxODc1MSw4LjQ1NzkwODYgOS40ODE0OTY5Niw4LjIyNTYwOTgyIEwyLjg1MzU1MzM5LDE0Ljg1MzU1MzQgQzIuNjU4MjkxMjQsMTUuMDQ4ODE1NSAyLjM0MTcwODc2LDE1LjA0ODgxNTUgMi4xNDY0NDY2MSwxNC44NTM1NTM0IEMxLjk1MTE4NDQ2LDE0LjY1ODI5MTIgMS45NTExODQ0NiwxNC4zNDE3MDg4IDIuMTQ2NDQ2NjEsMTQuMTQ2NDQ2NiBMOC4yODMxNTk2Myw4LjAwOTczMzU5IEM2LjkxMTA1MTE1LDcuOTMxOTY4MiA1LjUxMzAwNTkzLDguNDE2OTU2MjIgNC40NjQ0MDkwOSw5LjQ2NDY5NzYzIEM0LjI2OTA2NzI4LDkuNjU5ODgwMDggMy45NTI0ODQ4Miw5LjY1OTc1MDkgMy43NTczMDIzNyw5LjQ2NDQwOTA5IEMzLjU2MjExOTkyLDkuMjY5MDY3MjggMy41NjIyNDkxLDguOTUyNDg0ODIgMy43NTc1OTA5MSw4Ljc1NzMwMjM3IEM1LjIyOTkyNzgsNy4yODYxNjY1OSA3LjI3NjM3OTkzLDYuNzM5NTg4ODQgOS4xNzUzMjQwOSw3LjExNzU2OTEzIFogTTguNjY2NjY2NTYsMTIuMjUzNjc3OSBDOC40NjA4NDIyNCwxMi4wNjk1ODI5IDguNDQzMjI3MTIsMTEuNzUzNDkwOSA4LjYyNzMyMjEsMTEuNTQ3NjY2NiBDOC44MTE0MTcwNywxMS4zNDE4NDIyIDkuMTI3NTA5MTEsMTEuMzI0MjI3MSA5LjMzMzMzMzQ0LDExLjUwODMyMjEgQzEwLjAxODIxODMsMTIuMTIwOTAyMSAxMC4xOTc1ODA3LDEzLjEyMTM0MTYgOS43NjgxNjM0NywxMy45MzM2OTc3IEM5LjMzODc0NjIyLDE0Ljc0NjA1MzggOC40MTEwNDYzMiwxNS4xNjEyOTIzIDcuNTE5MTMxMjIsMTQuOTQwMzY0NiBDNi42MjcyMTYxMywxNC43MTk0MzY4IDYuMDAwNTkyMDMsMTMuOTE5MTkxNyA2LjAwMDAwMDEsMTMuMDAwMzIyMSBDNS45OTk4MjIyMSwxMi43MjQxNzk4IDYuMjIzNTM1NTksMTIuNTAwMTc4IDYuNDk5Njc3OSwxMi41MDAwMDAxIEM2Ljc3NTgyMDIyLDEyLjQ5OTgyMjIgNi45OTk4MjIwMSwxMi43MjM1MzU2IDYuOTk5OTk5OSwxMi45OTk2Nzc5IEM3LjAwMDI5NTg2LDEzLjQ1OTExMjcgNy4zMTM2MDc5MSwxMy44NTkyMzUzIDcuNzU5NTY1NDYsMTMuOTY5Njk5MSBDOC4yMDU1MjMsMTQuMDgwMTYzIDguNjY5MzcyOTUsMTMuODcyNTQzOCA4Ljg4NDA4MTU4LDEzLjQ2NjM2NTcgQzkuMDk4NzkwMiwxMy4wNjAxODc3IDkuMDA5MTA5MDEsMTIuNTU5OTY3OSA4LjY2NjY2NjU2LDEyLjI1MzY3NzkgWiIgZmlsbD0iIzAwMCIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+');

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.5 8.5V14.5C11.5 14.7652 11.3946 15.0196 11.2071 15.2071C11.0196 15.3946 10.7652 15.5 10.5 15.5H2.5C2.23478 15.5 1.98043 15.3946 1.79289 15.2071C1.60536 15.0196 1.5 14.7652 1.5 14.5V2.5C1.5 2.23478 1.60536 1.98043 1.79289 1.79289C1.98043 1.60536 2.23478 1.5 2.5 1.5H4.5" stroke="#262633" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.5 6.5H9.5L6.5 8.5V1.5C6.5 1.23478 6.60536 0.98043 6.79289 0.792893C6.98043 0.605357 7.23478 0.5 7.5 0.5H14.5C14.7652 0.5 15.0196 0.605357 15.2071 0.792893C15.3946 0.98043 15.5 1.23478 15.5 1.5V5.5C15.5 5.76522 15.3946 6.01957 15.2071 6.20711C15.0196 6.39464 14.7652 6.5 14.5 6.5Z" stroke="#262633" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 812 B

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8 0H15C15.2652 0 15.5196 0.105357 15.7071 0.292893C15.8946 0.48043 16 0.734784 16 1V5C16 5.26522 15.8946 5.51957 15.7071 5.70711C15.5196 5.89464 15.2652 6 15 6H10L7 8V1C7 0.734784 7.10536 0.48043 7.29289 0.292893C7.48043 0.105357 7.73478 0 8 0V0Z" fill="#16B378"/>
<path d="M10 7V13H3V4H6V1H3C2.46957 1 1.96086 1.21071 1.58579 1.58579C1.21071 1.96086 1 2.46957 1 3V14C1 14.5304 1.21071 15.0391 1.58579 15.4142C1.96086 15.7893 2.46957 16 3 16H10C10.5304 16 11.0391 15.7893 11.4142 15.4142C11.7893 15.0391 12 14.5304 12 14V7H10Z" fill="#16B378"/>
</svg>

After

Width:  |  Height:  |  Size: 658 B