0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-03-31 22:51:25 -05:00

feat(console): page error state (#3193)

This commit is contained in:
Xiao Yijun 2023-02-24 16:15:36 +08:00 committed by GitHub
parent e84d2162ba
commit 72f4adc0f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 498 additions and 209 deletions

View file

@ -0,0 +1,58 @@
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="58" y="74" width="140" height="108" rx="12" fill="#928F9A"/>
<mask id="mask0_5321_35616" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="58" y="74" width="140" height="108">
<rect x="58" y="74" width="140" height="108" rx="12.1905" fill="#928F9A"/>
</mask>
<g mask="url(#mask0_5321_35616)">
</g>
<path d="M58 86C58 79.3726 63.3726 74 70 74H186C192.627 74 198 79.3726 198 86V90H58V86Z" fill="#78767F"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M101.686 124.686C100.124 126.248 100.124 128.781 101.686 130.343L107.343 136L101.687 141.657C100.125 143.219 100.125 145.751 101.687 147.313C103.249 148.876 105.782 148.876 107.344 147.313L113 141.657L118.656 147.313C120.219 148.875 122.751 148.875 124.313 147.313C125.875 145.751 125.875 143.219 124.313 141.657L118.657 136L124.315 130.343C125.877 128.781 125.877 126.248 124.315 124.686C122.753 123.124 120.22 123.124 118.658 124.686L113 130.344L107.343 124.686C105.781 123.124 103.248 123.124 101.686 124.686Z" fill="#CABEFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M149.686 124.686C148.124 126.248 148.124 128.781 149.686 130.343L155.343 136L149.687 141.657C148.125 143.219 148.125 145.751 149.687 147.313C151.249 148.876 153.782 148.876 155.344 147.313L161 141.657L166.656 147.313C168.219 148.875 170.751 148.875 172.313 147.313C173.875 145.751 173.875 143.219 172.313 141.657L166.657 136L172.315 130.343C173.877 128.781 173.877 126.248 172.315 124.686C170.753 123.124 168.22 123.124 166.658 124.686L161 130.344L155.343 124.686C153.781 123.124 151.248 123.124 149.686 124.686Z" fill="#CABEFF"/>
<circle cx="72" cy="82" r="2" fill="#5F5D67"/>
<circle cx="82" cy="82" r="2" fill="#ADAAB4"/>
<circle cx="92" cy="82" r="2" fill="#ADAAB4"/>
<rect x="74" y="102" width="64" height="4" rx="2" fill="#ADAAB4"/>
<rect x="74" y="109" width="14" height="4" rx="2" fill="#ADAAB4"/>
<rect x="172" y="109" width="10" height="4" rx="2" fill="#ADAAB4"/>
<rect x="92" y="109" width="74" height="4" rx="2" fill="#ADAAB4"/>
<rect x="146" y="102" width="10" height="4" rx="2" fill="#ADAAB4"/>
<rect x="159" y="102" width="23" height="4" rx="2" fill="#ADAAB4"/>
<mask id="mask1_5321_35616" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="25" y="93" width="92" height="99">
<path d="M116 98.5V94H25.5V191.5H63C76.2548 191.5 87 180.755 87 167.5V127.5C87 119.492 93.4919 113 101.5 113C109.508 113 116 106.508 116 98.5Z" fill="white" stroke="#F7F8F8" stroke-opacity="0.16" stroke-linecap="round" stroke-linejoin="round"/>
</mask>
<g mask="url(#mask1_5321_35616)">
<path d="M-4 90.0001L1.52588e-05 92.0002C2.51806 93.2592 5.48195 93.2591 7.99997 92.0001V92.0001C10.518 90.741 13.482 90.741 16 92.0001V92.0001C18.5181 93.2592 21.482 93.2592 24 92.0001V92.0001C26.5181 90.7411 29.482 90.7411 32 92.0001V92.0001C34.518 93.2592 37.482 93.2592 40 92.0002V92.0002C42.5181 90.7412 45.4951 90.7477 48.0131 92.0067V92.0067C50.5181 93.2592 53.4764 93.2811 55.9943 92.0548L56.3036 91.9042C58.7646 90.7057 61.6464 90.7364 64.0813 91.9872V91.9872C66.5446 93.2525 69.4634 93.2684 71.9404 92.03L72.0271 91.9866C74.5281 90.7361 77.4854 90.7428 79.9864 91.9933V91.9933C82.5045 93.2524 85.4849 93.2577 88.0029 91.9987V91.9987C90.5181 90.7411 93.5108 90.7511 96.0289 92.0029V92.0029C98.5398 93.251 101.522 93.2604 104.028 92.0035V92.0035C106.542 90.7428 109.504 90.7417 112.019 92.0009V92.0009C114.532 93.2593 117.491 93.2593 120.004 92.0009L124 90.0001" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 94.0001L1.52588e-05 96.0002C2.51806 97.2592 5.48195 97.2591 7.99997 96.0001V96.0001C10.518 94.741 13.482 94.741 16 96.0001V96.0001C18.5181 97.2592 21.482 97.2592 24 96.0001V96.0001C26.5181 94.7411 29.482 94.7411 32 96.0001V96.0001C34.518 97.2592 37.482 97.2592 40 96.0002V96.0002C42.5181 94.7412 45.4951 94.7477 48.0131 96.0067V96.0067C50.5181 97.2592 53.4764 97.2811 55.9943 96.0548L56.3036 95.9042C58.7646 94.7057 61.6464 94.7364 64.0813 95.9872V95.9872C66.5446 97.2525 69.4634 97.2684 71.9404 96.03L72.0271 95.9866C74.5281 94.7361 77.4854 94.7428 79.9864 95.9933V95.9933C82.5045 97.2524 85.4849 97.2577 88.0029 95.9987V95.9987C90.5181 94.7411 93.5108 94.7511 96.0289 96.0029V96.0029C98.5398 97.251 101.522 97.2604 104.028 96.0035V96.0035C106.542 94.7428 109.504 94.7417 112.019 96.0009V96.0009C114.532 97.2593 117.491 97.2593 120.004 96.0009L124 94.0001" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 98.0001L1.52588e-05 100C2.51806 101.259 5.48195 101.259 7.99997 100V100C10.518 98.741 13.482 98.741 16 100V100C18.5181 101.259 21.482 101.259 24 100V100C26.5181 98.7411 29.482 98.7411 32 100V100C34.518 101.259 37.482 101.259 40 100V100C42.5181 98.7412 45.4951 98.7477 48.0131 100.007V100.007C50.5181 101.259 53.4764 101.281 55.9943 100.055L56.3036 99.9042C58.7646 98.7057 61.6464 98.7364 64.0813 99.9872V99.9872C66.5446 101.253 69.4634 101.268 71.9404 100.03L72.0271 99.9866C74.5281 98.7361 77.4854 98.7428 79.9864 99.9933V99.9933C82.5045 101.252 85.4849 101.258 88.0029 99.9987V99.9987C90.5181 98.7411 93.5108 98.7511 96.0289 100.003V100.003C98.5398 101.251 101.522 101.26 104.028 100.004V100.004C106.542 98.7428 109.504 98.7417 112.019 100.001V100.001C114.532 101.259 117.491 101.259 120.004 100.001L124 98.0001" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 102L1.52588e-05 104C2.51806 105.259 5.48195 105.259 7.99997 104V104C10.518 102.741 13.482 102.741 16 104V104C18.5181 105.259 21.482 105.259 24 104V104C26.5181 102.741 29.482 102.741 32 104V104C34.518 105.259 37.482 105.259 40 104V104C42.5181 102.741 45.4951 102.748 48.0131 104.007V104.007C50.5181 105.259 53.4764 105.281 55.9943 104.055L56.3036 103.904C58.7646 102.706 61.6464 102.736 64.0813 103.987V103.987C66.5446 105.253 69.4634 105.268 71.9404 104.03L72.0271 103.987C74.5281 102.736 77.4854 102.743 79.9864 103.993V103.993C82.5045 105.252 85.4849 105.258 88.0029 103.999V103.999C90.5181 102.741 93.5108 102.751 96.0289 104.003V104.003C98.5398 105.251 101.522 105.26 104.028 104.004V104.004C106.542 102.743 109.504 102.742 112.019 104.001V104.001C114.532 105.259 117.491 105.259 120.004 104.001L124 102" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 106L1.52588e-05 108C2.51806 109.259 5.48195 109.259 7.99997 108V108C10.518 106.741 13.482 106.741 16 108V108C18.5181 109.259 21.482 109.259 24 108V108C26.5181 106.741 29.482 106.741 32 108V108C34.518 109.259 37.482 109.259 40 108V108C42.5181 106.741 45.4951 106.748 48.0131 108.007V108.007C50.5181 109.259 53.4764 109.281 55.9943 108.055L56.3036 107.904C58.7646 106.706 61.6464 106.736 64.0813 107.987V107.987C66.5446 109.253 69.4634 109.268 71.9404 108.03L72.0271 107.987C74.5281 106.736 77.4854 106.743 79.9864 107.993V107.993C82.5045 109.252 85.4849 109.258 88.0029 107.999V107.999C90.5181 106.741 93.5108 106.751 96.0289 108.003V108.003C98.5398 109.251 101.522 109.26 104.028 108.004V108.004C106.542 106.743 109.504 106.742 112.019 108.001V108.001C114.532 109.259 117.491 109.259 120.004 108.001L124 106" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 110L1.52588e-05 112C2.51806 113.259 5.48195 113.259 7.99997 112V112C10.518 110.741 13.482 110.741 16 112V112C18.5181 113.259 21.482 113.259 24 112V112C26.5181 110.741 29.482 110.741 32 112V112C34.518 113.259 37.482 113.259 40 112V112C42.5181 110.741 45.4951 110.748 48.0131 112.007V112.007C50.5181 113.259 53.4764 113.281 55.9943 112.055L56.3036 111.904C58.7646 110.706 61.6464 110.736 64.0813 111.987V111.987C66.5446 113.253 69.4634 113.268 71.9404 112.03L72.0271 111.987C74.5281 110.736 77.4854 110.743 79.9864 111.993V111.993C82.5045 113.252 85.4849 113.258 88.0029 111.999V111.999C90.5181 110.741 93.5108 110.751 96.0289 112.003V112.003C98.5398 113.251 101.522 113.26 104.028 112.004V112.004C106.542 110.743 109.504 110.742 112.019 112.001V112.001C114.532 113.259 117.491 113.259 120.004 112.001L124 110" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 114L1.52588e-05 116C2.51806 117.259 5.48195 117.259 7.99997 116V116C10.518 114.741 13.482 114.741 16 116V116C18.5181 117.259 21.482 117.259 24 116V116C26.5181 114.741 29.482 114.741 32 116V116C34.518 117.259 37.482 117.259 40 116V116C42.5181 114.741 45.4951 114.748 48.0131 116.007V116.007C50.5181 117.259 53.4764 117.281 55.9943 116.055L56.3036 115.904C58.7646 114.706 61.6464 114.736 64.0813 115.987V115.987C66.5446 117.253 69.4634 117.268 71.9404 116.03L72.0271 115.987C74.5281 114.736 77.4854 114.743 79.9864 115.993V115.993C82.5045 117.252 85.4849 117.258 88.0029 115.999V115.999C90.5181 114.741 93.5108 114.751 96.0289 116.003V116.003C98.5398 117.251 101.522 117.26 104.028 116.004V116.004C106.542 114.743 109.504 114.742 112.019 116.001V116.001C114.532 117.259 117.491 117.259 120.004 116.001L124 114" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 118L1.52588e-05 120C2.51806 121.259 5.48195 121.259 7.99997 120V120C10.518 118.741 13.482 118.741 16 120V120C18.5181 121.259 21.482 121.259 24 120V120C26.5181 118.741 29.482 118.741 32 120V120C34.518 121.259 37.482 121.259 40 120V120C42.5181 118.741 45.4951 118.748 48.0131 120.007V120.007C50.5181 121.259 53.4764 121.281 55.9943 120.055L56.3036 119.904C58.7646 118.706 61.6464 118.736 64.0813 119.987V119.987C66.5446 121.253 69.4634 121.268 71.9404 120.03L72.0271 119.987C74.5281 118.736 77.4854 118.743 79.9864 119.993V119.993C82.5045 121.252 85.4849 121.258 88.0029 119.999V119.999C90.5181 118.741 93.5108 118.751 96.0289 120.003V120.003C98.5398 121.251 101.522 121.26 104.028 120.004V120.004C106.542 118.743 109.504 118.742 112.019 120.001V120.001C114.532 121.259 117.491 121.259 120.004 120.001L124 118" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 122L1.52588e-05 124C2.51806 125.259 5.48195 125.259 7.99997 124V124C10.518 122.741 13.482 122.741 16 124V124C18.5181 125.259 21.482 125.259 24 124V124C26.5181 122.741 29.482 122.741 32 124V124C34.518 125.259 37.482 125.259 40 124V124C42.5181 122.741 45.4951 122.748 48.0131 124.007V124.007C50.5181 125.259 53.4764 125.281 55.9943 124.055L56.3036 123.904C58.7646 122.706 61.6464 122.736 64.0813 123.987V123.987C66.5446 125.253 69.4634 125.268 71.9404 124.03L72.0271 123.987C74.5281 122.736 77.4854 122.743 79.9864 123.993V123.993C82.5045 125.252 85.4849 125.258 88.0029 123.999V123.999C90.5181 122.741 93.5108 122.751 96.0289 124.003V124.003C98.5398 125.251 101.522 125.26 104.028 124.004V124.004C106.542 122.743 109.504 122.742 112.019 124.001V124.001C114.532 125.259 117.491 125.259 120.004 124.001L124 122" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 126L1.52588e-05 128C2.51806 129.259 5.48195 129.259 7.99997 128V128C10.518 126.741 13.482 126.741 16 128V128C18.5181 129.259 21.482 129.259 24 128V128C26.5181 126.741 29.482 126.741 32 128V128C34.518 129.259 37.482 129.259 40 128V128C42.5181 126.741 45.4951 126.748 48.0131 128.007V128.007C50.5181 129.259 53.4764 129.281 55.9943 128.055L56.3036 127.904C58.7646 126.706 61.6464 126.736 64.0813 127.987V127.987C66.5446 129.253 69.4634 129.268 71.9404 128.03L72.0271 127.987C74.5281 126.736 77.4854 126.743 79.9864 127.993V127.993C82.5045 129.252 85.4849 129.258 88.0029 127.999V127.999C90.5181 126.741 93.5108 126.751 96.0289 128.003V128.003C98.5398 129.251 101.522 129.26 104.028 128.004V128.004C106.542 126.743 109.504 126.742 112.019 128.001V128.001C114.532 129.259 117.491 129.259 120.004 128.001L124 126" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 130L1.52588e-05 132C2.51806 133.259 5.48195 133.259 7.99997 132V132C10.518 130.741 13.482 130.741 16 132V132C18.5181 133.259 21.482 133.259 24 132V132C26.5181 130.741 29.482 130.741 32 132V132C34.518 133.259 37.482 133.259 40 132V132C42.5181 130.741 45.4951 130.748 48.0131 132.007V132.007C50.5181 133.259 53.4764 133.281 55.9943 132.055L56.3036 131.904C58.7646 130.706 61.6464 130.736 64.0813 131.987V131.987C66.5446 133.253 69.4634 133.268 71.9404 132.03L72.0271 131.987C74.5281 130.736 77.4854 130.743 79.9864 131.993V131.993C82.5045 133.252 85.4849 133.258 88.0029 131.999V131.999C90.5181 130.741 93.5108 130.751 96.0289 132.003V132.003C98.5398 133.251 101.522 133.26 104.028 132.004V132.004C106.542 130.743 109.504 130.742 112.019 132.001V132.001C114.532 133.259 117.491 133.259 120.004 132.001L124 130" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 134L1.52588e-05 136C2.51806 137.259 5.48195 137.259 7.99997 136V136C10.518 134.741 13.482 134.741 16 136V136C18.5181 137.259 21.482 137.259 24 136V136C26.5181 134.741 29.482 134.741 32 136V136C34.518 137.259 37.482 137.259 40 136V136C42.5181 134.741 45.4951 134.748 48.0131 136.007V136.007C50.5181 137.259 53.4764 137.281 55.9943 136.055L56.3036 135.904C58.7646 134.706 61.6464 134.736 64.0813 135.987V135.987C66.5446 137.253 69.4634 137.268 71.9404 136.03L72.0271 135.987C74.5281 134.736 77.4854 134.743 79.9864 135.993V135.993C82.5045 137.252 85.4849 137.258 88.0029 135.999V135.999C90.5181 134.741 93.5108 134.751 96.0289 136.003V136.003C98.5398 137.251 101.522 137.26 104.028 136.004V136.004C106.542 134.743 109.504 134.742 112.019 136.001V136.001C114.532 137.259 117.491 137.259 120.004 136.001L124 134" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 138L1.52588e-05 140C2.51806 141.259 5.48195 141.259 7.99997 140V140C10.518 138.741 13.482 138.741 16 140V140C18.5181 141.259 21.482 141.259 24 140V140C26.5181 138.741 29.482 138.741 32 140V140C34.518 141.259 37.482 141.259 40 140V140C42.5181 138.741 45.4951 138.748 48.0131 140.007V140.007C50.5181 141.259 53.4764 141.281 55.9943 140.055L56.3036 139.904C58.7646 138.706 61.6464 138.736 64.0813 139.987V139.987C66.5446 141.253 69.4634 141.268 71.9404 140.03L72.0271 139.987C74.5281 138.736 77.4854 138.743 79.9864 139.993V139.993C82.5045 141.252 85.4849 141.258 88.0029 139.999V139.999C90.5181 138.741 93.5108 138.751 96.0289 140.003V140.003C98.5398 141.251 101.522 141.26 104.028 140.004V140.004C106.542 138.743 109.504 138.742 112.019 140.001V140.001C114.532 141.259 117.491 141.259 120.004 140.001L124 138" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 142L1.52588e-05 144C2.51806 145.259 5.48195 145.259 7.99997 144V144C10.518 142.741 13.482 142.741 16 144V144C18.5181 145.259 21.482 145.259 24 144V144C26.5181 142.741 29.482 142.741 32 144V144C34.518 145.259 37.482 145.259 40 144V144C42.5181 142.741 45.4951 142.748 48.0131 144.007V144.007C50.5181 145.259 53.4764 145.281 55.9943 144.055L56.3036 143.904C58.7646 142.706 61.6464 142.736 64.0813 143.987V143.987C66.5446 145.253 69.4634 145.268 71.9404 144.03L72.0271 143.987C74.5281 142.736 77.4854 142.743 79.9864 143.993V143.993C82.5045 145.252 85.4849 145.258 88.0029 143.999V143.999C90.5181 142.741 93.5108 142.751 96.0289 144.003V144.003C98.5398 145.251 101.522 145.26 104.028 144.004V144.004C106.542 142.743 109.504 142.742 112.019 144.001V144.001C114.532 145.259 117.491 145.259 120.004 144.001L124 142" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 146L1.52588e-05 148C2.51806 149.259 5.48195 149.259 7.99997 148V148C10.518 146.741 13.482 146.741 16 148V148C18.5181 149.259 21.482 149.259 24 148V148C26.5181 146.741 29.482 146.741 32 148V148C34.518 149.259 37.482 149.259 40 148V148C42.5181 146.741 45.4951 146.748 48.0131 148.007V148.007C50.5181 149.259 53.4764 149.281 55.9943 148.055L56.3036 147.904C58.7646 146.706 61.6464 146.736 64.0813 147.987V147.987C66.5446 149.253 69.4634 149.268 71.9404 148.03L72.0271 147.987C74.5281 146.736 77.4854 146.743 79.9864 147.993V147.993C82.5045 149.252 85.4849 149.258 88.0029 147.999V147.999C90.5181 146.741 93.5108 146.751 96.0289 148.003V148.003C98.5398 149.251 101.522 149.26 104.028 148.004V148.004C106.542 146.743 109.504 146.742 112.019 148.001V148.001C114.532 149.259 117.491 149.259 120.004 148.001L124 146" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 150L1.52588e-05 152C2.51806 153.259 5.48195 153.259 7.99997 152V152C10.518 150.741 13.482 150.741 16 152V152C18.5181 153.259 21.482 153.259 24 152V152C26.5181 150.741 29.482 150.741 32 152V152C34.518 153.259 37.482 153.259 40 152V152C42.5181 150.741 45.4951 150.748 48.0131 152.007V152.007C50.5181 153.259 53.4764 153.281 55.9943 152.055L56.3036 151.904C58.7646 150.706 61.6464 150.736 64.0813 151.987V151.987C66.5446 153.253 69.4634 153.268 71.9404 152.03L72.0271 151.987C74.5281 150.736 77.4854 150.743 79.9864 151.993V151.993C82.5045 153.252 85.4849 153.258 88.0029 151.999V151.999C90.5181 150.741 93.5108 150.751 96.0289 152.003V152.003C98.5398 153.251 101.522 153.26 104.028 152.004V152.004C106.542 150.743 109.504 150.742 112.019 152.001V152.001C114.532 153.259 117.491 153.259 120.004 152.001L124 150" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 154L1.52588e-05 156C2.51806 157.259 5.48195 157.259 7.99997 156V156C10.518 154.741 13.482 154.741 16 156V156C18.5181 157.259 21.482 157.259 24 156V156C26.5181 154.741 29.482 154.741 32 156V156C34.518 157.259 37.482 157.259 40 156V156C42.5181 154.741 45.4951 154.748 48.0131 156.007V156.007C50.5181 157.259 53.4764 157.281 55.9943 156.055L56.3036 155.904C58.7646 154.706 61.6464 154.736 64.0813 155.987V155.987C66.5446 157.253 69.4634 157.268 71.9404 156.03L72.0271 155.987C74.5281 154.736 77.4854 154.743 79.9864 155.993V155.993C82.5045 157.252 85.4849 157.258 88.0029 155.999V155.999C90.5181 154.741 93.5108 154.751 96.0289 156.003V156.003C98.5398 157.251 101.522 157.26 104.028 156.004V156.004C106.542 154.743 109.504 154.742 112.019 156.001V156.001C114.532 157.259 117.491 157.259 120.004 156.001L124 154" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 158L1.52588e-05 160C2.51806 161.259 5.48195 161.259 7.99997 160V160C10.518 158.741 13.482 158.741 16 160V160C18.5181 161.259 21.482 161.259 24 160V160C26.5181 158.741 29.482 158.741 32 160V160C34.518 161.259 37.482 161.259 40 160V160C42.5181 158.741 45.4951 158.748 48.0131 160.007V160.007C50.5181 161.259 53.4764 161.281 55.9943 160.055L56.3036 159.904C58.7646 158.706 61.6464 158.736 64.0813 159.987V159.987C66.5446 161.253 69.4634 161.268 71.9404 160.03L72.0271 159.987C74.5281 158.736 77.4854 158.743 79.9864 159.993V159.993C82.5045 161.252 85.4849 161.258 88.0029 159.999V159.999C90.5181 158.741 93.5108 158.751 96.0289 160.003V160.003C98.5398 161.251 101.522 161.26 104.028 160.004V160.004C106.542 158.743 109.504 158.742 112.019 160.001V160.001C114.532 161.259 117.491 161.259 120.004 160.001L124 158" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 162L1.52588e-05 164C2.51806 165.259 5.48195 165.259 7.99997 164V164C10.518 162.741 13.482 162.741 16 164V164C18.5181 165.259 21.482 165.259 24 164V164C26.5181 162.741 29.482 162.741 32 164V164C34.518 165.259 37.482 165.259 40 164V164C42.5181 162.741 45.4951 162.748 48.0131 164.007V164.007C50.5181 165.259 53.4764 165.281 55.9943 164.055L56.3036 163.904C58.7646 162.706 61.6464 162.736 64.0813 163.987V163.987C66.5446 165.253 69.4634 165.268 71.9404 164.03L72.0271 163.987C74.5281 162.736 77.4854 162.743 79.9864 163.993V163.993C82.5045 165.252 85.4849 165.258 88.0029 163.999V163.999C90.5181 162.741 93.5108 162.751 96.0289 164.003V164.003C98.5398 165.251 101.522 165.26 104.028 164.004V164.004C106.542 162.743 109.504 162.742 112.019 164.001V164.001C114.532 165.259 117.491 165.259 120.004 164.001L124 162" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 166L1.52588e-05 168C2.51806 169.259 5.48195 169.259 7.99997 168V168C10.518 166.741 13.482 166.741 16 168V168C18.5181 169.259 21.482 169.259 24 168V168C26.5181 166.741 29.482 166.741 32 168V168C34.518 169.259 37.482 169.259 40 168V168C42.5181 166.741 45.4951 166.748 48.0131 168.007V168.007C50.5181 169.259 53.4764 169.281 55.9943 168.055L56.3036 167.904C58.7646 166.706 61.6464 166.736 64.0813 167.987V167.987C66.5446 169.253 69.4634 169.268 71.9404 168.03L72.0271 167.987C74.5281 166.736 77.4854 166.743 79.9864 167.993V167.993C82.5045 169.252 85.4849 169.258 88.0029 167.999V167.999C90.5181 166.741 93.5108 166.751 96.0289 168.003V168.003C98.5398 169.251 101.522 169.26 104.028 168.004V168.004C106.542 166.743 109.504 166.742 112.019 168.001V168.001C114.532 169.259 117.491 169.259 120.004 168.001L124 166" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 170L1.52588e-05 172C2.51806 173.259 5.48195 173.259 7.99997 172V172C10.518 170.741 13.482 170.741 16 172V172C18.5181 173.259 21.482 173.259 24 172V172C26.5181 170.741 29.482 170.741 32 172V172C34.518 173.259 37.482 173.259 40 172V172C42.5181 170.741 45.4951 170.748 48.0131 172.007V172.007C50.5181 173.259 53.4764 173.281 55.9943 172.055L56.3036 171.904C58.7646 170.706 61.6464 170.736 64.0813 171.987V171.987C66.5446 173.253 69.4634 173.268 71.9404 172.03L72.0271 171.987C74.5281 170.736 77.4854 170.743 79.9864 171.993V171.993C82.5045 173.252 85.4849 173.258 88.0029 171.999V171.999C90.5181 170.741 93.5108 170.751 96.0289 172.003V172.003C98.5398 173.251 101.522 173.26 104.028 172.004V172.004C106.542 170.743 109.504 170.742 112.019 172.001V172.001C114.532 173.259 117.491 173.259 120.004 172.001L124 170" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 174L1.52588e-05 176C2.51806 177.259 5.48195 177.259 7.99997 176V176C10.518 174.741 13.482 174.741 16 176V176C18.5181 177.259 21.482 177.259 24 176V176C26.5181 174.741 29.482 174.741 32 176V176C34.518 177.259 37.482 177.259 40 176V176C42.5181 174.741 45.4951 174.748 48.0131 176.007V176.007C50.5181 177.259 53.4764 177.281 55.9943 176.055L56.3036 175.904C58.7646 174.706 61.6464 174.736 64.0813 175.987V175.987C66.5446 177.253 69.4634 177.268 71.9404 176.03L72.0271 175.987C74.5281 174.736 77.4854 174.743 79.9864 175.993V175.993C82.5045 177.252 85.4849 177.258 88.0029 175.999V175.999C90.5181 174.741 93.5108 174.751 96.0289 176.003V176.003C98.5398 177.251 101.522 177.26 104.028 176.004V176.004C106.542 174.743 109.504 174.742 112.019 176.001V176.001C114.532 177.259 117.491 177.259 120.004 176.001L124 174" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 178L1.52588e-05 180C2.51806 181.259 5.48195 181.259 7.99997 180V180C10.518 178.741 13.482 178.741 16 180V180C18.5181 181.259 21.482 181.259 24 180V180C26.5181 178.741 29.482 178.741 32 180V180C34.518 181.259 37.482 181.259 40 180V180C42.5181 178.741 45.4951 178.748 48.0131 180.007V180.007C50.5181 181.259 53.4764 181.281 55.9943 180.055L56.3036 179.904C58.7646 178.706 61.6464 178.736 64.0813 179.987V179.987C66.5446 181.253 69.4634 181.268 71.9404 180.03L72.0271 179.987C74.5281 178.736 77.4854 178.743 79.9864 179.993V179.993C82.5045 181.252 85.4849 181.258 88.0029 179.999V179.999C90.5181 178.741 93.5108 178.751 96.0289 180.003V180.003C98.5398 181.251 101.522 181.26 104.028 180.004V180.004C106.542 178.743 109.504 178.742 112.019 180.001V180.001C114.532 181.259 117.491 181.259 120.004 180.001L124 178" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 182L1.52588e-05 184C2.51806 185.259 5.48195 185.259 7.99997 184V184C10.518 182.741 13.482 182.741 16 184V184C18.5181 185.259 21.482 185.259 24 184V184C26.5181 182.741 29.482 182.741 32 184V184C34.518 185.259 37.482 185.259 40 184V184C42.5181 182.741 45.4951 182.748 48.0131 184.007V184.007C50.5181 185.259 53.4764 185.281 55.9943 184.055L56.3036 183.904C58.7646 182.706 61.6464 182.736 64.0813 183.987V183.987C66.5446 185.253 69.4634 185.268 71.9404 184.03L72.0271 183.987C74.5281 182.736 77.4854 182.743 79.9864 183.993V183.993C82.5045 185.252 85.4849 185.258 88.0029 183.999V183.999C90.5181 182.741 93.5108 182.751 96.0289 184.003V184.003C98.5398 185.251 101.522 185.26 104.028 184.004V184.004C106.542 182.743 109.504 182.742 112.019 184.001V184.001C114.532 185.259 117.491 185.259 120.004 184.001L124 182" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 186L1.52588e-05 188C2.51806 189.259 5.48195 189.259 7.99997 188V188C10.518 186.741 13.482 186.741 16 188V188C18.5181 189.259 21.482 189.259 24 188V188C26.5181 186.741 29.482 186.741 32 188V188C34.518 189.259 37.482 189.259 40 188V188C42.5181 186.741 45.4951 186.748 48.0131 188.007V188.007C50.5181 189.259 53.4764 189.281 55.9943 188.055L56.3036 187.904C58.7646 186.706 61.6464 186.736 64.0813 187.987V187.987C66.5446 189.253 69.4634 189.268 71.9404 188.03L72.0271 187.987C74.5281 186.736 77.4854 186.743 79.9864 187.993V187.993C82.5045 189.252 85.4849 189.258 88.0029 187.999V187.999C90.5181 186.741 93.5108 186.751 96.0289 188.003V188.003C98.5398 189.251 101.522 189.26 104.028 188.004V188.004C106.542 186.743 109.504 186.742 112.019 188.001V188.001C114.532 189.259 117.491 189.259 120.004 188.001L124 186" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
<path d="M-4 190L1.52588e-05 192C2.51806 193.259 5.48195 193.259 7.99997 192V192C10.518 190.741 13.482 190.741 16 192V192C18.5181 193.259 21.482 193.259 24 192V192C26.5181 190.741 29.482 190.741 32 192V192C34.518 193.259 37.482 193.259 40 192V192C42.5181 190.741 45.4951 190.748 48.0131 192.007V192.007C50.5181 193.259 53.4764 193.281 55.9943 192.055L56.3036 191.904C58.7646 190.706 61.6464 190.736 64.0813 191.987V191.987C66.5446 193.253 69.4634 193.268 71.9404 192.03L72.0271 191.987C74.5281 190.736 77.4854 190.743 79.9864 191.993V191.993C82.5045 193.252 85.4849 193.258 88.0029 191.999V191.999C90.5181 190.741 93.5108 190.751 96.0289 192.003V192.003C98.5398 193.251 101.522 193.26 104.028 192.004V192.004C106.542 190.743 109.504 190.742 112.019 192.001V192.001C114.532 193.259 117.491 193.259 120.004 192.001L124 190" stroke="#F7F8F8" stroke-opacity="0.16" stroke-width="0.8"/>
</g>
<rect x="167.453" y="52" width="24" height="24" rx="4" transform="rotate(50.249 167.453 52)" fill="#F7F8F8" fill-opacity="0.16"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M205.914 28.2086C205.914 28.0934 206.008 28 206.123 28H209.878C209.993 28 210.087 28.0934 210.087 28.2086V34.8173L215.81 31.513C215.91 31.4554 216.037 31.4896 216.095 31.5894L217.972 34.8413C218.03 34.9411 217.996 35.0687 217.896 35.1263L212.172 38.4308L217.896 41.7351C217.995 41.7927 218.03 41.9203 217.972 42.0201L216.094 45.272C216.037 45.3718 215.909 45.406 215.81 45.3484L210.087 42.0443V48.6528C210.087 48.768 209.993 48.8614 209.878 48.8614H206.123C206.008 48.8614 205.914 48.768 205.914 48.6528V42.0439L200.191 45.3484C200.091 45.406 199.963 45.3718 199.906 45.272L198.028 42.0201C197.971 41.9203 198.005 41.7927 198.105 41.7351L203.828 38.4308L198.104 35.1263C198.005 35.0687 197.97 34.9411 198.028 34.8413L199.906 31.5894C199.963 31.4896 200.091 31.4554 200.19 31.513L205.914 34.8177V28.2086Z" fill="#CABEFF" fill-opacity="0.16"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32 53C36.4183 53 40 49.4183 40 45C40 40.5817 36.4183 37 32 37C27.5817 37 24 40.5817 24 45C24 49.4183 27.5817 53 32 53ZM32 49C34.2091 49 36 47.2091 36 45C36 42.7909 34.2091 41 32 41C29.7909 41 28 42.7909 28 45C28 47.2091 29.7909 49 32 49Z" fill="#F7F8F8" fill-opacity="0.16"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M194 190C200.627 190 206 184.627 206 178C206 171.373 200.627 166 194 166C187.373 166 182 171.373 182 178C182 184.627 187.373 190 194 190ZM194 184C197.314 184 200 181.314 200 178C200 174.686 197.314 172 194 172C190.686 172 188 174.686 188 178C188 181.314 190.686 184 194 184Z" fill="#ADAAB4"/>
<path d="M76.3049 53.602C75.2391 50.7131 77.7004 47.7538 80.7351 48.2753L85.2872 49.0576C88.3219 49.5791 89.6541 53.1902 87.6851 55.5576L84.7316 59.1087C82.7626 61.4761 78.9692 60.8242 77.9034 57.9353L76.3049 53.602Z" fill="#F7F8F8" fill-opacity="0.12"/>
<rect x="75" y="220" width="80" height="4" rx="2" fill="#CABEFF" fill-opacity="0.12"/>
<rect x="167" y="220" width="19" height="4" rx="2" fill="#CABEFF" fill-opacity="0.12"/>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -0,0 +1,61 @@
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="57" y="74" width="140" height="108" rx="12" fill="#C9C5D0"/>
<mask id="mask0_5318_34653" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="57" y="74" width="140" height="108">
<rect x="57" y="74" width="140" height="108" rx="12" fill="#D5CFF1"/>
</mask>
<g mask="url(#mask0_5318_34653)">
</g>
<path d="M57 86C57 79.3726 62.3726 74 69 74H185C191.627 74 197 79.3726 197 86V90H57V86Z" fill="#78767F"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M100.686 124.687C99.1237 126.249 99.1237 128.781 100.686 130.343L106.343 136.001L100.687 141.657C99.125 143.219 99.125 145.752 100.687 147.314C102.249 148.876 104.782 148.876 106.344 147.314L112 141.658L117.656 147.314C119.218 148.876 121.751 148.876 123.313 147.314C124.875 145.752 124.875 143.219 123.313 141.657L117.657 136.001L123.315 130.343C124.877 128.781 124.877 126.249 123.315 124.686C121.752 123.124 119.22 123.124 117.658 124.686L112 130.344L106.343 124.687C104.781 123.124 102.248 123.124 100.686 124.687Z" fill="#947DFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M148.686 124.687C147.124 126.249 147.124 128.781 148.686 130.343L154.343 136.001L148.687 141.657C147.125 143.219 147.125 145.752 148.687 147.314C150.249 148.876 152.782 148.876 154.344 147.314L160 141.658L165.656 147.314C167.218 148.876 169.751 148.876 171.313 147.314C172.875 145.752 172.875 143.219 171.313 141.657L165.657 136.001L171.315 130.343C172.877 128.781 172.877 126.249 171.315 124.686C169.752 123.124 167.22 123.124 165.658 124.686L160 130.344L154.343 124.687C152.781 123.124 150.248 123.124 148.686 124.687Z" fill="#947DFF"/>
<circle cx="71" cy="82" r="2" fill="#78767F"/>
<circle cx="81" cy="82" r="2" fill="#C9C5D0"/>
<circle cx="91" cy="82" r="2" fill="#C9C5D0"/>
<rect x="73" y="102" width="64" height="4" rx="2" fill="#ADAAB4"/>
<rect x="73" y="109" width="14" height="4" rx="2" fill="#ADAAB4"/>
<rect x="171" y="109" width="10" height="4" rx="2" fill="#ADAAB4"/>
<rect x="91" y="109" width="74" height="4" rx="2" fill="#ADAAB4"/>
<rect x="145" y="102" width="10" height="4" rx="2" fill="#ADAAB4"/>
<rect x="158" y="102" width="23" height="4" rx="2" fill="#ADAAB4"/>
<mask id="mask1_5318_34653" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="24" y="94" width="91" height="98">
<path d="M115 98.5V94H24.5V191.5H62C75.2548 191.5 86 180.755 86 167.5V127.5C86 119.492 92.4919 113 100.5 113C108.508 113 115 106.508 115 98.5Z" fill="white"/>
</mask>
<g mask="url(#mask1_5318_34653)">
<path d="M-5 94.0001L-0.999985 96.0002C1.51806 97.2592 4.48195 97.2591 6.99997 96.0001V96.0001C9.51803 94.741 12.482 94.741 15 96.0001V96.0001C17.5181 97.2592 20.482 97.2592 23 96.0001V96.0001C25.5181 94.7411 28.482 94.7411 31 96.0001V96.0001C33.518 97.2592 36.482 97.2592 39 96.0002V96.0002C41.5181 94.7412 44.4951 94.7477 47.0131 96.0067V96.0067C49.5181 97.2592 52.4764 97.2811 54.9943 96.0548L55.3036 95.9042C57.7646 94.7057 60.6464 94.7364 63.0813 95.9872V95.9872C65.5446 97.2525 68.4634 97.2684 70.9404 96.03L71.0271 95.9866C73.5281 94.7361 76.4854 94.7428 78.9864 95.9933V95.9933C81.5045 97.2524 84.4849 97.2577 87.0029 95.9987V95.9987C89.5181 94.7411 92.5108 94.7511 95.0289 96.0029V96.0029C97.5398 97.251 100.522 97.2604 103.028 96.0035V96.0035C105.542 94.7428 108.504 94.7417 111.019 96.0009V96.0009C113.532 97.2593 116.491 97.2593 119.004 96.0009L123 94.0001" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 98.0001L-0.999985 100C1.51806 101.259 4.48195 101.259 6.99997 100V100C9.51803 98.741 12.482 98.741 15 100V100C17.5181 101.259 20.482 101.259 23 100V100C25.5181 98.7411 28.482 98.7411 31 100V100C33.518 101.259 36.482 101.259 39 100V100C41.5181 98.7412 44.4951 98.7477 47.0131 100.007V100.007C49.5181 101.259 52.4764 101.281 54.9943 100.055L55.3036 99.9042C57.7646 98.7057 60.6464 98.7364 63.0813 99.9872V99.9872C65.5446 101.253 68.4634 101.268 70.9404 100.03L71.0271 99.9866C73.5281 98.7361 76.4854 98.7428 78.9864 99.9933V99.9933C81.5045 101.252 84.4849 101.258 87.0029 99.9987V99.9987C89.5181 98.7411 92.5108 98.7511 95.0289 100.003V100.003C97.5398 101.251 100.522 101.26 103.028 100.004V100.004C105.542 98.7428 108.504 98.7417 111.019 100.001V100.001C113.532 101.259 116.491 101.259 119.004 100.001L123 98.0001" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 102L-0.999985 104C1.51806 105.259 4.48195 105.259 6.99997 104V104C9.51803 102.741 12.482 102.741 15 104V104C17.5181 105.259 20.482 105.259 23 104V104C25.5181 102.741 28.482 102.741 31 104V104C33.518 105.259 36.482 105.259 39 104V104C41.5181 102.741 44.4951 102.748 47.0131 104.007V104.007C49.5181 105.259 52.4764 105.281 54.9943 104.055L55.3036 103.904C57.7646 102.706 60.6464 102.736 63.0813 103.987V103.987C65.5446 105.253 68.4634 105.268 70.9404 104.03L71.0271 103.987C73.5281 102.736 76.4854 102.743 78.9864 103.993V103.993C81.5045 105.252 84.4849 105.258 87.0029 103.999V103.999C89.5181 102.741 92.5108 102.751 95.0289 104.003V104.003C97.5398 105.251 100.522 105.26 103.028 104.004V104.004C105.542 102.743 108.504 102.742 111.019 104.001V104.001C113.532 105.259 116.491 105.259 119.004 104.001L123 102" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 106L-0.999985 108C1.51806 109.259 4.48195 109.259 6.99997 108V108C9.51803 106.741 12.482 106.741 15 108V108C17.5181 109.259 20.482 109.259 23 108V108C25.5181 106.741 28.482 106.741 31 108V108C33.518 109.259 36.482 109.259 39 108V108C41.5181 106.741 44.4951 106.748 47.0131 108.007V108.007C49.5181 109.259 52.4764 109.281 54.9943 108.055L55.3036 107.904C57.7646 106.706 60.6464 106.736 63.0813 107.987V107.987C65.5446 109.253 68.4634 109.268 70.9404 108.03L71.0271 107.987C73.5281 106.736 76.4854 106.743 78.9864 107.993V107.993C81.5045 109.252 84.4849 109.258 87.0029 107.999V107.999C89.5181 106.741 92.5108 106.751 95.0289 108.003V108.003C97.5398 109.251 100.522 109.26 103.028 108.004V108.004C105.542 106.743 108.504 106.742 111.019 108.001V108.001C113.532 109.259 116.491 109.259 119.004 108.001L123 106" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 110L-0.999985 112C1.51806 113.259 4.48195 113.259 6.99997 112V112C9.51803 110.741 12.482 110.741 15 112V112C17.5181 113.259 20.482 113.259 23 112V112C25.5181 110.741 28.482 110.741 31 112V112C33.518 113.259 36.482 113.259 39 112V112C41.5181 110.741 44.4951 110.748 47.0131 112.007V112.007C49.5181 113.259 52.4764 113.281 54.9943 112.055L55.3036 111.904C57.7646 110.706 60.6464 110.736 63.0813 111.987V111.987C65.5446 113.253 68.4634 113.268 70.9404 112.03L71.0271 111.987C73.5281 110.736 76.4854 110.743 78.9864 111.993V111.993C81.5045 113.252 84.4849 113.258 87.0029 111.999V111.999C89.5181 110.741 92.5108 110.751 95.0289 112.003V112.003C97.5398 113.251 100.522 113.26 103.028 112.004V112.004C105.542 110.743 108.504 110.742 111.019 112.001V112.001C113.532 113.259 116.491 113.259 119.004 112.001L123 110" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 114L-0.999985 116C1.51806 117.259 4.48195 117.259 6.99997 116V116C9.51803 114.741 12.482 114.741 15 116V116C17.5181 117.259 20.482 117.259 23 116V116C25.5181 114.741 28.482 114.741 31 116V116C33.518 117.259 36.482 117.259 39 116V116C41.5181 114.741 44.4951 114.748 47.0131 116.007V116.007C49.5181 117.259 52.4764 117.281 54.9943 116.055L55.3036 115.904C57.7646 114.706 60.6464 114.736 63.0813 115.987V115.987C65.5446 117.253 68.4634 117.268 70.9404 116.03L71.0271 115.987C73.5281 114.736 76.4854 114.743 78.9864 115.993V115.993C81.5045 117.252 84.4849 117.258 87.0029 115.999V115.999C89.5181 114.741 92.5108 114.751 95.0289 116.003V116.003C97.5398 117.251 100.522 117.26 103.028 116.004V116.004C105.542 114.743 108.504 114.742 111.019 116.001V116.001C113.532 117.259 116.491 117.259 119.004 116.001L123 114" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 118L-0.999985 120C1.51806 121.259 4.48195 121.259 6.99997 120V120C9.51803 118.741 12.482 118.741 15 120V120C17.5181 121.259 20.482 121.259 23 120V120C25.5181 118.741 28.482 118.741 31 120V120C33.518 121.259 36.482 121.259 39 120V120C41.5181 118.741 44.4951 118.748 47.0131 120.007V120.007C49.5181 121.259 52.4764 121.281 54.9943 120.055L55.3036 119.904C57.7646 118.706 60.6464 118.736 63.0813 119.987V119.987C65.5446 121.253 68.4634 121.268 70.9404 120.03L71.0271 119.987C73.5281 118.736 76.4854 118.743 78.9864 119.993V119.993C81.5045 121.252 84.4849 121.258 87.0029 119.999V119.999C89.5181 118.741 92.5108 118.751 95.0289 120.003V120.003C97.5398 121.251 100.522 121.26 103.028 120.004V120.004C105.542 118.743 108.504 118.742 111.019 120.001V120.001C113.532 121.259 116.491 121.259 119.004 120.001L123 118" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 122L-0.999985 124C1.51806 125.259 4.48195 125.259 6.99997 124V124C9.51803 122.741 12.482 122.741 15 124V124C17.5181 125.259 20.482 125.259 23 124V124C25.5181 122.741 28.482 122.741 31 124V124C33.518 125.259 36.482 125.259 39 124V124C41.5181 122.741 44.4951 122.748 47.0131 124.007V124.007C49.5181 125.259 52.4764 125.281 54.9943 124.055L55.3036 123.904C57.7646 122.706 60.6464 122.736 63.0813 123.987V123.987C65.5446 125.253 68.4634 125.268 70.9404 124.03L71.0271 123.987C73.5281 122.736 76.4854 122.743 78.9864 123.993V123.993C81.5045 125.252 84.4849 125.258 87.0029 123.999V123.999C89.5181 122.741 92.5108 122.751 95.0289 124.003V124.003C97.5398 125.251 100.522 125.26 103.028 124.004V124.004C105.542 122.743 108.504 122.742 111.019 124.001V124.001C113.532 125.259 116.491 125.259 119.004 124.001L123 122" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 126L-0.999985 128C1.51806 129.259 4.48195 129.259 6.99997 128V128C9.51803 126.741 12.482 126.741 15 128V128C17.5181 129.259 20.482 129.259 23 128V128C25.5181 126.741 28.482 126.741 31 128V128C33.518 129.259 36.482 129.259 39 128V128C41.5181 126.741 44.4951 126.748 47.0131 128.007V128.007C49.5181 129.259 52.4764 129.281 54.9943 128.055L55.3036 127.904C57.7646 126.706 60.6464 126.736 63.0813 127.987V127.987C65.5446 129.253 68.4634 129.268 70.9404 128.03L71.0271 127.987C73.5281 126.736 76.4854 126.743 78.9864 127.993V127.993C81.5045 129.252 84.4849 129.258 87.0029 127.999V127.999C89.5181 126.741 92.5108 126.751 95.0289 128.003V128.003C97.5398 129.251 100.522 129.26 103.028 128.004V128.004C105.542 126.743 108.504 126.742 111.019 128.001V128.001C113.532 129.259 116.491 129.259 119.004 128.001L123 126" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 130L-0.999985 132C1.51806 133.259 4.48195 133.259 6.99997 132V132C9.51803 130.741 12.482 130.741 15 132V132C17.5181 133.259 20.482 133.259 23 132V132C25.5181 130.741 28.482 130.741 31 132V132C33.518 133.259 36.482 133.259 39 132V132C41.5181 130.741 44.4951 130.748 47.0131 132.007V132.007C49.5181 133.259 52.4764 133.281 54.9943 132.055L55.3036 131.904C57.7646 130.706 60.6464 130.736 63.0813 131.987V131.987C65.5446 133.253 68.4634 133.268 70.9404 132.03L71.0271 131.987C73.5281 130.736 76.4854 130.743 78.9864 131.993V131.993C81.5045 133.252 84.4849 133.258 87.0029 131.999V131.999C89.5181 130.741 92.5108 130.751 95.0289 132.003V132.003C97.5398 133.251 100.522 133.26 103.028 132.004V132.004C105.542 130.743 108.504 130.742 111.019 132.001V132.001C113.532 133.259 116.491 133.259 119.004 132.001L123 130" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 134L-0.999985 136C1.51806 137.259 4.48195 137.259 6.99997 136V136C9.51803 134.741 12.482 134.741 15 136V136C17.5181 137.259 20.482 137.259 23 136V136C25.5181 134.741 28.482 134.741 31 136V136C33.518 137.259 36.482 137.259 39 136V136C41.5181 134.741 44.4951 134.748 47.0131 136.007V136.007C49.5181 137.259 52.4764 137.281 54.9943 136.055L55.3036 135.904C57.7646 134.706 60.6464 134.736 63.0813 135.987V135.987C65.5446 137.253 68.4634 137.268 70.9404 136.03L71.0271 135.987C73.5281 134.736 76.4854 134.743 78.9864 135.993V135.993C81.5045 137.252 84.4849 137.258 87.0029 135.999V135.999C89.5181 134.741 92.5108 134.751 95.0289 136.003V136.003C97.5398 137.251 100.522 137.26 103.028 136.004V136.004C105.542 134.743 108.504 134.742 111.019 136.001V136.001C113.532 137.259 116.491 137.259 119.004 136.001L123 134" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 138L-0.999985 140C1.51806 141.259 4.48195 141.259 6.99997 140V140C9.51803 138.741 12.482 138.741 15 140V140C17.5181 141.259 20.482 141.259 23 140V140C25.5181 138.741 28.482 138.741 31 140V140C33.518 141.259 36.482 141.259 39 140V140C41.5181 138.741 44.4951 138.748 47.0131 140.007V140.007C49.5181 141.259 52.4764 141.281 54.9943 140.055L55.3036 139.904C57.7646 138.706 60.6464 138.736 63.0813 139.987V139.987C65.5446 141.253 68.4634 141.268 70.9404 140.03L71.0271 139.987C73.5281 138.736 76.4854 138.743 78.9864 139.993V139.993C81.5045 141.252 84.4849 141.258 87.0029 139.999V139.999C89.5181 138.741 92.5108 138.751 95.0289 140.003V140.003C97.5398 141.251 100.522 141.26 103.028 140.004V140.004C105.542 138.743 108.504 138.742 111.019 140.001V140.001C113.532 141.259 116.491 141.259 119.004 140.001L123 138" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 142L-0.999985 144C1.51806 145.259 4.48195 145.259 6.99997 144V144C9.51803 142.741 12.482 142.741 15 144V144C17.5181 145.259 20.482 145.259 23 144V144C25.5181 142.741 28.482 142.741 31 144V144C33.518 145.259 36.482 145.259 39 144V144C41.5181 142.741 44.4951 142.748 47.0131 144.007V144.007C49.5181 145.259 52.4764 145.281 54.9943 144.055L55.3036 143.904C57.7646 142.706 60.6464 142.736 63.0813 143.987V143.987C65.5446 145.253 68.4634 145.268 70.9404 144.03L71.0271 143.987C73.5281 142.736 76.4854 142.743 78.9864 143.993V143.993C81.5045 145.252 84.4849 145.258 87.0029 143.999V143.999C89.5181 142.741 92.5108 142.751 95.0289 144.003V144.003C97.5398 145.251 100.522 145.26 103.028 144.004V144.004C105.542 142.743 108.504 142.742 111.019 144.001V144.001C113.532 145.259 116.491 145.259 119.004 144.001L123 142" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 146L-0.999985 148C1.51806 149.259 4.48195 149.259 6.99997 148V148C9.51803 146.741 12.482 146.741 15 148V148C17.5181 149.259 20.482 149.259 23 148V148C25.5181 146.741 28.482 146.741 31 148V148C33.518 149.259 36.482 149.259 39 148V148C41.5181 146.741 44.4951 146.748 47.0131 148.007V148.007C49.5181 149.259 52.4764 149.281 54.9943 148.055L55.3036 147.904C57.7646 146.706 60.6464 146.736 63.0813 147.987V147.987C65.5446 149.253 68.4634 149.268 70.9404 148.03L71.0271 147.987C73.5281 146.736 76.4854 146.743 78.9864 147.993V147.993C81.5045 149.252 84.4849 149.258 87.0029 147.999V147.999C89.5181 146.741 92.5108 146.751 95.0289 148.003V148.003C97.5398 149.251 100.522 149.26 103.028 148.004V148.004C105.542 146.743 108.504 146.742 111.019 148.001V148.001C113.532 149.259 116.491 149.259 119.004 148.001L123 146" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 150L-0.999985 152C1.51806 153.259 4.48195 153.259 6.99997 152V152C9.51803 150.741 12.482 150.741 15 152V152C17.5181 153.259 20.482 153.259 23 152V152C25.5181 150.741 28.482 150.741 31 152V152C33.518 153.259 36.482 153.259 39 152V152C41.5181 150.741 44.4951 150.748 47.0131 152.007V152.007C49.5181 153.259 52.4764 153.281 54.9943 152.055L55.3036 151.904C57.7646 150.706 60.6464 150.736 63.0813 151.987V151.987C65.5446 153.253 68.4634 153.268 70.9404 152.03L71.0271 151.987C73.5281 150.736 76.4854 150.743 78.9864 151.993V151.993C81.5045 153.252 84.4849 153.258 87.0029 151.999V151.999C89.5181 150.741 92.5108 150.751 95.0289 152.003V152.003C97.5398 153.251 100.522 153.26 103.028 152.004V152.004C105.542 150.743 108.504 150.742 111.019 152.001V152.001C113.532 153.259 116.491 153.259 119.004 152.001L123 150" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 154L-0.999985 156C1.51806 157.259 4.48195 157.259 6.99997 156V156C9.51803 154.741 12.482 154.741 15 156V156C17.5181 157.259 20.482 157.259 23 156V156C25.5181 154.741 28.482 154.741 31 156V156C33.518 157.259 36.482 157.259 39 156V156C41.5181 154.741 44.4951 154.748 47.0131 156.007V156.007C49.5181 157.259 52.4764 157.281 54.9943 156.055L55.3036 155.904C57.7646 154.706 60.6464 154.736 63.0813 155.987V155.987C65.5446 157.253 68.4634 157.268 70.9404 156.03L71.0271 155.987C73.5281 154.736 76.4854 154.743 78.9864 155.993V155.993C81.5045 157.252 84.4849 157.258 87.0029 155.999V155.999C89.5181 154.741 92.5108 154.751 95.0289 156.003V156.003C97.5398 157.251 100.522 157.26 103.028 156.004V156.004C105.542 154.743 108.504 154.742 111.019 156.001V156.001C113.532 157.259 116.491 157.259 119.004 156.001L123 154" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 158L-0.999985 160C1.51806 161.259 4.48195 161.259 6.99997 160V160C9.51803 158.741 12.482 158.741 15 160V160C17.5181 161.259 20.482 161.259 23 160V160C25.5181 158.741 28.482 158.741 31 160V160C33.518 161.259 36.482 161.259 39 160V160C41.5181 158.741 44.4951 158.748 47.0131 160.007V160.007C49.5181 161.259 52.4764 161.281 54.9943 160.055L55.3036 159.904C57.7646 158.706 60.6464 158.736 63.0813 159.987V159.987C65.5446 161.253 68.4634 161.268 70.9404 160.03L71.0271 159.987C73.5281 158.736 76.4854 158.743 78.9864 159.993V159.993C81.5045 161.252 84.4849 161.258 87.0029 159.999V159.999C89.5181 158.741 92.5108 158.751 95.0289 160.003V160.003C97.5398 161.251 100.522 161.26 103.028 160.004V160.004C105.542 158.743 108.504 158.742 111.019 160.001V160.001C113.532 161.259 116.491 161.259 119.004 160.001L123 158" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 162L-0.999985 164C1.51806 165.259 4.48195 165.259 6.99997 164V164C9.51803 162.741 12.482 162.741 15 164V164C17.5181 165.259 20.482 165.259 23 164V164C25.5181 162.741 28.482 162.741 31 164V164C33.518 165.259 36.482 165.259 39 164V164C41.5181 162.741 44.4951 162.748 47.0131 164.007V164.007C49.5181 165.259 52.4764 165.281 54.9943 164.055L55.3036 163.904C57.7646 162.706 60.6464 162.736 63.0813 163.987V163.987C65.5446 165.253 68.4634 165.268 70.9404 164.03L71.0271 163.987C73.5281 162.736 76.4854 162.743 78.9864 163.993V163.993C81.5045 165.252 84.4849 165.258 87.0029 163.999V163.999C89.5181 162.741 92.5108 162.751 95.0289 164.003V164.003C97.5398 165.251 100.522 165.26 103.028 164.004V164.004C105.542 162.743 108.504 162.742 111.019 164.001V164.001C113.532 165.259 116.491 165.259 119.004 164.001L123 162" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 166L-0.999985 168C1.51806 169.259 4.48195 169.259 6.99997 168V168C9.51803 166.741 12.482 166.741 15 168V168C17.5181 169.259 20.482 169.259 23 168V168C25.5181 166.741 28.482 166.741 31 168V168C33.518 169.259 36.482 169.259 39 168V168C41.5181 166.741 44.4951 166.748 47.0131 168.007V168.007C49.5181 169.259 52.4764 169.281 54.9943 168.055L55.3036 167.904C57.7646 166.706 60.6464 166.736 63.0813 167.987V167.987C65.5446 169.253 68.4634 169.268 70.9404 168.03L71.0271 167.987C73.5281 166.736 76.4854 166.743 78.9864 167.993V167.993C81.5045 169.252 84.4849 169.258 87.0029 167.999V167.999C89.5181 166.741 92.5108 166.751 95.0289 168.003V168.003C97.5398 169.251 100.522 169.26 103.028 168.004V168.004C105.542 166.743 108.504 166.742 111.019 168.001V168.001C113.532 169.259 116.491 169.259 119.004 168.001L123 166" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 170L-0.999985 172C1.51806 173.259 4.48195 173.259 6.99997 172V172C9.51803 170.741 12.482 170.741 15 172V172C17.5181 173.259 20.482 173.259 23 172V172C25.5181 170.741 28.482 170.741 31 172V172C33.518 173.259 36.482 173.259 39 172V172C41.5181 170.741 44.4951 170.748 47.0131 172.007V172.007C49.5181 173.259 52.4764 173.281 54.9943 172.055L55.3036 171.904C57.7646 170.706 60.6464 170.736 63.0813 171.987V171.987C65.5446 173.253 68.4634 173.268 70.9404 172.03L71.0271 171.987C73.5281 170.736 76.4854 170.743 78.9864 171.993V171.993C81.5045 173.252 84.4849 173.258 87.0029 171.999V171.999C89.5181 170.741 92.5108 170.751 95.0289 172.003V172.003C97.5398 173.251 100.522 173.26 103.028 172.004V172.004C105.542 170.743 108.504 170.742 111.019 172.001V172.001C113.532 173.259 116.491 173.259 119.004 172.001L123 170" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 174L-0.999985 176C1.51806 177.259 4.48195 177.259 6.99997 176V176C9.51803 174.741 12.482 174.741 15 176V176C17.5181 177.259 20.482 177.259 23 176V176C25.5181 174.741 28.482 174.741 31 176V176C33.518 177.259 36.482 177.259 39 176V176C41.5181 174.741 44.4951 174.748 47.0131 176.007V176.007C49.5181 177.259 52.4764 177.281 54.9943 176.055L55.3036 175.904C57.7646 174.706 60.6464 174.736 63.0813 175.987V175.987C65.5446 177.253 68.4634 177.268 70.9404 176.03L71.0271 175.987C73.5281 174.736 76.4854 174.743 78.9864 175.993V175.993C81.5045 177.252 84.4849 177.258 87.0029 175.999V175.999C89.5181 174.741 92.5108 174.751 95.0289 176.003V176.003C97.5398 177.251 100.522 177.26 103.028 176.004V176.004C105.542 174.743 108.504 174.742 111.019 176.001V176.001C113.532 177.259 116.491 177.259 119.004 176.001L123 174" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 178L-0.999985 180C1.51806 181.259 4.48195 181.259 6.99997 180V180C9.51803 178.741 12.482 178.741 15 180V180C17.5181 181.259 20.482 181.259 23 180V180C25.5181 178.741 28.482 178.741 31 180V180C33.518 181.259 36.482 181.259 39 180V180C41.5181 178.741 44.4951 178.748 47.0131 180.007V180.007C49.5181 181.259 52.4764 181.281 54.9943 180.055L55.3036 179.904C57.7646 178.706 60.6464 178.736 63.0813 179.987V179.987C65.5446 181.253 68.4634 181.268 70.9404 180.03L71.0271 179.987C73.5281 178.736 76.4854 178.743 78.9864 179.993V179.993C81.5045 181.252 84.4849 181.258 87.0029 179.999V179.999C89.5181 178.741 92.5108 178.751 95.0289 180.003V180.003C97.5398 181.251 100.522 181.26 103.028 180.004V180.004C105.542 178.743 108.504 178.742 111.019 180.001V180.001C113.532 181.259 116.491 181.259 119.004 180.001L123 178" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 182L-0.999985 184C1.51806 185.259 4.48195 185.259 6.99997 184V184C9.51803 182.741 12.482 182.741 15 184V184C17.5181 185.259 20.482 185.259 23 184V184C25.5181 182.741 28.482 182.741 31 184V184C33.518 185.259 36.482 185.259 39 184V184C41.5181 182.741 44.4951 182.748 47.0131 184.007V184.007C49.5181 185.259 52.4764 185.281 54.9943 184.055L55.3036 183.904C57.7646 182.706 60.6464 182.736 63.0813 183.987V183.987C65.5446 185.253 68.4634 185.268 70.9404 184.03L71.0271 183.987C73.5281 182.736 76.4854 182.743 78.9864 183.993V183.993C81.5045 185.252 84.4849 185.258 87.0029 183.999V183.999C89.5181 182.741 92.5108 182.751 95.0289 184.003V184.003C97.5398 185.251 100.522 185.26 103.028 184.004V184.004C105.542 182.743 108.504 182.742 111.019 184.001V184.001C113.532 185.259 116.491 185.259 119.004 184.001L123 182" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 186L-0.999985 188C1.51806 189.259 4.48195 189.259 6.99997 188V188C9.51803 186.741 12.482 186.741 15 188V188C17.5181 189.259 20.482 189.259 23 188V188C25.5181 186.741 28.482 186.741 31 188V188C33.518 189.259 36.482 189.259 39 188V188C41.5181 186.741 44.4951 186.748 47.0131 188.007V188.007C49.5181 189.259 52.4764 189.281 54.9943 188.055L55.3036 187.904C57.7646 186.706 60.6464 186.736 63.0813 187.987V187.987C65.5446 189.253 68.4634 189.268 70.9404 188.03L71.0271 187.987C73.5281 186.736 76.4854 186.743 78.9864 187.993V187.993C81.5045 189.252 84.4849 189.258 87.0029 187.999V187.999C89.5181 186.741 92.5108 186.751 95.0289 188.003V188.003C97.5398 189.251 100.522 189.26 103.028 188.004V188.004C105.542 186.743 108.504 186.742 111.019 188.001V188.001C113.532 189.259 116.491 189.259 119.004 188.001L123 186" stroke="#C9C5D0" stroke-width="0.8"/>
<path d="M-5 190L-0.999985 192C1.51806 193.259 4.48195 193.259 6.99997 192V192C9.51803 190.741 12.482 190.741 15 192V192C17.5181 193.259 20.482 193.259 23 192V192C25.5181 190.741 28.482 190.741 31 192V192C33.518 193.259 36.482 193.259 39 192V192C41.5181 190.741 44.4951 190.748 47.0131 192.007V192.007C49.5181 193.259 52.4764 193.281 54.9943 192.055L55.3036 191.904C57.7646 190.706 60.6464 190.736 63.0813 191.987V191.987C65.5446 193.253 68.4634 193.268 70.9404 192.03L71.0271 191.987C73.5281 190.736 76.4854 190.743 78.9864 191.993V191.993C81.5045 193.252 84.4849 193.258 87.0029 191.999V191.999C89.5181 190.741 92.5108 190.751 95.0289 192.003V192.003C97.5398 193.251 100.522 193.26 103.028 192.004V192.004C105.542 190.743 108.504 190.742 111.019 192.001V192.001C113.532 193.259 116.491 193.259 119.004 192.001L123 190" stroke="#C9C5D0" stroke-width="0.8"/>
</g>
<g style="mix-blend-mode:multiply">
<rect x="166.453" y="52" width="24" height="24" rx="6" transform="rotate(50.249 166.453 52)" fill="#C9C5D0"/>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" d="M204.914 28.2086C204.914 28.0934 205.008 28 205.123 28H208.878C208.993 28 209.087 28.0934 209.087 28.2086V34.8173L214.81 31.513C214.91 31.4554 215.037 31.4896 215.095 31.5894L216.972 34.8413C217.03 34.9411 216.996 35.0687 216.896 35.1263L211.172 38.4308L216.896 41.7351C216.995 41.7927 217.03 41.9203 216.972 42.0201L215.094 45.272C215.037 45.3718 214.909 45.406 214.81 45.3484L209.087 42.0443V48.6528C209.087 48.768 208.993 48.8614 208.878 48.8614H205.123C205.008 48.8614 204.914 48.768 204.914 48.6528V42.0439L199.191 45.3484C199.091 45.406 198.963 45.3718 198.906 45.272L197.028 42.0201C196.971 41.9203 197.005 41.7927 197.105 41.7351L202.828 38.4308L197.104 35.1263C197.005 35.0687 196.97 34.9411 197.028 34.8413L198.906 31.5894C198.963 31.4896 199.091 31.4554 199.19 31.513L204.914 34.8177V28.2086Z" fill="#E5E1EC"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M31 53C35.4183 53 39 49.4183 39 45C39 40.5817 35.4183 37 31 37C26.5817 37 23 40.5817 23 45C23 49.4183 26.5817 53 31 53ZM31 49C33.2091 49 35 47.2091 35 45C35 42.7909 33.2091 41 31 41C28.7909 41 27 42.7909 27 45C27 47.2091 28.7909 49 31 49Z" fill="#F3EFFA"/>
<g style="mix-blend-mode:multiply">
<path fill-rule="evenodd" clip-rule="evenodd" d="M193 190C199.627 190 205 184.627 205 178C205 171.373 199.627 166 193 166C186.373 166 181 171.373 181 178C181 184.627 186.373 190 193 190ZM193 184C196.314 184 199 181.314 199 178C199 174.686 196.314 172 193 172C189.686 172 187 174.686 187 178C187 181.314 189.686 184 193 184Z" fill="#E5E1EC"/>
</g>
<path d="M75.3049 53.602C74.2391 50.7131 76.7004 47.7538 79.7351 48.2753L84.2872 49.0576C87.3219 49.5791 88.6541 53.1902 86.6851 55.5576L83.7316 59.1087C81.7626 61.4761 77.9692 60.8242 76.9034 57.9353L75.3049 53.602Z" fill="#F3EFFA"/>
<rect x="74" y="220" width="80" height="4" rx="2" fill="#C9C5D0"/>
<rect x="166" y="220" width="19" height="4" rx="2" fill="#C9C5D0"/>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -0,0 +1,29 @@
@use '@/scss/underscore' as _;
.error {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-bottom: _.unit(6);
> *:not(:first-child) {
margin-top: _.unit(2);
}
.image {
width: 200px;
height: 200px;
}
.title {
text-align: center;
font: var(--font-label-2);
}
.content {
font: var(--font-body-2);
color: var(--color-neutral-50);
}
}

View file

@ -0,0 +1,39 @@
import { AppearanceMode } from '@logto/schemas';
import classNames from 'classnames';
import { useTranslation } from 'react-i18next';
import RequestErrorDarkImage from '@/assets/images/request-error-dark.svg';
import RequestErrorImage from '@/assets/images/request-error.svg';
import type { RequestError } from '@/hooks/use-api';
import { useTheme } from '@/hooks/use-theme';
import Button from '../Button';
import Card from '../Card';
import * as styles from './index.module.scss';
type Props = {
error: RequestError;
onRetry?: () => void;
className?: string;
};
const RequestDataError = ({ error, onRetry, className }: Props) => {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
const theme = useTheme();
const errorMessage = error.body?.message ?? error.message;
const isNotFoundError = error.status === 404;
const ErrorImage = theme === AppearanceMode.LightMode ? RequestErrorImage : RequestErrorDarkImage;
return (
<Card className={classNames(styles.error, className)}>
<ErrorImage className={styles.image} />
<div className={styles.title}>
{t(isNotFoundError ? 'errors.not_found' : 'errors.something_went_wrong')}
</div>
<div className={styles.content}>{errorMessage}</div>
{onRetry && <Button title="general.retry" onClick={onRetry} />}
</Card>
);
};
export default RequestDataError;

View file

@ -1,8 +1,8 @@
import { AppearanceMode } from '@logto/schemas';
import { useTranslation } from 'react-i18next';
import ErrorDark from '@/assets/images/error-dark.svg';
import Error from '@/assets/images/error.svg';
import RequestErrorDarkImage from '@/assets/images/request-error-dark.svg';
import RequestErrorImage from '@/assets/images/request-error.svg';
import { useTheme } from '@/hooks/use-theme';
import Button from '../Button';
@ -23,7 +23,7 @@ const TableError = ({ title, content, onRetry, columns }: Props) => {
<tr>
<td colSpan={columns}>
<div className={styles.tableError}>
{theme === AppearanceMode.LightMode ? <Error /> : <ErrorDark />}
{theme === AppearanceMode.LightMode ? <RequestErrorImage /> : <RequestErrorDarkImage />}
<div className={styles.title}>{title ?? t('errors.something_went_wrong')}</div>
<div className={styles.content}>{content ?? t('errors.unknown_server_error')}</div>
{onRetry && <Button title="general.retry" onClick={onRetry} />}

View file

@ -17,6 +17,7 @@ import Card from '@/components/Card';
import CopyToClipboard from '@/components/CopyToClipboard';
import DeleteConfirmModal from '@/components/DeleteConfirmModal';
import DetailsSkeleton from '@/components/DetailsSkeleton';
import RequestDataError from '@/components/RequestDataError';
import TabNav, { TabNavItem } from '@/components/TabNav';
import TextLink from '@/components/TextLink';
import { ApiResourceDetailsTabs } from '@/consts/page-tabs';
@ -75,7 +76,14 @@ const ApiResourceDetails = () => {
{t('api_resource_details.back_to_api_resources')}
</TextLink>
{isLoading && <DetailsSkeleton />}
{!data && error && <div>{`error occurred: ${error.body?.message ?? error.message}`}</div>}
{error && (
<RequestDataError
error={error}
onRetry={() => {
void mutate();
}}
/>
)}
{data && (
<>
<Card className={styles.header}>

View file

@ -19,6 +19,7 @@ import DeleteConfirmModal from '@/components/DeleteConfirmModal';
import DetailsForm from '@/components/DetailsForm';
import DetailsSkeleton from '@/components/DetailsSkeleton';
import Drawer from '@/components/Drawer';
import RequestDataError from '@/components/RequestDataError';
import TabNav, { TabNavItem } from '@/components/TabNav';
import TextLink from '@/components/TextLink';
import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal';
@ -45,11 +46,13 @@ const ApplicationDetails = () => {
const { data, error, mutate } = useSWR<ApplicationResponse, RequestError>(
id && `api/applications/${id}`
);
const { data: oidcConfig, error: fetchOidcConfigError } = useSWR<
SnakeCaseOidcConfig,
RequestError
>('oidc/.well-known/openid-configuration');
const {
data: oidcConfig,
error: fetchOidcConfigError,
mutate: mutateOidcConfig,
} = useSWR<SnakeCaseOidcConfig, RequestError>('oidc/.well-known/openid-configuration');
const isLoading = (!data && !error) || (!oidcConfig && !fetchOidcConfigError);
const requestError = error ?? fetchOidcConfigError;
const [isReadmeOpen, setIsReadmeOpen] = useState(false);
const [isDeleteFormOpen, setIsDeleteFormOpen] = useState(false);
const [isDeleting, setIsDeleting] = useState(false);
@ -129,6 +132,15 @@ const ApplicationDetails = () => {
{t('application_details.back_to_applications')}
</TextLink>
{isLoading && <DetailsSkeleton />}
{requestError && (
<RequestDataError
error={requestError}
onRetry={() => {
void mutate();
void mutateOidcConfig();
}}
/>
)}
{data && oidcConfig && (
<>
<Card className={styles.header}>

View file

@ -10,6 +10,7 @@ import Card from '@/components/Card';
import CodeEditor from '@/components/CodeEditor';
import DetailsSkeleton from '@/components/DetailsSkeleton';
import FormField from '@/components/FormField';
import RequestDataError from '@/components/RequestDataError';
import TabNav, { TabNavItem } from '@/components/TabNav';
import TextLink from '@/components/TextLink';
import UserName from '@/components/UserName';
@ -30,7 +31,7 @@ const AuditLogDetails = () => {
const { id, logId } = useParams();
const { pathname } = useLocation();
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
const { data, error } = useSWR<Log, RequestError>(logId && `api/logs/${logId}`);
const { data, error, mutate } = useSWR<Log, RequestError>(logId && `api/logs/${logId}`);
const { data: userData } = useSWR<User, RequestError>(id && `api/users/${id}`);
const isLoading = !data && !error;
@ -50,7 +51,14 @@ const AuditLogDetails = () => {
{backLinkTitle}
</TextLink>
{isLoading && <DetailsSkeleton />}
{!data && error && <div>{`error occurred: ${error.body?.message ?? error.message}`}</div>}
{error && (
<RequestDataError
error={error}
onRetry={() => {
void mutate();
}}
/>
)}
{data && (
<>
<Card className={styles.header}>

View file

@ -19,6 +19,7 @@ import CopyToClipboard from '@/components/CopyToClipboard';
import DetailsSkeleton from '@/components/DetailsSkeleton';
import Drawer from '@/components/Drawer';
import Markdown from '@/components/Markdown';
import RequestDataError from '@/components/RequestDataError';
import Status from '@/components/Status';
import TabNav, { TabNavItem } from '@/components/TabNav';
import TextLink from '@/components/TextLink';
@ -49,12 +50,21 @@ const ConnectorDetails = () => {
const { data, error, mutate } = useSWR<ConnectorResponse, RequestError>(
connectorId && `api/connectors/${connectorId}`
);
const { data: connectorFactory } = useSWR<ConnectorFactoryResponse>(
const {
data: connectorFactory,
error: fetchConnectorFactoryError,
mutate: mutateConnectorFactory,
} = useSWR<ConnectorFactoryResponse, RequestError>(
data?.isStandard && `api/connector-factories/${data.connectorId}`
);
const requestError = error ?? fetchConnectorFactoryError;
const { isConnectorInUse } = useConnectorInUse();
const inUse = isConnectorInUse(data);
const isLoading = !data && !error;
const isLoading =
(!data && !error) || (data?.isStandard && !connectorFactory && !fetchConnectorFactoryError);
const api = useApi();
const navigate = useNavigate();
const isSocial = data?.type === ConnectorType.Social;
@ -100,125 +110,131 @@ const ConnectorDetails = () => {
<TextLink to={getConnectorsPathname(isSocial)} icon={<Back />} className={styles.backLink}>
{t('connector_details.back_to_connectors')}
</TextLink>
{isLoading && <DetailsSkeleton />}
{!data && error && <div>{`error occurred: ${error.body?.message ?? error.message}`}</div>}
{isSocial && <ConnectorTabs target={data.target} connectorId={data.id} />}
{data && (
<Card className={styles.header}>
<div className={styles.logoContainer}>
<ConnectorLogo data={data} className={styles.logo} />
</div>
<div className={styles.metadata}>
<div>
<div className={styles.name}>
<UnnamedTrans resource={data.name} />
</div>
</div>
<div>
<ConnectorTypeName type={data.type} />
<div className={styles.verticalBar} />
{connectorFactory && (
<>
<div className={styles.factoryName}>
<UnnamedTrans resource={connectorFactory.name} />
</div>
<div className={styles.verticalBar} />
</>
)}
<Status status={inUse ? 'enabled' : 'disabled'} variant="outlined">
{t('connectors.connector_status', {
context: inUse ? 'in_use' : 'not_in_use',
})}
</Status>
<div className={styles.verticalBar} />
<div className={styles.text}>ID</div>
<CopyToClipboard size="small" value={data.id} />
</div>
</div>
<div className={styles.operations}>
<Button
title="connector_details.check_readme"
size="large"
onClick={() => {
setIsReadMeOpen(true);
}}
/>
<Drawer
title="connectors.title"
subtitle="connectors.subtitle"
isOpen={isReadMeOpen}
onClose={() => {
setIsReadMeOpen(false);
}}
>
<Markdown className={styles.readme}>{data.readme}</Markdown>
</Drawer>
<ActionMenu
buttonProps={{ icon: <More className={styles.moreIcon} />, size: 'large' }}
title={t('general.more_options')}
>
{!isSocial && (
<ActionMenuItem
icon={<Reset />}
iconClassName={styles.resetIcon}
onClick={() => {
setIsSetupOpen(true);
}}
>
{t(
data.type === ConnectorType.Sms
? 'connector_details.options_change_sms'
: 'connector_details.options_change_email'
)}
</ActionMenuItem>
)}
<ActionMenuItem icon={<Delete />} type="danger" onClick={onDeleteClick}>
{t('general.delete')}
</ActionMenuItem>
</ActionMenu>
<CreateForm
isOpen={isSetupOpen}
type={data.type}
onClose={(connectorId?: string) => {
setIsSetupOpen(false);
if (connectorId) {
navigate(`${getConnectorsPathname(isSocial)}/${connectorId}`);
}
}}
/>
</div>
</Card>
)}
<TabNav>
<TabNavItem href={`${getConnectorsPathname(isSocial)}/${connectorId}`}>
{t('general.settings_nav')}
</TabNavItem>
</TabNav>
{data && (
<ConnectorContent
isDeleted={isDeleted}
connectorData={data}
onConnectorUpdated={(connector) => {
void mutate(connector);
{requestError && (
<RequestDataError
error={requestError}
onRetry={() => {
void mutate();
void mutateConnectorFactory();
}}
/>
)}
{data && (
<ConfirmModal
isOpen={isDeleteAlertOpen}
confirmButtonText="general.delete"
onCancel={() => {
setIsDeleteAlertOpen(false);
}}
onConfirm={handleDelete}
>
<Trans
t={t}
i18nKey="connector_details.in_use_deletion_description"
components={{ name: <UnnamedTrans resource={data.name} /> }}
{isLoading && !requestError && <DetailsSkeleton />}
{isSocial && <ConnectorTabs target={data.target} connectorId={data.id} />}
{!requestError && data && (
<>
<Card className={styles.header}>
<div className={styles.logoContainer}>
<ConnectorLogo data={data} className={styles.logo} />
</div>
<div className={styles.metadata}>
<div>
<div className={styles.name}>
<UnnamedTrans resource={data.name} />
</div>
</div>
<div>
<ConnectorTypeName type={data.type} />
<div className={styles.verticalBar} />
{connectorFactory && (
<>
<div className={styles.factoryName}>
<UnnamedTrans resource={connectorFactory.name} />
</div>
<div className={styles.verticalBar} />
</>
)}
<Status status={inUse ? 'enabled' : 'disabled'} variant="outlined">
{t('connectors.connector_status', {
context: inUse ? 'in_use' : 'not_in_use',
})}
</Status>
<div className={styles.verticalBar} />
<div className={styles.text}>ID</div>
<CopyToClipboard size="small" value={data.id} />
</div>
</div>
<div className={styles.operations}>
<Button
title="connector_details.check_readme"
size="large"
onClick={() => {
setIsReadMeOpen(true);
}}
/>
<Drawer
title="connectors.title"
subtitle="connectors.subtitle"
isOpen={isReadMeOpen}
onClose={() => {
setIsReadMeOpen(false);
}}
>
<Markdown className={styles.readme}>{data.readme}</Markdown>
</Drawer>
<ActionMenu
buttonProps={{ icon: <More className={styles.moreIcon} />, size: 'large' }}
title={t('general.more_options')}
>
{!isSocial && (
<ActionMenuItem
icon={<Reset />}
iconClassName={styles.resetIcon}
onClick={() => {
setIsSetupOpen(true);
}}
>
{t(
data.type === ConnectorType.Sms
? 'connector_details.options_change_sms'
: 'connector_details.options_change_email'
)}
</ActionMenuItem>
)}
<ActionMenuItem icon={<Delete />} type="danger" onClick={onDeleteClick}>
{t('general.delete')}
</ActionMenuItem>
</ActionMenu>
<CreateForm
isOpen={isSetupOpen}
type={data.type}
onClose={(connectorId?: string) => {
setIsSetupOpen(false);
if (connectorId) {
navigate(`${getConnectorsPathname(isSocial)}/${connectorId}`);
}
}}
/>
</div>
</Card>
<TabNav>
<TabNavItem href={`${getConnectorsPathname(isSocial)}/${connectorId}`}>
{t('general.settings_nav')}
</TabNavItem>
</TabNav>
<ConnectorContent
isDeleted={isDeleted}
connectorData={data}
onConnectorUpdated={(connector) => {
void mutate(connector);
}}
/>
</ConfirmModal>
<ConfirmModal
isOpen={isDeleteAlertOpen}
confirmButtonText="general.delete"
onCancel={() => {
setIsDeleteAlertOpen(false);
}}
onConfirm={handleDelete}
>
<Trans
t={t}
i18nKey="connector_details.in_use_deletion_description"
components={{ name: <UnnamedTrans resource={data.name} /> }}
/>
</ConfirmModal>
</>
)}
</div>
);

View file

@ -14,6 +14,7 @@ import Card from '@/components/Card';
import ConfirmModal from '@/components/ConfirmModal';
import CopyToClipboard from '@/components/CopyToClipboard';
import DetailsSkeleton from '@/components/DetailsSkeleton';
import RequestDataError from '@/components/RequestDataError';
import TabNav, { TabNavItem } from '@/components/TabNav';
import TextLink from '@/components/TextLink';
import { RoleDetailsTabs } from '@/consts/page-tabs';
@ -76,7 +77,14 @@ const RoleDetails = () => {
{t('role_details.back_to_roles')}
</TextLink>
{isLoading && <DetailsSkeleton />}
{!data && error && <div>{`error occurred: ${error.body?.message ?? error.message}`}</div>}
{error && (
<RequestDataError
error={error}
onRetry={() => {
void mutate();
}}
/>
)}
{data && (
<>
<Card className={styles.header}>

View file

@ -6,11 +6,13 @@ import { AppearanceMode } from '@logto/schemas';
import { Controller, useForm } from 'react-hook-form';
import { toast } from 'react-hot-toast';
import { useTranslation } from 'react-i18next';
import { useSWRConfig } from 'swr';
import CardTitle from '@/components/CardTitle';
import DetailsForm from '@/components/DetailsForm';
import FormCard from '@/components/FormCard';
import FormField from '@/components/FormField';
import RequestDataError from '@/components/RequestDataError';
import Select from '@/components/Select';
import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal';
import type { UserPreferences } from '@/hooks/use-user-preferences';
@ -24,6 +26,7 @@ const Settings = () => {
t,
i18n: { language },
} = useTranslation(undefined, { keyPrefix: 'admin_console' });
const { mutate: mutateGlobal } = useSWRConfig();
const defaultLanguage = getDefaultLanguageTag(language);
@ -53,7 +56,14 @@ const Settings = () => {
className={styles.cardTitle}
/>
{isLoading && <div>loading</div>}
{error && <div>{`error occurred: ${error.body?.message ?? error.message}`}</div>}
{error && (
<RequestDataError
error={error}
onRetry={() => {
void mutateGlobal('api/me/custom-data');
}}
/>
)}
{isLoaded && (
<DetailsForm
isSubmitting={isSubmitting}

View file

@ -9,6 +9,10 @@
flex-shrink: 0;
}
.error {
margin-top: _.unit(4);
}
.tabs {
margin: _.unit(4) 0;
}

View file

@ -1,5 +1,6 @@
import type { SignInExperience as SignInExperienceType } from '@logto/schemas';
import classNames from 'classnames';
import type { ReactNode } from 'react';
import { useEffect, useMemo, useState } from 'react';
import { FormProvider, useForm } from 'react-hook-form';
import { toast } from 'react-hot-toast';
@ -9,6 +10,7 @@ import useSWR from 'swr';
import CardTitle from '@/components/CardTitle';
import ConfirmModal from '@/components/ConfirmModal';
import RequestDataError from '@/components/RequestDataError';
import SubmitFormChangesActionBar from '@/components/SubmitFormChangesActionBar';
import TabNav, { TabNavItem } from '@/components/TabNav';
import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal';
@ -37,6 +39,21 @@ import {
signInExperienceParser,
} from './utils/form';
type PageWrapperProps = {
children: ReactNode;
};
const PageWrapper = ({ children }: PageWrapperProps) => (
<div className={styles.container}>
<CardTitle
title="sign_in_exp.title"
subtitle="sign_in_exp.description"
className={styles.cardTitle}
/>
{children}
</div>
);
const SignInExperience = () => {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
const { tab } = useParams();
@ -56,6 +73,8 @@ const SignInExperience = () => {
const { error: languageError, isLoading: isLoadingLanguages } = useUiLanguages();
const [dataToCompare, setDataToCompare] = useState<SignInExperienceType>();
const requestError = error ?? configsError ?? languageError;
const methods = useForm<SignInExperienceForm>();
const {
reset,
@ -116,95 +135,96 @@ const SignInExperience = () => {
return <Skeleton />;
}
if (configsError) {
return <div>{configsError.body?.message ?? configsError.message}</div>;
if (requestError) {
return (
<PageWrapper>
<RequestDataError
className={styles.error}
error={requestError}
onRetry={() => {
void mutateConfigs();
void mutate();
}}
/>
</PageWrapper>
);
}
if (languageError) {
return <div>{languageError.body?.message ?? languageError.message}</div>;
}
return (
<div className={styles.container}>
<CardTitle
title="sign_in_exp.title"
subtitle="sign_in_exp.description"
className={styles.cardTitle}
/>
{shouldDisplayWelcome ? (
if (shouldDisplayWelcome) {
return (
<PageWrapper>
<Welcome
mutate={() => {
void mutateConfigs();
void mutate();
}}
/>
) : (
<>
<TabNav className={styles.tabs}>
<TabNavItem
href={`/sign-in-experience/${SignInExperiencePage.BrandingTab}`}
errorCount={getBrandingErrorCount(errors)}
>
{t('sign_in_exp.tabs.branding')}
</TabNavItem>
<TabNavItem
href={`/sign-in-experience/${SignInExperiencePage.SignUpAndSignInTab}`}
errorCount={getSignUpAndSignInErrorCount(errors, formData)}
>
{t('sign_in_exp.tabs.sign_up_and_sign_in')}
</TabNavItem>
<TabNavItem
href={`/sign-in-experience/${SignInExperiencePage.OthersTab}`}
errorCount={getOthersErrorCount(errors)}
>
{t('sign_in_exp.tabs.others')}
</TabNavItem>
</TabNav>
{!data && error && <div>{`error occurred: ${error.body?.message ?? error.message}`}</div>}
{data && defaultFormData && (
<div className={styles.content}>
<div className={classNames(styles.contentTop, isDirty && styles.withSubmitActionBar)}>
<FormProvider {...methods}>
<form className={styles.form}>
<Branding isActive={tab === SignInExperiencePage.BrandingTab} />
<SignUpAndSignIn isActive={tab === SignInExperiencePage.SignUpAndSignInTab} />
<Others isActive={tab === SignInExperiencePage.OthersTab} />
</form>
</FormProvider>
{formData.id && (
<Preview signInExperience={previewConfigs} className={styles.preview} />
)}
</div>
<SubmitFormChangesActionBar
isOpen={isDirty}
isSubmitting={isSubmitting}
onDiscard={reset}
onSubmit={onSubmit}
/>
</div>
)}
{data && (
<ConfirmModal
isOpen={Boolean(dataToCompare)}
onCancel={() => {
setDataToCompare(undefined);
}}
onConfirm={async () => {
await saveData();
}}
>
{dataToCompare && (
<SignUpAndSignInChangePreview before={data} after={dataToCompare} />
)}
</ConfirmModal>
)}
<UnsavedChangesAlertModal
hasUnsavedChanges={isDirty}
parentPath="/console/sign-in-experience"
</PageWrapper>
);
}
return (
<PageWrapper>
<TabNav className={styles.tabs}>
<TabNavItem
href={`/sign-in-experience/${SignInExperiencePage.BrandingTab}`}
errorCount={getBrandingErrorCount(errors)}
>
{t('sign_in_exp.tabs.branding')}
</TabNavItem>
<TabNavItem
href={`/sign-in-experience/${SignInExperiencePage.SignUpAndSignInTab}`}
errorCount={getSignUpAndSignInErrorCount(errors, formData)}
>
{t('sign_in_exp.tabs.sign_up_and_sign_in')}
</TabNavItem>
<TabNavItem
href={`/sign-in-experience/${SignInExperiencePage.OthersTab}`}
errorCount={getOthersErrorCount(errors)}
>
{t('sign_in_exp.tabs.others')}
</TabNavItem>
</TabNav>
{data && defaultFormData && (
<div className={styles.content}>
<div className={classNames(styles.contentTop, isDirty && styles.withSubmitActionBar)}>
<FormProvider {...methods}>
<form className={styles.form}>
<Branding isActive={tab === SignInExperiencePage.BrandingTab} />
<SignUpAndSignIn isActive={tab === SignInExperiencePage.SignUpAndSignInTab} />
<Others isActive={tab === SignInExperiencePage.OthersTab} />
</form>
</FormProvider>
{formData.id && (
<Preview signInExperience={previewConfigs} className={styles.preview} />
)}
</div>
<SubmitFormChangesActionBar
isOpen={isDirty}
isSubmitting={isSubmitting}
onDiscard={reset}
onSubmit={onSubmit}
/>
</>
</div>
)}
</div>
{data && (
<ConfirmModal
isOpen={Boolean(dataToCompare)}
onCancel={() => {
setDataToCompare(undefined);
}}
onConfirm={async () => {
await saveData();
}}
>
{dataToCompare && <SignUpAndSignInChangePreview before={data} after={dataToCompare} />}
</ConfirmModal>
)}
<UnsavedChangesAlertModal
hasUnsavedChanges={isDirty}
parentPath="/console/sign-in-experience"
/>
</PageWrapper>
);
};

View file

@ -16,6 +16,7 @@ import Card from '@/components/Card';
import CopyToClipboard from '@/components/CopyToClipboard';
import DeleteConfirmModal from '@/components/DeleteConfirmModal';
import DetailsSkeleton from '@/components/DetailsSkeleton';
import RequestDataError from '@/components/RequestDataError';
import TabNav, { TabNavItem } from '@/components/TabNav';
import TextLink from '@/components/TextLink';
import UserAvatar from '@/components/UserAvatar';
@ -73,7 +74,14 @@ const UserDetails = () => {
{t('user_details.back_to_users')}
</TextLink>
{isLoading && <DetailsSkeleton />}
{!data && error && <div>{`error occurred: ${error.body?.message ?? error.message}`}</div>}
{error && (
<RequestDataError
error={error}
onRetry={() => {
void mutate();
}}
/>
)}
{data && (
<>
<Card className={styles.header}>

View file

@ -16,6 +16,7 @@ const errors = {
password_pattern_error: 'Das Passwort muss aus mindestens 6 Zeichen lang sein',
insecure_contexts: 'Unsichere Kontexte (nicht-HTTPS) werden nicht unterstützt.',
unexpected_error: 'Ein unerwarteter Fehler ist aufgetreten',
not_found: '404 not found', // UNTRANSLATED
};
export default errors;

View file

@ -16,6 +16,7 @@ const errors = {
password_pattern_error: 'Password requires a minimum of 6 characters',
insecure_contexts: 'Insecure contexts (non-HTTPS) are not supported.',
unexpected_error: 'An unexpected error occurred',
not_found: '404 not found',
};
export default errors;

View file

@ -16,6 +16,7 @@ const errors = {
password_pattern_error: 'Le mot de passe doit comporter un minimum de 6 caractères',
insecure_contexts: 'Les contextes non sécurisés (non HTTPS) ne sont pas pris en charge.',
unexpected_error: "Une erreur inattendue s'est produite",
not_found: '404 not found', // UNTRANSLATED
};
export default errors;

View file

@ -16,6 +16,7 @@ const errors = {
password_pattern_error: '비밀번호는 최소 6자리로 이루어져야 해요.',
insecure_contexts: '비보안 연결(non-HTTPS)는 지원하지 않아요.',
unexpected_error: '알 수 없는 오류가 발생했어요.',
not_found: '404 not found', // UNTRANSLATED
};
export default errors;

View file

@ -16,6 +16,7 @@ const errors = {
password_pattern_error: 'A senha requer um mínimo de 6 caracteres',
insecure_contexts: 'Contextos inseguros (não-HTTPS) não são suportados.',
unexpected_error: 'Um erro inesperado ocorreu',
not_found: '404 not found', // UNTRANSLATED
};
export default errors;

View file

@ -16,6 +16,7 @@ const errors = {
password_pattern_error: 'A password requer um mínimo de 6 caracteres',
insecure_contexts: 'Contextos inseguros (não HTTPS) não são compatíveis.',
unexpected_error: 'Um erro inesperado ocorreu',
not_found: '404 not found', // UNTRANSLATED
};
export default errors;

View file

@ -16,6 +16,7 @@ const errors = {
password_pattern_error: 'Şifre minimum 6 karakter olmalı',
insecure_contexts: 'Güvenli olmayan bağlamlar (HTTPS olmayan) desteklenmez.',
unexpected_error: 'Beklenmedik bir hata oluştu',
not_found: '404 not found', // UNTRANSLATED
};
export default errors;

View file

@ -15,6 +15,7 @@ const errors = {
password_pattern_error: '密码应不少于 6 位',
insecure_contexts: '不支持不安全的上下文(非 HTTPS。',
unexpected_error: '发生未知错误',
not_found: '404 not found', // UNTRANSLATED
};
export default errors;