Pantallas de login, errores y recuperación de contraseña
This commit is contained in:
13
assets/images/ui/connection_error.svg
Normal file
13
assets/images/ui/connection_error.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<svg width="205" height="254" viewBox="0 0 205 254" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M22.7568 93.2764C26.618 92.6365 30.5795 93.3383 33.9834 95.2607C37.1864 94.2189 40.6137 94.0949 43.877 94.9033L44.542 95.082L44.5479 95.084C47.0377 95.8377 48.7539 97.1143 49.665 98.8447C50.5086 100.447 50.6206 102.362 50.126 104.459C51.6897 104.92 53.0065 105.88 53.7109 107.264C54.4954 108.804 54.4734 110.773 53.3447 112.965L53.3311 112.988C51.8999 115.432 50.0354 117.595 47.8281 119.37L47.8223 119.375L47.8154 119.379C43.8238 122.395 39.1382 124.356 34.1904 125.085C34.0516 125.223 33.9696 125.304 33.8848 125.387C34.4389 126.703 35.3608 127.834 36.5439 128.642C37.8165 129.51 39.3277 129.963 40.8682 129.936H40.8857C44.6855 130.003 48.4434 129.159 51.8496 127.482C51.4471 125.908 51.5214 124.246 52.0703 122.709C53.2302 119.329 55.6178 117.45 57.8623 116.724C58.9796 116.362 60.078 116.28 60.9814 116.457C61.8706 116.631 62.6651 117.08 62.9844 117.864C63.7675 119.787 62.9889 121.755 61.7822 123.443C60.5658 125.146 58.8238 126.697 57.4111 127.86L57.4082 127.862C56.9993 128.194 56.5735 128.505 56.1328 128.793C57.1531 129.863 58.5407 130.331 60.0811 130.347C61.8187 130.364 63.7164 129.804 65.376 128.915C66.9974 128.022 68.4895 126.912 69.8105 125.615L69.8135 125.612C69.9622 125.469 70.1378 125.356 70.3301 125.28V125.279C70.5223 125.204 70.728 125.166 70.9346 125.17C71.0894 125.173 71.2427 125.199 71.3896 125.246L71.5352 125.301L71.6738 125.369C71.8085 125.444 71.9315 125.539 72.0391 125.65C72.1468 125.762 72.238 125.889 72.3086 126.026L72.3721 126.167L72.4219 126.313C72.4501 126.413 72.4682 126.514 72.4766 126.617L72.4814 126.771C72.4778 126.978 72.434 127.182 72.3516 127.372C72.2897 127.514 72.2065 127.646 72.1064 127.764L72.001 127.877C68.0897 131.645 64.198 133.34 60.8428 133.512C57.6499 133.675 54.9664 132.451 53.2949 130.367C49.4231 132.222 44.9117 133.428 40.8633 133.215C36.8589 133.004 33.262 131.398 31.2686 127.633C28.4971 129.704 25.3222 131.072 22.2939 131.245C19.1296 131.426 16.1386 130.299 14.0098 127.358C9.30553 126.91 5.80503 125.24 3.54102 122.818C1.2374 120.354 0.253541 117.155 0.551758 113.807C1.01944 108.58 4.23099 103.789 8.45703 100.151C12.6827 96.5138 17.9855 93.9737 22.7568 93.2764ZM29.0566 125.229C25.767 126.452 22.3194 127.187 18.8223 127.413C20.2856 128.159 21.9663 128.223 23.7041 127.813C25.5482 127.379 27.4212 126.419 29.0752 125.231C29.069 125.231 29.0628 125.23 29.0566 125.229ZM59.7285 119.581C59.3608 119.595 58.8311 119.753 58.2695 120.026C57.7154 120.296 57.1818 120.651 56.8057 121.011L56.5322 121.284C56.0082 121.841 55.5911 122.489 55.3008 123.196L55.166 123.555C54.925 124.262 54.8141 125.005 54.835 125.747C56.537 124.517 58.0465 123.038 59.3115 121.358C59.6235 120.894 59.8233 120.525 59.9385 120.236C60.0573 119.939 60.0708 119.766 60.0605 119.683C60.0537 119.627 60.0424 119.627 60.0361 119.624C60.0043 119.605 59.9132 119.574 59.7285 119.581ZM29.8115 97.0039C25.9347 95.7887 21.507 96.4515 17.3887 98.2285C12.8886 100.17 8.8351 103.409 6.39648 106.815V106.816C3.51767 110.83 2.77666 114.87 3.93457 118.054C5.01922 121.036 7.82033 123.401 12.4131 124.316C12.2747 123.947 12.1484 123.573 12.0381 123.193V123.192C11.9199 122.787 11.9674 122.351 12.1699 121.98C12.3727 121.61 12.7145 121.335 13.1201 121.216C13.5259 121.097 13.9628 121.144 14.334 121.347C14.6582 121.524 14.9094 121.808 15.0469 122.147L15.0996 122.297L15.1006 122.302C15.3385 123.145 15.6788 123.955 16.1123 124.716C18.8022 124.78 21.4877 124.513 24.1094 123.922C20.6073 122.317 17.731 119.27 17.3438 115.063L17.3105 114.596C17.1256 110.735 18.8521 106.981 21.4277 103.824C23.739 100.992 26.7648 98.6046 29.8115 97.0039ZM33.2412 98.6602C29.0636 100.466 25.4679 103.398 22.8574 107.131C20.3562 110.821 19.4419 115.577 22.3525 118.714C24.2908 120.731 26.9184 121.936 29.707 122.098C29.2149 115.71 33.3118 110.487 38.6621 107.114C38.4329 105.405 37.8339 103.765 36.9053 102.31C35.9664 100.838 34.715 99.5918 33.2412 98.6602ZM49.1045 107.365C46.5443 112.532 42.7528 116.991 38.0605 120.348C37.8679 120.641 37.6692 120.929 37.4668 121.214C40.5196 120.346 43.3933 118.931 45.9453 117.031C47.2694 115.976 49.0189 114.313 50.1572 112.614C50.7273 111.763 51.1221 110.937 51.2539 110.196C51.3821 109.476 51.2606 108.86 50.8271 108.347C50.3709 107.841 49.7662 107.499 49.1045 107.365ZM38.4277 111.339C35.4879 113.742 33.291 116.882 33.0449 120.495C33.5595 120.205 34.1552 119.853 34.7275 119.489C36.5378 117.067 37.7992 114.287 38.4277 111.339ZM46.2031 107.421C44.7345 107.685 43.3191 108.195 42.0176 108.932C41.9408 110.814 41.5965 112.671 40.998 114.45C43.0724 112.381 44.8268 110.012 46.2031 107.421ZM43.7549 97.7744C41.5697 97.165 39.2773 97.0719 37.0576 97.4951C39.4193 99.5829 41.0542 102.374 41.7197 105.462C43.5414 104.658 45.5009 104.213 47.4922 104.148C47.8918 102.493 47.7918 101.19 47.2568 100.19C46.6862 99.1237 45.5661 98.2981 43.7549 97.7754V97.7744Z" fill="#4B4B4B" stroke="#4B4B4B"/>
|
||||
<path d="M169.42 106.562C170.97 106.036 172.639 105.964 174.226 106.359C175.727 106.733 177.096 107.507 178.188 108.597C180.91 107.967 184.025 107.724 186.685 108.308C189.326 108.887 191.586 110.304 192.473 113.017C198.71 112.726 202.646 114.667 203.924 118.166C205.206 121.674 203.677 126.434 199.73 131.347C197.211 134.483 193.781 137.81 190.083 139.86C186.387 141.909 182.326 142.73 178.658 140.647L178.651 140.644L178.645 140.64C177.933 140.206 177.349 139.59 176.957 138.854C176.699 138.371 176.531 137.848 176.456 137.311C174.431 138.411 171.983 139.366 169.638 139.669C167.015 140.007 164.408 139.538 162.753 137.393C161.69 136.015 161.406 134.534 161.653 133.062C161.85 131.887 162.383 130.734 163.093 129.641C161.112 129.471 159.681 128.641 158.944 127.349C158.101 125.871 158.26 123.951 159.292 122.098L159.304 122.075L159.319 122.055C160.017 121.056 160.765 120.096 161.557 119.177C161.183 119.433 160.794 119.669 160.391 119.879L160.378 119.886L160.366 119.892C159.289 120.375 158.247 120.296 157.528 119.719C156.809 119.142 156.536 118.166 156.794 117.127L156.803 117.09L156.819 117.055C157.46 115.527 158.372 114.128 159.514 112.927C160.188 112.209 160.908 111.535 161.664 110.905C161.535 110.658 161.362 110.434 161.153 110.246C160.859 109.983 160.503 109.799 160.119 109.711L160.107 109.709L160.095 109.705C158.448 109.244 156.709 109.512 154.996 110.198C153.285 110.883 151.634 111.97 150.189 113.096C149.689 113.565 149.16 113.841 148.661 113.924C148.155 114.008 147.648 113.896 147.306 113.545C146.954 113.183 146.874 112.665 147.035 112.153C147.191 111.656 147.572 111.15 148.172 110.672C150.423 108.759 153.07 107.369 155.921 106.601L155.943 106.595C157.522 106.242 159.269 106.192 160.819 106.607C162.201 106.978 163.447 107.729 164.247 108.982C165.839 107.921 167.582 107.104 169.42 106.562ZM199.697 117.562C197.14 117.409 194.584 117.873 192.245 118.914C190.763 123.641 186.08 130.59 179.765 135.202C179.679 135.75 179.628 136.295 179.687 136.762C179.752 137.276 179.936 137.616 180.27 137.805L180.516 137.937C183.069 139.228 186.122 138.447 189.153 136.613C192.261 134.732 195.198 131.826 197.243 129.338L197.252 129.326L197.262 129.315C198.527 127.948 199.553 126.377 200.297 124.669L200.298 124.666C200.957 123.181 201.385 121.782 201.344 120.558C201.306 119.407 200.853 118.389 199.697 117.562ZM189.561 116.193C185.431 116.859 181.453 118.259 177.816 120.329C174.996 125.165 170.248 128.537 166.503 129.377C165.599 130.409 164.793 131.539 164.399 132.649C163.998 133.78 164.034 134.846 164.792 135.805C165.885 137.188 167.878 137.386 170.246 136.813C172.511 136.265 174.923 135.049 176.708 133.854C177.147 132.079 177.745 130.346 178.499 128.678C180.697 123.54 184.578 119.306 189.5 116.669C189.526 116.511 189.546 116.352 189.561 116.193ZM187.443 121.933C184.864 124.108 182.815 126.843 181.451 129.928C183.82 127.563 185.838 124.871 187.443 121.933ZM176.542 112.323C172.009 113.908 167.931 116.579 164.668 120.109L164.667 120.111C163.975 120.854 163.065 121.806 162.386 122.808C161.69 123.835 161.34 124.767 161.536 125.501C161.679 126.041 162.247 126.372 163.254 126.444C164.177 126.511 165.257 126.333 166.072 126.091C168.659 123.437 171.538 121.085 174.656 119.08C175.316 118.045 175.949 116.79 176.319 115.517C176.646 114.391 176.757 113.29 176.542 112.323ZM174.283 109.829C173.035 109.303 171.627 109.333 170.169 109.73C168.425 110.206 166.664 111.194 165.15 112.282C165.14 113.806 164.74 115.294 163.998 116.609C166.093 114.612 168.427 112.866 170.955 111.419L170.959 111.416C172.032 110.816 173.143 110.286 174.283 109.829ZM185.27 111.326C183.487 111.049 181.446 111.199 179.71 111.505C180.046 113.126 179.989 114.799 179.547 116.388C182.568 114.968 185.768 113.961 189.06 113.397C188.35 112.232 186.983 111.593 185.27 111.326Z" fill="#4B4B4B" stroke="#4B4B4B"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M99.9699 111.032C102.058 105.763 108.436 103.115 114.66 107.776C116.293 108.997 118.715 113.037 121.647 119.006C125.492 114.5 126.044 107.127 119.895 101.472C111.932 93.7627 101.148 95.2886 97.3205 103.428C96.419 105.414 96.021 107.592 96.1616 109.769C96.3022 111.945 96.9773 114.054 98.1269 115.907C98.9512 113.68 99.5867 112.009 99.9699 111.032Z" fill="#BB1F61"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M92.2804 73.1543C86.1683 75.9072 80.7163 79.9366 76.2905 84.9716C75.0361 86.4516 73.9069 88.0337 72.9147 89.701C72.5413 90.1716 72.2642 90.7113 72.0994 91.289C71.9344 91.8667 71.8849 92.4713 71.9537 93.0681C72.0224 93.665 72.208 94.2424 72.4999 94.7676C72.7919 95.2927 73.1843 95.7551 73.6549 96.1287C74.1257 96.5021 74.6652 96.7792 75.243 96.944C75.8207 97.109 76.4253 97.1585 77.0222 97.0897C78.2275 96.9509 79.3284 96.3389 80.0826 95.3885C81.7078 93.6061 83.4901 92.1422 85.0781 90.5901C88.2764 87.407 91.9905 84.7883 96.0628 82.8447C92.4389 79.7336 91.5043 76.0724 92.2804 73.1543Z" fill="#BB1F61"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M141.312 86.1058C130.81 76.6139 120.746 71.7577 111.433 70.502C112.769 71.6455 113.686 73.2 114.043 74.9215C114.398 76.6429 114.172 78.4339 113.4 80.0132C121.85 81.1497 129.518 85.5483 134.766 92.2675C135.588 93.1173 136.71 93.6092 137.891 93.6371C139.072 93.6648 140.217 93.226 141.077 92.4159C141.937 91.6057 142.443 90.4893 142.485 89.3084C142.528 88.1276 142.105 86.9776 141.306 86.1072L141.312 86.1058Z" fill="#BB1F61"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M96.6408 37.625C83.434 41.4405 68.6778 48.8124 60.0391 58.7895C58.0438 61.1972 56.2626 63.7746 54.7155 66.4922C54.0303 67.4931 53.7706 68.7254 53.9939 69.9177C54.2171 71.1101 54.9048 72.1649 55.9058 72.8502C56.9068 73.5354 58.139 73.7951 59.3314 73.5718C60.5237 73.3487 61.5786 72.6608 62.2639 71.6599C64.5718 68.6436 67.1176 65.8172 69.877 63.2074C73.455 59.298 77.5111 55.8547 81.9494 52.9587C86.2927 50.3329 91.0723 48.5083 96.0605 47.5718C96.2286 44.5737 96.4244 41.2158 96.6408 37.625Z" fill="#BB1F61"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M158.954 66.9419C155.815 62.027 152.067 57.5287 147.8 53.5546C145.961 51.8095 144.143 50.1085 142.207 48.5922C133.922 42.1524 124.099 37.9851 113.71 36.502C113.499 40.6138 113.315 43.8573 113.158 46.4446C122.357 46.7465 129.931 48.8141 137.744 54.5016C142.5 57.9628 146.501 61.8528 151.104 71.2978C151.681 72.3398 152.651 73.1093 153.796 73.4373C154.941 73.7652 156.17 73.6246 157.212 73.0463C158.254 72.4682 159.023 71.4999 159.351 70.3543C159.679 69.2086 159.539 67.9798 158.961 66.9378L158.954 66.9419Z" fill="#BB1F61"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M178.532 57.6412C173.825 41.5342 160.556 24.6525 146.674 14.6175C134.505 5.82035 120.228 -0.21862 105.669 0.00606518C87.318 0.291401 58.7113 14.845 42.1052 37.0833C39.0135 41.4142 36.2595 45.9764 33.8676 50.7298C33.556 51.2558 33.3531 51.839 33.2708 52.4448C33.1886 53.0506 33.2286 53.6668 33.3885 54.2569C33.5485 54.847 33.8252 55.3991 34.2022 55.8804C34.5792 56.3618 35.0488 56.7626 35.5834 57.0594C36.1181 57.356 36.7067 57.5425 37.3146 57.6079C37.9225 57.6731 38.5372 57.6159 39.1227 57.4394C39.7081 57.263 40.2522 56.9709 40.7228 56.5807C41.1934 56.1903 41.581 55.7096 41.8626 55.1669C44.1746 51.4529 46.6986 47.8749 49.422 44.451C55.5174 36.3182 62.2978 28.3316 70.4017 22.3712C78.6723 16.2854 88.0706 11.6994 98.3056 10.8682L98.4572 8.5083C98.5757 6.32072 99.5586 4.26997 101.189 2.80695C102.819 1.34392 104.965 0.58855 107.151 0.706999C109.339 0.825448 111.39 1.80802 112.854 3.43855C114.316 5.0691 115.072 7.21394 114.953 9.40152L114.877 11.2045C124.623 12.3741 133.971 15.7521 142.214 21.081C157.467 31.0816 165.699 43.6956 169.867 60.0066C170.197 61.1376 170.959 62.0939 171.987 62.6689C173.016 63.2439 174.229 63.3919 175.366 63.081C176.502 62.77 177.471 62.0249 178.063 61.0064C178.655 59.9878 178.824 58.7773 178.532 57.6357V57.6412Z" fill="#BB1F61"/>
|
||||
<path d="M106.941 4.5459C108.123 4.60888 109.232 5.13403 110.03 6.00879C110.828 6.88431 111.249 8.03849 111.202 9.2207C109.146 52.3158 108.895 50.3702 108.023 61.168V61.1758C107.939 62.33 107.405 63.4038 106.535 64.166L106.534 64.167C105.664 64.9296 104.53 65.3198 103.375 65.2529C102.221 65.186 101.139 64.6668 100.364 63.8086L100.222 63.6445C99.5381 62.8092 99.1836 61.7491 99.231 60.666V60.6621C99.2359 60.5354 99.1756 60.6113 102.207 8.74219L102.208 8.74316C102.287 7.56149 102.827 6.45904 103.713 5.67383V5.67285C104.599 4.88748 105.759 4.48304 106.941 4.5459Z" fill="#F8B42A" stroke="white" stroke-width="2"/>
|
||||
<path d="M98.2886 71.6221C99.6893 70.9953 101.499 70.7385 103.25 70.8672L103.229 70.9727L104.362 71.0654C106.56 71.2461 109.046 72.8124 110.037 74.8232C110.513 75.79 110.634 76.834 110.249 77.9023C109.858 78.9844 108.903 80.2093 106.997 81.4287C106.067 81.9422 105.043 82.2659 103.986 82.3789C102.483 82.4464 100.386 81.5851 98.6323 80.1152C96.8625 78.6321 95.7489 76.7923 95.8071 75.1758L95.8091 75.1279L95.8062 75.0791C95.7118 73.5196 96.6284 72.365 98.2886 71.6221Z" fill="#F8B42A" stroke="white" stroke-width="2"/>
|
||||
<path d="M107.795 109.307C109.432 109.296 111.019 109.868 112.273 110.921L112.284 110.931L112.295 110.938C112.766 111.291 113.407 112.078 114.201 113.32C114.984 114.546 115.885 116.164 116.885 118.124C118.886 122.043 121.271 127.3 123.897 133.458C129.148 145.772 135.35 161.662 141.347 177.602C153.347 209.491 164.513 241.528 165.623 245.511V245.513C165.959 246.701 165.839 247.967 165.293 249.068L165.178 249.286C164.536 250.434 163.464 251.28 162.197 251.639C160.93 251.997 159.573 251.837 158.424 251.194C157.275 250.552 156.428 249.48 156.07 248.213V248.212L155.495 246.263L155.398 245.942L155.066 245.909L148.67 245.252C117.271 241.969 94.4975 238.727 73.1472 235.097L72.7107 235.022L72.5837 235.448C71.4117 239.4 70.4556 243.412 69.7195 247.467L69.4177 249.207L69.4167 249.212C69.2105 250.539 68.4852 251.731 67.4011 252.522V252.523C66.3168 253.316 64.9617 253.646 63.6345 253.44C62.3068 253.233 61.1148 252.508 60.322 251.424H60.323C59.5301 250.338 59.2007 248.984 59.407 247.656V247.655C60.2057 242.402 63.0926 232.015 67.0583 219.183C71.0196 206.365 76.0445 191.143 81.1052 176.241C91.228 146.433 101.484 117.923 103.637 112.49L103.641 112.479C103.963 111.61 104.526 110.85 105.263 110.288C105.997 109.729 106.875 109.388 107.795 109.307ZM142.966 214.125C122.553 218.659 107.434 222.718 93.071 227.036L93.1628 228.013C116.051 230.398 134.237 233.035 151.032 235.179L151.846 235.283L151.565 234.512C149.096 227.729 146.351 221.052 143.535 214.412L143.052 214.51L142.966 214.125ZM86.3171 197.236C84.7337 201.593 83.0811 205.897 81.4382 210.192C79.796 214.486 78.1632 218.772 76.6228 223.086L76.3103 223.962L77.2136 223.74C96.4517 219.016 110.26 215.037 126.406 209.808L127.897 209.325L126.402 208.855C120.844 207.111 97.717 199.073 86.8845 196.917L86.4636 196.833L86.3171 197.236ZM125.397 169.326C118.735 174.3 106.529 183.376 98.071 189.438L97.2781 190.006L98.2019 190.317C101.979 191.592 108.506 193.25 115.64 195.083C122.789 196.92 130.565 198.936 136.881 200.935L137.916 201.262L137.492 200.263C128.854 179.907 128.043 176.064 126.177 169.586L125.646 169.66L125.397 169.326ZM98.196 153.9C95.9839 162.071 93.3158 170.861 91.3503 179.369L91.0515 180.665L92.1296 179.888C99.4177 174.637 109.433 167.641 116.317 162.858L117.019 162.37L116.251 161.998L98.8972 153.581L98.3542 153.317L98.196 153.9ZM108.935 122.43C107.135 126.641 106.372 128.998 105.561 131.728C104.754 134.445 103.9 137.523 101.91 143.202L101.734 143.701L102.244 143.848C102.251 143.851 102.315 143.876 102.47 143.946C102.622 144.015 102.829 144.111 103.085 144.232C103.596 144.474 104.295 144.811 105.119 145.211C106.765 146.011 108.904 147.061 111.025 148.106C113.146 149.151 115.247 150.191 116.818 150.97C117.604 151.359 118.257 151.683 118.714 151.909C118.942 152.022 119.122 152.111 119.244 152.172C119.305 152.202 119.352 152.226 119.384 152.241C119.399 152.249 119.411 152.255 119.419 152.259C119.423 152.261 119.425 152.263 119.427 152.264C119.428 152.264 119.43 152.264 119.43 152.265L119.613 151.896L120.14 151.696C119.454 149.131 117.671 142.863 115.666 136.713C114.663 133.638 113.603 130.587 112.595 128.041C111.595 125.514 110.626 123.427 109.795 122.325L109.274 121.636L108.935 122.43Z" fill="#4B4B4B" stroke="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 17 KiB |
20
assets/images/ui/formulario.svg
Normal file
20
assets/images/ui/formulario.svg
Normal file
@@ -0,0 +1,20 @@
|
||||
<svg width="135" height="239" viewBox="0 0 135 239" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M84.7734 43.7061C92.218 42.9847 97.3247 42.9606 100.951 43.9082C102.767 44.3826 104.214 45.1008 105.398 46.0986C106.583 47.0965 107.499 48.3704 108.26 49.9482C109.778 53.0989 110.678 57.4794 111.833 63.335C115.793 83.4096 117.335 93.3933 119.382 105.95C121.429 118.506 123.982 133.637 129.963 164.008L130.597 167.276C133.619 183.094 134.423 191.13 134.216 196.445C134.105 199.282 133.707 201.344 133.207 203.396C132.707 205.45 132.108 207.487 131.59 210.29C130.974 213.62 129.823 216.4 128.027 218.77C126.232 221.139 123.795 223.094 120.613 224.777C114.253 228.142 104.902 230.433 91.7109 232.796C78.9447 235.083 63.2261 238.433 50.0527 238.074C43.4654 237.895 37.5025 236.789 32.8584 234.15C28.2096 231.509 24.8877 227.336 23.583 221.043C16.7947 188.302 17.2018 181.741 5.45605 118.028C2.3904 101.4 0.0341486 89.5916 0.101562 80.5312C0.135299 75.9983 0.775272 72.1467 2.23926 68.7197C3.70354 65.2921 5.99023 62.2942 9.30762 59.4648C12.569 56.2091 17.637 54.1604 24.9922 52.4805C32.3536 50.7991 42.0257 49.4825 54.5039 47.7041C67.5247 45.8485 77.3261 44.4277 84.7734 43.7061ZM4.99316 68.1504C4.25731 69.7638 3.64277 71.0642 3.20801 72.5752C2.70317 74.33 2.44309 76.3721 2.53809 79.5156C2.72829 85.8086 4.33927 96.4941 8.23438 118.078C13.134 145.232 16.5043 165.795 19.1387 181.433C21.7733 197.072 23.6719 207.783 25.6279 215.238C27.5844 222.696 29.5945 226.878 32.4404 229.479C35.2863 232.079 38.9811 233.112 44.3506 234.231C49.8354 235.375 55.4952 235.425 61.0488 234.522C76.1551 232.065 92.2736 230.099 105.018 226.843C111.389 225.215 116.908 223.266 121.031 220.777C125.027 218.365 127.7 215.452 128.576 211.841C125.691 214.764 121.589 216.998 116.01 218.9C110.269 220.858 102.956 222.467 93.7861 224.109C81.0214 226.397 65.9073 229.792 53.3389 229.479C47.0534 229.323 41.3925 228.239 36.9746 225.617C32.5523 222.993 29.3834 218.831 28.0791 212.54C21.2915 179.793 21.56 176.546 9.81445 112.827C7.69154 101.308 6.03151 92.1023 5.15234 84.6875C4.33141 77.7637 4.19076 72.392 4.99316 68.1504ZM96.5586 46.8506C80.8765 46.9526 51.3231 51.7882 30.9902 54.8965C23.8174 55.994 18.5518 57.1904 14.8174 59.1074C11.0911 61.0204 8.89032 63.6503 7.84277 67.627C6.79276 71.6129 6.90043 76.9558 7.8125 84.2939C8.72431 91.63 10.4374 100.946 12.5898 112.874C22.3913 167.186 26.4225 194.811 30.2266 209.14C32.1289 216.305 33.9692 220.121 36.4268 222.287C38.8821 224.452 41.9688 224.985 46.4189 225.537C51.99 226.228 57.5747 226.731 63.124 225.828C72.2808 224.338 86.2794 222.605 99.1641 219.896C105.606 218.542 111.764 216.944 116.896 215.014C122.03 213.082 126.122 210.82 128.444 208.146C129.765 206.623 130.567 204.222 130.996 201.335C131.425 198.45 131.48 195.095 131.317 191.678C130.993 184.844 129.801 177.776 129.013 173.766C123.26 144.51 119.308 121.939 116.377 104.539C113.445 87.138 111.535 74.9131 109.863 66.3477C109.028 62.0654 108.253 58.7009 107.44 56.0635C106.628 53.4254 105.78 51.5203 104.802 50.1533C103.826 48.7892 102.719 47.9598 101.385 47.4727C100.047 46.9844 98.4729 46.8382 96.5586 46.8506Z" fill="#4B4B4B" stroke="#4B4B4B" stroke-width="0.2"/>
|
||||
<path d="M101.49 57.21C101.861 57.1465 102.233 57.3159 102.531 57.6426C102.829 57.9694 103.072 58.4694 103.211 59.1338L103.601 61.0596C105.739 71.9372 110.684 101.088 115.287 129.577C117.742 144.773 120.101 159.784 121.885 171.737C123.667 183.683 124.878 192.592 125.035 195.574L125.037 195.716C125.029 196.039 124.931 196.307 124.764 196.511C124.574 196.742 124.31 196.868 124.04 196.901C123.509 196.967 122.909 196.672 122.734 196.042C121.931 193.146 120.333 184.326 118.342 172.458C116.349 160.581 113.961 145.632 111.578 130.462C106.813 100.12 102.071 68.899 100.563 59.5957C100.455 58.9256 100.502 58.3745 100.665 57.9668C100.828 57.5586 101.118 57.2738 101.49 57.21Z" fill="#4B4B4B" stroke="#4B4B4B" stroke-width="0.5"/>
|
||||
<path d="M15.251 71.4902C15.5078 71.3505 15.8217 71.3207 16.0986 71.5107C16.3589 71.6895 16.5319 72.0274 16.6201 72.4941H16.6221C19.6174 88.4149 38.271 199.53 40.1914 210.82L40.2031 210.916C40.2391 211.386 39.9381 211.737 39.583 211.853C39.3936 211.914 39.1767 211.914 38.9824 211.818C38.7838 211.721 38.635 211.537 38.5625 211.286C37.93 209.092 36.2115 200.364 33.9668 188.278C31.7203 176.183 28.9428 160.705 26.1924 144.997C20.6927 113.587 15.2965 81.2347 14.4639 73.168C14.3901 72.4498 14.762 71.7564 15.251 71.4902Z" fill="#4B4B4B" stroke="#4B4B4B" stroke-width="0.5"/>
|
||||
<path d="M96.7695 52.9111C96.9469 52.9008 97.1636 52.9122 97.3789 53.0508C97.5885 53.1857 97.7624 53.4191 97.9141 53.7744L97.7061 53.8613L97.7979 54.0947L97.7959 54.0957L97.5586 54.2139L97.54 54.1709C94.7078 54.9879 92.3029 55.4051 89.9883 55.7715C87.6134 56.1474 85.342 56.4719 82.7891 57.127C81.3388 57.4991 80.4273 58.0168 79.7725 58.6055C79.1134 59.198 78.6997 59.8741 78.2539 60.6025C77.8108 61.3266 77.3383 62.0982 76.5674 62.8184C75.794 63.5409 74.7311 64.2018 73.1143 64.7393C68.9564 66.1208 62.47 67.7888 56.2207 68.2871C53.096 68.5363 50.0202 68.4945 47.3203 67.9727C44.7908 67.4837 42.5727 66.5697 40.957 65.0625L40.6416 64.7529C39.4718 63.5425 37.4559 63.146 35 63.2637C32.5576 63.3807 29.7505 64.003 27.0762 64.7461C24.4016 65.4892 21.8818 66.3469 19.998 66.9355C19.0612 67.2283 18.2743 67.4571 17.7119 67.5664C17.4343 67.6204 17.1901 67.6494 17.0029 67.6348C16.9099 67.6275 16.8073 67.6076 16.7188 67.5566C16.6202 67.4999 16.5426 67.4055 16.5215 67.2773C16.4624 66.9197 16.6138 66.6432 16.8301 66.4453C17.0368 66.2564 17.3144 66.1263 17.5586 66.0303C25.0895 63.0833 29.9657 61.6567 33.3125 61.167C36.6697 60.6757 38.5107 61.1234 39.9521 61.9424C40.6614 62.3454 41.2682 62.8359 41.8936 63.3174C42.523 63.802 43.1825 64.2875 44.0186 64.709C45.6842 65.5486 48.0887 66.1536 52.3818 65.9111H52.3828C58.3195 65.5829 64.2095 64.6717 69.9678 63.1904L70.6152 63.0166C73.7411 62.143 75.1702 61.2216 75.9492 60.332C76.3646 59.8576 76.605 59.3808 76.8193 58.8936C77.0307 58.413 77.2261 57.8956 77.541 57.4014C78.1901 56.3828 79.3316 55.4743 82.1289 54.7139C84.9205 53.955 89.3986 53.3337 96.7695 52.9111Z" fill="#4B4B4B" stroke="#4B4B4B" stroke-width="0.5"/>
|
||||
<path d="M118.41 202.523C119.09 202.268 119.685 202.422 120.008 202.783C120.167 202.961 120.258 203.191 120.238 203.43C120.219 203.673 120.086 203.896 119.857 204.056C115.543 207.069 109.274 209.64 102.149 211.729C95.0205 213.821 87.0174 215.436 79.2246 216.53C71.4319 217.625 63.8432 218.201 57.542 218.211C54.3916 218.216 51.5595 218.079 49.1826 217.795C46.81 217.511 44.8748 217.079 43.5273 216.482C43.4383 216.443 43.3485 216.368 43.2734 216.294C43.1927 216.214 43.1074 216.113 43.0293 216C42.8778 215.781 42.7279 215.483 42.7188 215.18C42.714 215.023 42.7478 214.859 42.8428 214.709C42.9377 214.559 43.0832 214.442 43.2725 214.358C43.6409 214.197 44.2035 214.151 45.0156 214.246C70.5948 217.249 94.593 211.502 118.41 202.523Z" fill="#4B4B4B" stroke="#4B4B4B" stroke-width="0.5"/>
|
||||
<path d="M53.7617 55.4521C54.5136 54.8184 55.3923 54.6639 56.1973 54.877C57.7947 55.3 59.0489 57.1431 58.5703 59.3643C58.2758 60.7304 57.6907 61.5964 56.9512 62.0518C56.2115 62.5072 55.3605 62.5247 54.5918 62.2822C53.8255 62.0404 53.1223 61.5357 52.6504 60.9131C52.1816 60.2945 51.9237 59.5328 52.1025 58.7822C52.4138 57.1653 53.0156 56.0812 53.7617 55.4521Z" fill="#4B4B4B" stroke="#4B4B4B" stroke-width="0.5"/>
|
||||
<path d="M64.8643 54.915L64.9004 54.918L64.9346 54.9307C66.4126 55.4866 66.9968 56.7155 66.8145 57.7783C66.724 58.3053 66.4439 58.7876 65.9971 59.1064C65.6042 59.3867 65.0964 59.5304 64.5039 59.4824L64.2441 59.4502C62.8255 59.209 62.1658 58.015 62.2715 56.9199C62.3244 56.3722 62.5691 55.8396 63.0107 55.458C63.3995 55.1221 63.9268 54.915 64.5781 54.9062L64.8643 54.915Z" fill="#4B4B4B" stroke="#4B4B4B" stroke-width="0.5"/>
|
||||
<path d="M55.4926 30.7439C54.7251 32.1441 53.0714 31.8053 52.498 28.2012C50.0856 13.0275 50.9226 5.97136 50.9472 2.78284C50.9718 -0.313 55.0118 -2.53859 55.5273 5.81498C55.6967 8.55751 56.8132 28.3359 55.4926 30.7439Z" fill="#F8B42A"/>
|
||||
<path d="M31.6024 33.9652C31.6212 41.0011 19.4476 25.881 9.66466 14.2071C9.05793 13.4831 7.89805 11.4805 8.57863 10.8246C10.5176 8.95374 19.103 19.7327 29.1161 29.8471C30.36 31.1025 31.3172 32.5157 31.6024 33.9652Z" fill="#F8B42A"/>
|
||||
<path d="M88.601 2.73636C88.142 5.71926 81.6388 23.7325 78.3402 29.8909C77.1803 32.0571 74.6535 31.42 75.0532 29.2914C75.9046 24.7548 88.0478 -7.51554 88.601 2.73636Z" fill="#F8B42A"/>
|
||||
<path d="M65.6362 183.944C72.3249 172.233 80.1345 159.948 90.217 149.938C99.2208 140.999 98.1843 143.319 100.414 149.503C105.218 162.83 105.059 157.992 93.1599 169.359C81.3632 180.627 72.4143 193.827 68.2176 199.446C67.2389 200.757 66.6274 200.425 63.5807 198.049C49.8707 187.353 49.7688 187.828 50.486 186.539C53.4809 181.159 53.7693 180.994 57.3891 176.017C58.114 175.019 58.5111 174.98 59.3975 175.868C61.3732 177.847 65.1459 183.201 65.6362 183.944Z" fill="#F8B42A"/>
|
||||
<path d="M97.5715 80.0603C97.911 82.5727 97.911 81.866 53.1367 88.501C27.8898 92.242 32.5739 91.5485 27.8262 92.1532C26.072 92.3764 26.3792 91.6409 24.5926 83.7354C23.8319 80.3723 20.2012 81.6957 54.9785 77.296L94.4891 72.2927C97.5919 71.8248 97.0483 71.6688 97.5715 80.0603ZM95.9493 79.614C95.4369 73.6029 95.9241 73.7949 94.1159 74.0349C93.3816 74.1309 34.5765 81.8648 26.5543 82.6795C25.3737 82.7995 25.8068 82.6591 27.5214 89.8424C27.837 91.1658 27.5826 90.1975 74.0595 83.4642C97.4083 80.0807 96.1413 80.5822 95.9505 79.6128H95.9493V79.614Z" fill="#4B4B4B"/>
|
||||
<path d="M52.0195 112.686C49.531 112.749 49.9642 110.989 51.5192 110.674C56.6425 109.632 59.3049 108.963 75.7966 106.106C100.756 101.783 101.125 101.451 101.368 102.97C101.638 104.655 101.596 104.262 71.6272 109.547C68.1105 110.167 55.5746 112.35 52.0195 112.686Z" fill="#BB1F61"/>
|
||||
<path d="M33.7309 122.28C31.9431 122.658 32.369 122.405 29.8566 110.165C29.3059 107.479 29.0107 107.836 42.0793 105.694C42.6732 105.597 43.7159 105.274 43.8191 105.883C44.149 107.842 39.5093 108.315 32.8154 109.476C31.066 109.78 31.6299 109.678 33.8052 119.674C34.0656 120.871 34.1544 119.95 43.5671 118.397C44.7406 118.203 44.4706 117.076 44.0087 115.104C43.6907 113.745 45.3681 111.526 45.608 112.748C46.9087 119.378 47.307 119.883 45.7208 120.143C40.342 121.025 37.2128 121.847 33.7309 122.279V122.28Z" fill="#BB1F61"/>
|
||||
<path d="M39.2027 117.842C38.9147 117.725 38.478 117.656 38.2008 117.411C36.815 116.189 33.8706 114.316 34.6949 113.378C35.7172 112.213 38.4972 116.726 39.6442 114.816C42.6798 109.763 50.3012 100.594 50.324 100.561C51.2922 99.2019 52.5437 100.421 51.9305 101.556C49.9028 105.309 44.5012 111.312 42.6174 114.161C42.2527 114.712 40.0366 117.799 39.2027 117.842Z" fill="#BB1F61"/>
|
||||
<path d="M55.1633 139.351C55.0025 138.044 54.8598 137.854 89.1679 131.992C106.029 129.11 105.825 129.118 106.17 130.326C106.605 131.851 106.348 131.661 86.5198 135.241C55.0685 140.92 55.3169 140.588 55.1633 139.351Z" fill="#BB1F61"/>
|
||||
<path d="M50.7106 139.977C52.1384 146.926 52.6867 147.592 50.9577 147.862C37.8051 149.911 37.7187 151.267 37.1764 148.338C36.3065 143.643 35.2459 139.13 35.0011 137.353C34.6796 135.021 34.8799 135.529 47.747 133.349C48.4513 133.23 49.5095 133.275 48.9936 134.02C47.807 135.735 47.6162 135.503 37.4848 137.348C36.4217 137.541 36.8201 137.456 39.0662 147.599C39.2017 148.211 39.1273 148.019 46.4367 146.564C49.0128 146.051 49.6931 146.23 49.5275 144.946C49.2336 142.667 48.6504 141.325 50.7106 139.977Z" fill="#BB1F61"/>
|
||||
<path d="M57.4073 128.715C55.8691 131.752 51.2582 137.469 49.2952 139.827C45.289 144.637 45.6417 146.845 42.8869 144.678C41.765 143.795 39.2538 142.051 39.9317 141.111C40.2305 140.696 40.462 140.614 43.4892 142.837C44.8438 143.832 43.8924 143.088 51.5221 133.328C55.9771 127.628 55.9951 127.495 56.7018 127.748C57.1374 127.904 57.3137 128.215 57.4085 128.718L57.4073 128.715Z" fill="#BB1F61"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
80
assets/images/ui/logo_sf.svg
Normal file
80
assets/images/ui/logo_sf.svg
Normal file
@@ -0,0 +1,80 @@
|
||||
<svg width="271" height="90" viewBox="0 0 271 90" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M163.839 22.1299V22.1193C163.897 21.4788 164.066 20.0864 164.457 18.7735C164.558 18.4082 164.685 18.0588 164.827 17.7252L164.996 17.3282C165.519 16.1211 165.778 15.5176 166.095 14.9988C167.727 12.2829 170.189 10.4882 173.058 9.84229C173.026 9.36052 173.026 9.03229 173.026 9.03229V7.95758C172.73 4.27816 170.305 1.58346 167.278 0.524634C167.273 0.51934 167.268 0.514046 167.252 0.514046C166.555 0.270516 165.82 0.111693 165.075 0.0481632C165.075 0.037575 165.118 0.0587516 165.118 0.0481632C162.931 -0.184778 160.617 0.418751 158.668 2.04405C157.917 2.67405 157.426 3.42581 156.919 4.1564C156.903 4.18816 156.85 4.25699 156.845 4.28875C156.465 4.83405 156.063 5.36346 155.509 5.79758C154.267 6.78229 152.593 7.38052 151.071 7.7564L151.135 7.79346C151.135 7.79346 151.103 7.80405 151.076 7.80405L151.145 7.8464L152.825 8.77817C153.639 9.30758 154.193 9.76287 154.579 10.2552C155.213 11.1076 155.355 12.0817 155.519 13.7282C155.931 17.9264 155.287 22.437 155.667 26.5452C155.699 26.9105 155.773 27.2864 155.873 27.6676C156.195 29.4252 157.194 31.3788 158.499 32.4588C160.981 34.5023 163.728 35.6987 166.185 36.7205C166.454 36.8317 166.718 36.9429 166.977 37.0488C165.841 35.4023 164.996 33.5282 164.457 31.4529C163.728 28.7158 163.517 25.6029 163.823 22.1511V22.1405L163.839 22.1299ZM160.691 7.62405C159.571 7.25876 159.587 5.37935 160.913 5.16758H160.944C162.154 5.2364 162.461 7.19523 161.436 7.53405C161.156 7.62934 160.907 7.64523 160.696 7.62405H160.691Z" fill="url(#paint0_linear_274_10060)"/>
|
||||
<path d="M169.457 29.4034C169.526 29.7157 169.605 30.0281 169.695 30.3405C170.519 33.2152 172.077 35.4969 174.174 37.0322C176.367 38.6416 179.151 39.4305 182.299 39.224C184.444 39.0863 186.456 38.1916 188.4 37.3657C189.124 38.2552 189.901 39.1234 190.529 40.0816C191.449 41.4952 191.739 42.1199 192.061 42.6281C192.489 43.3005 192.938 43.2952 193.646 42.9457C195.125 42.2046 197.112 40.3675 198.258 39.1446C198.607 38.774 199.415 37.9428 199.653 37.5669C199.922 37.1381 199.864 36.6246 199.489 36.291C196.52 33.861 194.75 33.5381 191.935 30.9334C189.008 28.2334 186.858 23.8605 184.211 20.7263C182.574 18.7887 180.26 16.7187 177.793 15.8346C177.059 15.5699 176.319 15.411 175.574 15.3952C175.553 15.3952 175.532 15.3952 175.511 15.3952C174.412 15.3793 173.318 15.6652 172.267 16.3693C172.251 16.3799 172.23 16.3905 172.214 16.401C171.961 16.5757 171.707 16.7716 171.459 16.994C171.369 17.0734 171.279 17.1581 171.195 17.2428C171.153 17.2852 171.1 17.354 171.047 17.4122C171.042 17.4175 171.036 17.4281 171.031 17.4334C170.989 17.481 170.957 17.5234 170.941 17.534C170.181 18.434 169.668 19.551 169.515 20.7793C169.52 20.7899 169.526 20.8005 169.531 20.811C169.515 20.9434 169.494 21.0757 169.478 21.2081C169.103 23.9875 168.876 26.661 169.467 29.3981L169.457 29.4034ZM173.26 19.1593C173.498 18.7834 173.9 18.5293 174.46 18.5769C175.49 18.6616 175.844 19.5828 175.659 20.361C175.516 20.9646 175.046 21.4781 174.317 21.4569C173.033 21.4146 172.732 19.9905 173.26 19.1646V19.1593Z" fill="url(#paint1_linear_274_10060)"/>
|
||||
<path d="M137.649 19.4633C135.082 22.6239 131.69 22.8622 130.333 22.9363C129.736 22.968 129.186 22.9945 128.97 23.0792C128.922 23.1004 129.044 23.1904 129.059 23.2169C131.997 27.8069 136.186 32.1586 142.092 31.698C144.553 31.5075 147.084 30.528 148.864 28.7916C151.722 25.9963 152.219 21.8828 151.88 18.0604C151.88 18.0604 151.733 16.5251 151.394 15.7363C151.051 14.9475 150.718 14.2592 150.597 14.0316C150.459 13.788 150.385 13.6663 150.264 13.5022C150.021 13.1686 149.651 12.5333 148.79 11.7922C147.38 10.5692 146.175 10.3151 146.328 10.3892C146.434 10.4422 146.629 10.7228 146.629 11.0669C146.371 10.9663 146.091 10.8657 145.79 10.7704C142.852 9.82805 140.834 10.2516 141.12 10.2622C141.405 10.2728 142.314 10.9186 142.076 12.0039C141.88 12.8933 141.368 13.4916 140.782 14.5239C140.195 15.5563 138.927 17.891 137.649 19.4686V19.4633ZM146.783 15.2386C146.867 14.6033 147.459 14.1533 148.093 14.238C148.727 14.3228 149.176 14.9157 149.091 15.551C149.007 16.1863 148.415 16.6363 147.781 16.5516C147.147 16.4669 146.698 15.8739 146.783 15.2386Z" fill="url(#paint2_linear_274_10060)"/>
|
||||
<path d="M79.4121 49.0403C78.72 48.6803 77.9276 48.6167 77.1722 48.8656C76.4168 49.1144 75.7987 49.6438 75.4289 50.3585L67.3993 66.0344L59.375 49.9561C58.8573 48.9238 57.8377 48.2832 56.7072 48.2832C56.2529 48.2832 55.8092 48.3891 55.3866 48.5903C53.8916 49.3367 53.3052 51.0838 54.0342 52.6561L64.7263 74.0286C65.2493 75.0768 66.2477 75.7015 67.4046 75.7015C68.5615 75.7015 69.5071 75.0609 70.0195 74.0338L80.7274 53.0374C81.092 52.3332 81.1501 51.5285 80.9018 50.7767C80.6535 50.0303 80.1252 49.4109 79.4068 49.0456L79.4121 49.0403Z" fill="url(#paint3_linear_274_10060)"/>
|
||||
<path d="M13.4737 59.3668C12.5017 59.1445 11.5931 59.0809 10.7162 59.0227L10.2513 58.9909C8.92535 58.9274 7.67336 58.8692 6.84927 58.2974C6.02518 57.7415 5.34371 56.6668 5.63954 55.6609C5.97235 54.4009 7.2666 53.3686 8.788 53.1409C10.8165 52.8446 13.03 53.4056 14.5514 54.6074C15.74 55.5127 17.4621 55.3062 18.4077 54.1415C19.3269 52.9609 19.1209 51.2404 17.9376 50.3087C15.2223 48.2228 11.5244 47.2646 8.03787 47.7516C4.36115 48.2863 1.2708 50.8804 0.346337 54.205C-0.514735 57.3127 0.874603 60.8386 3.73252 62.7762C5.80331 64.1792 7.98504 64.3062 9.9766 64.4174C10.806 64.4545 11.5878 64.4862 12.2693 64.6556C13.7748 64.9892 14.8472 66.2439 14.7574 67.5727C14.6676 69.0603 12.9613 69.9709 11.4082 70.1933C8.9412 70.5533 6.27874 69.6533 4.78905 67.9486C3.83289 66.8156 2.11603 66.6727 0.959125 67.6362C-0.18721 68.6368 -0.324559 70.3203 0.647449 71.4692C2.90842 74.1162 6.52703 75.6939 10.3358 75.6939C10.9539 75.6939 11.5931 75.6568 12.1953 75.5774C15.8773 75.0427 19.9608 72.4062 20.2355 67.8903C20.4732 63.9092 17.5625 60.2403 13.479 59.3509L13.4737 59.3668Z" fill="url(#paint4_linear_274_10060)"/>
|
||||
<path d="M51.1865 61.791V72.8716C51.1865 74.5127 50.0032 75.6986 48.3656 75.6986C47.2351 75.6986 45.6556 74.5127 45.6556 72.8716C43.2309 74.9098 40.5209 75.6986 37.309 75.6986C29.3533 75.6986 23.0353 69.7586 23.0353 61.791C23.0353 53.8233 29.3533 47.4863 37.309 47.4863C45.2647 47.4863 51.1865 53.818 51.1865 61.791ZM45.6556 61.791C45.6556 57.0422 42.0423 53.0292 37.309 53.0292C32.5757 53.0292 28.5609 57.0422 28.5609 61.791C28.5609 66.5398 32.5652 70.161 37.309 70.161C42.0528 70.161 45.6556 66.5398 45.6556 61.791Z" fill="url(#paint5_linear_274_10060)"/>
|
||||
<path d="M111.911 61.5113C111.911 63.036 110.669 64.2801 109.09 64.2801H89.6234C90.8067 67.6737 93.971 70.1037 97.7481 70.1037C99.0476 70.1037 101.361 69.9872 104.066 68.2349C105.366 67.3878 107.114 68.1766 107.79 69.5372C108.467 70.9507 107.738 72.4225 106.438 73.2696C102.714 75.7578 99.8348 75.6996 97.7481 75.6996C89.9034 75.6996 83.5853 69.3096 83.5853 61.506C83.5853 53.7025 89.9034 47.3125 97.7481 47.3125C104.573 47.3125 111.911 52.289 111.911 61.506V61.5113ZM89.6234 58.6843H105.931C104.748 54.7243 101.134 52.919 97.7534 52.919C93.971 52.919 90.812 55.349 89.6287 58.6843H89.6234Z" fill="url(#paint6_linear_274_10060)"/>
|
||||
<path d="M161.804 61.791V72.8716C161.804 74.5127 160.621 75.6986 158.984 75.6986C157.853 75.6986 156.274 74.5127 156.274 72.8716C153.849 74.9098 151.139 75.6986 147.927 75.6986C139.971 75.6986 133.653 69.7586 133.653 61.791C133.653 53.8233 139.971 47.4863 147.927 47.4863C155.883 47.4863 161.804 53.818 161.804 61.791ZM156.274 61.791C156.274 57.0422 152.66 53.0292 147.927 53.0292C143.194 53.0292 139.179 57.0422 139.179 61.791C139.179 66.5398 143.183 70.161 147.927 70.161C152.671 70.161 156.274 66.5398 156.274 61.791Z" fill="url(#paint7_linear_274_10060)"/>
|
||||
<path d="M224.464 48.2754C222.852 48.2754 221.585 49.493 221.585 51.0495V72.8717C221.585 74.4335 222.874 75.6988 224.464 75.6988C225.964 75.6988 227.232 74.4017 227.232 72.8717V51.0495C227.232 49.5195 225.99 48.2754 224.464 48.2754Z" fill="url(#paint8_linear_274_10060)"/>
|
||||
<path d="M224.464 35.9707C222.852 35.9707 221.585 37.2148 221.585 38.7978V39.0783C221.585 40.6083 222.874 41.8472 224.464 41.8472C225.964 41.8472 227.232 40.5766 227.232 39.0783V38.7978C227.232 37.236 225.99 35.9707 224.464 35.9707Z" fill="url(#paint9_linear_274_10060)"/>
|
||||
<path d="M238.292 67.2638V36.5631C238.292 34.9008 236.919 33.5508 235.233 33.5508C233.548 33.5508 232.233 34.9008 232.233 36.5631V66.1521C232.228 68.5556 232.222 70.8268 233.733 72.8015C235.138 74.5909 237.383 75.7027 239.581 75.7027C241.298 75.7027 242.64 74.3579 242.64 72.6374C242.64 70.9168 241.266 69.6303 239.581 69.6303C238.873 69.6303 238.297 69.0268 238.297 68.2856C238.297 68.2221 238.287 68.1585 238.276 68.095C238.26 67.9891 238.244 67.8832 238.244 67.7774C238.244 67.6715 238.26 67.5656 238.276 67.4597C238.287 67.3962 238.297 67.3326 238.297 67.2691L238.292 67.2638Z" fill="url(#paint10_linear_274_10060)"/>
|
||||
<path d="M134.578 36.7869C132.592 34.9551 130.03 33.9492 127.362 33.9492C121.493 33.9492 116.718 38.7351 116.718 44.6169V72.8346C116.718 74.3858 118.028 75.6987 119.576 75.6987C121.123 75.6987 122.492 74.3858 122.492 72.8346V53.2358H128.862C130.22 53.2358 131.324 52.1292 131.324 50.7686C131.324 49.408 130.22 48.3016 128.862 48.3016H122.492V44.6169C122.492 41.8639 124.673 39.6245 127.362 39.6245C128.593 39.6245 129.745 40.0904 130.69 40.9692C131.874 42.0122 133.649 41.9486 134.726 40.8263C135.756 39.7039 135.688 37.8563 134.578 36.7869Z" fill="url(#paint11_linear_274_10060)"/>
|
||||
<path d="M270.946 51.2877C270.946 49.6254 269.625 48.2754 267.998 48.2754C266.371 48.2754 265.108 49.6519 265.108 51.2877V61.5211C265.108 65.6611 262.05 69.0282 258.294 69.0282C254.538 69.0282 251.532 65.6611 251.532 61.5211V51.3989C251.532 49.7683 250.211 48.3919 248.642 48.3919C247.073 48.3919 245.753 49.7683 245.753 51.3989V61.5211C245.753 68.9805 251.379 75.0476 258.294 75.0476C260.449 75.0476 262.604 74.4599 264.533 73.3482L265.108 73.0146V75.9952C265.108 80.3523 261.669 83.8993 257.448 83.8993C255.246 83.8993 253.127 82.9041 251.627 81.1623C251.109 80.5164 250.396 80.1352 249.609 80.077C249.54 80.077 249.472 80.0717 249.403 80.0717C248.716 80.0717 248.066 80.3258 247.549 80.8023C246.339 81.9141 246.202 83.8358 247.248 85.0799C249.826 88.1558 253.539 89.9188 257.448 89.9188C264.892 89.9188 270.946 83.6717 270.946 75.9952V51.2877Z" fill="url(#paint12_linear_274_10060)"/>
|
||||
<path d="M216.617 60.8831V72.9431C216.617 74.4625 215.381 75.696 213.87 75.696C212.359 75.696 211.123 74.4572 211.123 72.9431V60.8831C211.123 56.256 207.383 52.5131 202.771 52.5131C198.16 52.5131 194.414 56.2613 194.414 60.8831V60.2372C194.414 60.0625 194.398 59.8878 194.367 59.7237C194.398 60.1101 194.414 60.4913 194.414 60.8831V72.9431C194.414 74.4625 193.178 75.696 191.667 75.696C190.156 75.696 188.92 74.4572 188.92 72.9431V60.8831C188.92 60.4913 188.936 60.1048 188.968 59.7237C188.936 59.8878 188.92 60.0625 188.92 60.2372V60.8831C188.92 56.256 185.18 52.5131 180.563 52.5131C175.946 52.5131 172.211 56.2613 172.211 60.8831V72.9431C172.211 74.4625 170.975 75.696 169.464 75.696C167.953 75.696 166.717 74.4572 166.717 72.9431V60.8831C166.717 60.4913 166.733 60.1048 166.765 59.7237C167.351 52.5978 173.31 47.002 180.568 47.002C185.111 47.002 189.142 49.1937 191.673 52.582C194.203 49.1937 198.234 47.002 202.777 47.002C210.035 47.002 215.994 52.5978 216.58 59.7237V59.7395C216.612 60.1207 216.628 60.4966 216.628 60.8831H216.617Z" fill="url(#paint13_linear_274_10060)"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_274_10060" x1="180.142" y1="24.4805" x2="158.536" y2="15.0649" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.45" stop-color="#588DA5"/>
|
||||
<stop offset="0.79" stop-color="#66B1BD"/>
|
||||
<stop offset="1" stop-color="#6DC3CA"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_274_10060" x1="194.185" y1="29.864" x2="166.15" y2="28.251" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#BB1F61"/>
|
||||
<stop offset="0.17" stop-color="#BE2565"/>
|
||||
<stop offset="0.39" stop-color="#C93670"/>
|
||||
<stop offset="0.65" stop-color="#DB5283"/>
|
||||
<stop offset="0.82" stop-color="#E96892"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_274_10060" x1="128.954" y1="20.9404" x2="151.976" y2="20.9404" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F8B42A"/>
|
||||
<stop offset="0.44" stop-color="#F19234"/>
|
||||
<stop offset="0.7" stop-color="#EF8439"/>
|
||||
<stop offset="1" stop-color="#DC454A"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_274_10060" x1="62.9038" y1="107.524" x2="75.5467" y2="-49.7807" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_274_10060" x1="6.89682" y1="102.662" x2="19.5397" y2="-54.6376" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_274_10060" x1="34.0655" y1="105.118" x2="46.7084" y2="-52.1869" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_274_10060" x1="93.8442" y1="110.101" x2="106.482" y2="-47.2043" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_274_10060" x1="143.944" y1="114.399" x2="156.587" y2="-42.9063" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint8_linear_274_10060" x1="219.715" y1="120.635" x2="232.352" y2="-36.6697" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint9_linear_274_10060" x1="208.811" y1="129.433" x2="240.784" y2="-55.3031" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint10_linear_274_10060" x1="232.058" y1="121.772" x2="244.696" y2="-35.5331" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint11_linear_274_10060" x1="120.416" y1="112.419" x2="133.058" y2="-44.8864" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint12_linear_274_10060" x1="253.571" y1="123.679" x2="266.214" y2="-33.6202" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint13_linear_274_10060" x1="187.557" y1="117.975" x2="200.2" y2="-39.3302" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#1D1D1B"/>
|
||||
<stop offset="0.82" stop-color="#BEC1C4"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 15 KiB |
3
assets/images/ui/qr.svg
Normal file
3
assets/images/ui/qr.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg width="78" height="78" viewBox="0 0 78 78" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M15.25 62.75V62.7975M15.25 15.25V15.2975M62.75 15.25V15.2975M62.75 48.5H48.5V62.75M77 48.5V48.5475M48.5 77H62.75M62.75 62.75H77V77M1 5.75C1 4.49022 1.50045 3.28204 2.39124 2.39124C3.28204 1.50045 4.49022 1 5.75 1H24.75C26.0098 1 27.218 1.50045 28.1088 2.39124C28.9996 3.28204 29.5 4.49022 29.5 5.75V24.75C29.5 26.0098 28.9996 27.218 28.1088 28.1088C27.218 28.9996 26.0098 29.5 24.75 29.5H5.75C4.49022 29.5 3.28204 28.9996 2.39124 28.1088C1.50045 27.218 1 26.0098 1 24.75V5.75ZM48.5 5.75C48.5 4.49022 49.0004 3.28204 49.8912 2.39124C50.782 1.50045 51.9902 1 53.25 1H72.25C73.5098 1 74.718 1.50045 75.6088 2.39124C76.4996 3.28204 77 4.49022 77 5.75V24.75C77 26.0098 76.4996 27.218 75.6088 28.1088C74.718 28.9996 73.5098 29.5 72.25 29.5H53.25C51.9902 29.5 50.782 28.9996 49.8912 28.1088C49.0004 27.218 48.5 26.0098 48.5 24.75V5.75ZM1 53.25C1 51.9902 1.50045 50.782 2.39124 49.8912C3.28204 49.0004 4.49022 48.5 5.75 48.5H24.75C26.0098 48.5 27.218 49.0004 28.1088 49.8912C28.9996 50.782 29.5 51.9902 29.5 53.25V72.25C29.5 73.5098 28.9996 74.718 28.1088 75.6088C27.218 76.4996 26.0098 77 24.75 77H5.75C4.49022 77 3.28204 76.4996 2.39124 75.6088C1.50045 74.718 1 73.5098 1 72.25V53.25Z" stroke="#4B4B4B" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -1,12 +1,20 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:sf_app_platform/payments/apps/di_container.dart';
|
||||
import 'package:sf_app_platform/payments/domain/entities/kid.dart';
|
||||
import 'package:sf_app_platform/payments/domain/ports/theme_port.dart';
|
||||
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/account_created_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/add_kid_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/alert_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/dashboard_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/errors/connection_error_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/errors/no_plan_error_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/errors/server_error_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/kid_wallet_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/link_phone_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/loading_google_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/loading_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/restore_password/restore_password_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/welcome_screen.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
|
||||
@@ -15,7 +15,7 @@ class ThemeSfAdapter extends ThemePort{
|
||||
ThemeCode.text_primary: Color(0xFF4B4B4B),
|
||||
ThemeCode.text_secondary: Color(0xFFE0E0E0),
|
||||
ThemeCode.button_primary: Color(0xFF329e95),
|
||||
ThemeCode.button_secondary: Color(0x4D329E95)
|
||||
ThemeCode.button_secondary: Color(0xFF4B4B4B)
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
53
lib/payments/view/screens/add_kid_screen.dart
Normal file
53
lib/payments/view/screens/add_kid_screen.dart
Normal file
@@ -0,0 +1,53 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/dashboard_screen.dart';
|
||||
|
||||
class AddKidScreen extends StatelessWidget{
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Column(
|
||||
spacing: 15,
|
||||
children: [
|
||||
Spacer(flex: 6),
|
||||
Text("Añade a tu peque"),
|
||||
Text("Controla su gasto a la vez que aprende hábitos financieros responsables"),
|
||||
Container(
|
||||
margin: EdgeInsets.symmetric(vertical: 30, horizontal: 50),
|
||||
child: Row(
|
||||
children: [
|
||||
Column(
|
||||
children: [
|
||||
Text("1"),
|
||||
Text("2"),
|
||||
Text("3")
|
||||
],
|
||||
),
|
||||
Column(
|
||||
children: [
|
||||
Text("Crea su perfil"),
|
||||
Text("Vincula su correa y su reloj"),
|
||||
Text("Carga su hucha")
|
||||
],
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
Text("¡Y todo listo para que tenga su dinero!"),
|
||||
Text("Recuerda que necesitas tener un Plan SaveFamily"),
|
||||
Text("Si aún no lo tienes, puedes conseguirlo a través de nuestra web"),
|
||||
Spacer(flex: 8),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
child: FilledButton(onPressed: ()=>Navigator.push(context, MaterialPageRoute(builder: (_)=>DashboardScreen())), child: Text("¡Empezar!"))
|
||||
)
|
||||
],
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
95
lib/payments/view/screens/alert_screen.dart
Normal file
95
lib/payments/view/screens/alert_screen.dart
Normal file
@@ -0,0 +1,95 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:sf_app_platform/payments/domain/ports/theme_port.dart';
|
||||
|
||||
class AlertScreen extends StatefulWidget {
|
||||
const AlertScreen({super.key});
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => AlertScreenState();
|
||||
}
|
||||
|
||||
class AlertScreenState extends State<AlertScreen>{
|
||||
|
||||
final activity = [{"type": "goal"}, {"type": "wage", "amount": 5}, {"type": "lock"}, {"type": "lock"}];
|
||||
bool edit = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
edit = false;
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ThemePort theme = context.read<ThemePort>();
|
||||
|
||||
return Scaffold(
|
||||
backgroundColor: theme.getColorFor(ThemeCode.background_secondary),
|
||||
body: Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Text("Alertas"),
|
||||
Spacer(),
|
||||
TextButton(onPressed: ()=>setState((){edit = !edit;}), child: Text("Editar"))
|
||||
],
|
||||
),
|
||||
Column(
|
||||
spacing: 20,
|
||||
children: buildActivity(context, activity, edit)
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
List<Widget> buildActivity(BuildContext context, List activity, bool edit){
|
||||
ThemePort theme = context.read<ThemePort>();
|
||||
|
||||
final colors = [Colors.cyan, Colors.pinkAccent, Colors.deepOrangeAccent, Colors.red];
|
||||
final icons = {"wage": Icons.wallet, "goal": Icons.emoji_events_outlined, "lock": Icons.lock_outline};
|
||||
|
||||
return List<Widget>.generate(activity.length, (int index) {
|
||||
|
||||
var logItem = Container(
|
||||
padding: EdgeInsets.all(20),
|
||||
decoration: BoxDecoration(
|
||||
color: theme.getColorFor(ThemeCode.background_primary),
|
||||
borderRadius: BorderRadius.all(Radius.circular(20)),
|
||||
border: BoxBorder.fromLTRB(left: BorderSide(color: colors[index%colors.length], width: 5))
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Icon(icons[activity[index]["type"]], color: colors[index%colors.length]),
|
||||
Text("Entrega de paga", style: TextStyle(fontWeight: FontWeight.bold)),
|
||||
//Spacer(),
|
||||
Text("14/01/2005")
|
||||
]
|
||||
),
|
||||
Text("Ana tiene ya su paga de 5€ en el reloj")
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
if(edit){
|
||||
return Row(children: [
|
||||
Checkbox(
|
||||
value: true,
|
||||
onChanged: (value)=>{},
|
||||
activeColor: theme.getColorFor(ThemeCode.button_primary),
|
||||
semanticLabel: "Eliminar"),
|
||||
logItem
|
||||
]);
|
||||
} else {
|
||||
return logItem;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -21,10 +21,10 @@ class _DashboardScreenState extends State<DashboardScreen>{
|
||||
final String name = "Juan";
|
||||
final double total = 100;
|
||||
final List<Kid> kids = [
|
||||
Kid(name:"Ana", balance:25),
|
||||
Kid(name:"Carlos", balance:25),
|
||||
Kid(name:"Carlos", balance:25.47),
|
||||
Kid(name:"Ana", balance:25.47),
|
||||
];
|
||||
late final double available = kids.fold(total, (t, e) => t - e.balance);
|
||||
late final double available = double.parse(kids.fold(total, (t, e) => t - e.balance).toStringAsFixed(2));
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -45,72 +45,86 @@ class _DashboardScreenState extends State<DashboardScreen>{
|
||||
NavigationDestination(icon: Icon(Icons.notifications_outlined), label: "Alertas"),
|
||||
],),
|
||||
body: <Widget>[
|
||||
Container(
|
||||
SingleChildScrollView( child: Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Column(
|
||||
children: [
|
||||
Text.rich(
|
||||
TextSpan(
|
||||
text: 'Hola, ',
|
||||
style: TextStyle(),
|
||||
children: <TextSpan>[
|
||||
TextSpan(text: name, style: TextStyle(fontWeight: FontWeight.bold)),
|
||||
],
|
||||
),
|
||||
children: [
|
||||
Text.rich(
|
||||
TextSpan(
|
||||
text: 'Hola, ',
|
||||
style: TextStyle(),
|
||||
children: <TextSpan>[
|
||||
TextSpan(text: name, style: TextStyle(fontWeight: FontWeight.bold)),
|
||||
],
|
||||
),
|
||||
walletsList(context, kids),
|
||||
TextButton(onPressed: ()=>{}, child: Text("+ Añdir otro peque", style: TextStyle(fontWeight: FontWeight.bold))),
|
||||
Container(
|
||||
padding: EdgeInsets.all(20),
|
||||
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(20))),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Text("Wallet", style: TextStyle(fontWeight: FontWeight.bold),),
|
||||
Spacer(),
|
||||
Text("$total€ total")
|
||||
]
|
||||
),
|
||||
Stack(
|
||||
children: [
|
||||
LinearProgressIndicator(
|
||||
value: available/total,
|
||||
minHeight: 70,
|
||||
borderRadius: BorderRadius.all(Radius.circular(16)),
|
||||
),
|
||||
Center(child: Text(available.toString())),
|
||||
],
|
||||
),
|
||||
Center(child: Text("Disponible"))
|
||||
],
|
||||
),
|
||||
),
|
||||
walletsList(context, kids),
|
||||
TextButton(onPressed: ()=>{}, child: Text("+ Añdir otro peque", style: TextStyle(fontWeight: FontWeight.bold))),
|
||||
Container(
|
||||
padding: EdgeInsets.all(20),
|
||||
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(20))),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Text("Wallet", style: TextStyle(fontWeight: FontWeight.bold),),
|
||||
Spacer(),
|
||||
Text("$total€ total")
|
||||
]
|
||||
),
|
||||
Stack(
|
||||
children: [
|
||||
LinearProgressIndicator(
|
||||
value: available/total,
|
||||
minHeight: 70,
|
||||
borderRadius: BorderRadius.all(Radius.circular(16)),
|
||||
),
|
||||
FractionallySizedBox(
|
||||
widthFactor: available/total,
|
||||
child: Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 20),
|
||||
child: Center(
|
||||
child: Text(
|
||||
"$available€",
|
||||
style: TextStyle(color: Colors.white, fontSize: 20)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
],
|
||||
),
|
||||
Center(child: Text("Disponible"))
|
||||
],
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.all(20),
|
||||
child: Column(
|
||||
children: [
|
||||
Text("Ingresar dinero en la cuenta"),
|
||||
TextField(
|
||||
decoration: InputDecoration(labelText: "Cantidad", hintText: "0€"),
|
||||
keyboardType: TextInputType.number,
|
||||
inputFormatters: [
|
||||
FilteringTextInputFormatter.digitsOnly
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
|
||||
FilledButton(onPressed: ()=>{}, child: Text("Ingresar"))
|
||||
],
|
||||
),
|
||||
Text("Máximo que puedes añadir: ${150 - total}€"),
|
||||
],
|
||||
),
|
||||
)
|
||||
]
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.all(20),
|
||||
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.all(Radius.circular(20))),
|
||||
margin: EdgeInsets.only(top: 10),
|
||||
child: Column(
|
||||
children: [
|
||||
Text("Ingresar dinero en el wallets", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20)),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: TextField(
|
||||
decoration: InputDecoration(labelText: "Cantidad", hintText: "0€", border: OutlineInputBorder()),
|
||||
keyboardType: TextInputType.number,
|
||||
inputFormatters: [
|
||||
FilteringTextInputFormatter.digitsOnly
|
||||
]
|
||||
)
|
||||
),
|
||||
FilledButton(onPressed: ()=>{}, child: Text("Ingresar"))
|
||||
],
|
||||
),
|
||||
Text("Máximo que puedes añadir: ${150 - total}€"),
|
||||
],
|
||||
),
|
||||
)
|
||||
]
|
||||
),
|
||||
),
|
||||
)),
|
||||
Expanded(
|
||||
child: Center(
|
||||
child: Text("Perfil")
|
||||
@@ -131,6 +145,8 @@ class _DashboardScreenState extends State<DashboardScreen>{
|
||||
}
|
||||
|
||||
Widget walletsList(BuildContext context, List<Kid> kids) {
|
||||
final theme = context.read<ThemePort>();
|
||||
|
||||
return Column(
|
||||
spacing: 20,
|
||||
children: List<Widget>.generate(kids.length, (int index) {
|
||||
@@ -141,20 +157,22 @@ class _DashboardScreenState extends State<DashboardScreen>{
|
||||
borderRadius: const BorderRadius.all(Radius.circular(16.0)),
|
||||
child: Container(
|
||||
padding: EdgeInsets.fromLTRB(20, 20, 20, 5),
|
||||
decoration: const BoxDecoration(
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: <Color>[
|
||||
Color(0xFFFA5C9F),
|
||||
Color(0xFFEB2579),
|
||||
Color(0xFFE60866),
|
||||
]
|
||||
colors: theme.getCardColorFor(index)
|
||||
)
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
Text(kids[index].name, style: TextStyle(fontWeight: FontWeight.bold, fontSize: 25, color: Colors.white)),
|
||||
Text(kids[index].name,
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 25,
|
||||
color: Colors.white
|
||||
)
|
||||
),
|
||||
Row(
|
||||
spacing: 10,
|
||||
children: [
|
||||
@@ -180,16 +198,33 @@ class _DashboardScreenState extends State<DashboardScreen>{
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
TextButton(onPressed: ()=>{},
|
||||
TextButton(
|
||||
onPressed: ()=>showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) => Dialog(
|
||||
child: Container(height: 100, width: double.infinity, child: Column(
|
||||
children: [
|
||||
FilledButton(onPressed: ()=>{}, child: Text("Cámara")),
|
||||
OutlinedButton(onPressed: ()=>{}, child: Text("Galería de fotos"))
|
||||
],
|
||||
)),
|
||||
)
|
||||
),
|
||||
child: Row(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.edit),
|
||||
Text("Editar")
|
||||
Icon(Icons.edit, color: theme.getColorFor(ThemeCode.text_secondary)),
|
||||
Text("Editar", style: TextStyle(color: theme.getColorFor(ThemeCode.text_secondary)))
|
||||
]
|
||||
)
|
||||
),
|
||||
Spacer(),
|
||||
FilledButton(onPressed: ()=>{}, child: Text("+ Añadir dinero"))
|
||||
FilledButton(
|
||||
onPressed: ()=>{},
|
||||
style: ButtonStyle(
|
||||
),
|
||||
child: Text("+ Añadir dinero")
|
||||
)
|
||||
],
|
||||
)
|
||||
]
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
|
||||
class ConnectionErrorScreen extends StatelessWidget{
|
||||
|
||||
const ConnectionErrorScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Center(
|
||||
child: Column(
|
||||
spacing: 15,
|
||||
children: [
|
||||
Spacer(flex: 2),
|
||||
SvgPicture.asset("assets/images/ui/connection_error.svg"),
|
||||
Text("Sin conexión a internet",
|
||||
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 25)
|
||||
),
|
||||
Text("Necesitas conectividad para usar SaveFamily"),
|
||||
Text("Puedes continuar en modo offline pero algunas funciones no estaràn disponibles"),
|
||||
Spacer(flex: 1),
|
||||
FilledButton(
|
||||
onPressed: ()=>{},
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.all(20),
|
||||
child: Text("Modo offline")
|
||||
)
|
||||
),
|
||||
TextButton(onPressed: ()=>{}, child: Text("Reintentar")),
|
||||
Spacer(flex: 2)
|
||||
]
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
56
lib/payments/view/screens/errors/no_plan_error_screen.dart
Normal file
56
lib/payments/view/screens/errors/no_plan_error_screen.dart
Normal file
@@ -0,0 +1,56 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:sf_app_platform/payments/domain/ports/theme_port.dart';
|
||||
|
||||
class NoPlanErrorScreen extends StatelessWidget{
|
||||
|
||||
const NoPlanErrorScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ThemePort theme = context.read<ThemePort>();
|
||||
|
||||
return Scaffold(
|
||||
body: Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
Spacer(flex: 3),
|
||||
Text("Estamos mejorando el servicio",
|
||||
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 25)
|
||||
),
|
||||
Text("Asocia tu reloj a SaveFamily y ayuda a tus peques a aprender a usar el dinero con responsabilidad"),
|
||||
Container(
|
||||
margin: EdgeInsets.symmetric(vertical: 20),
|
||||
child: Column(
|
||||
children: [
|
||||
Row(children: [
|
||||
Icon(Icons.check, color: theme.getColorFor(ThemeCode.button_primary)),
|
||||
Text("Desarrollarán hábitos financieros sanos")
|
||||
]),
|
||||
Row(children: [
|
||||
Icon(Icons.check, color: theme.getColorFor(ThemeCode.button_primary)),
|
||||
Text("Gestiona sus gastos")
|
||||
]),
|
||||
],
|
||||
),
|
||||
),
|
||||
Text("Selecciona tu plan en nuestra web y empieza a enseñar a los peques a entender el valor del dinero"),
|
||||
Spacer(flex: 1),
|
||||
FilledButton(
|
||||
onPressed: ()=>{},
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.all(20),
|
||||
child: Text("Seleccionar plan")
|
||||
)
|
||||
),
|
||||
Spacer(flex: 3)
|
||||
]
|
||||
),
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
|
||||
class ServerErrorScreen extends StatelessWidget{
|
||||
|
||||
@@ -10,21 +11,18 @@ class ServerErrorScreen extends StatelessWidget{
|
||||
//backgroundColor: ,
|
||||
body: Center(
|
||||
child: Column(
|
||||
spacing: 20,
|
||||
children: [
|
||||
Spacer(),
|
||||
Text.rich(
|
||||
TextSpan(
|
||||
text: "Estamos mejorando el servicio",
|
||||
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 25)
|
||||
)
|
||||
Spacer(flex: 2),
|
||||
Text("Estamos mejorando el servicio",
|
||||
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 25)
|
||||
),
|
||||
Spacer(),
|
||||
Image.asset("assets/images/ui/server_error.jpg"),
|
||||
SvgPicture.asset("assets/images/ui/server_error.svg"),
|
||||
Text("El sistema está en mantenimiento. \nInténtalo de nuevo en unos minutos"),
|
||||
Spacer(),
|
||||
Spacer(flex: 1),
|
||||
FilledButton(onPressed: ()=>{}, child: Text("Notificarme")),
|
||||
TextButton(onPressed: ()=>{}, child: Text("Reintentar")),
|
||||
Spacer()
|
||||
Spacer(flex: 2)
|
||||
]
|
||||
),
|
||||
)
|
||||
@@ -23,7 +23,7 @@ class _KidWalletScreenState extends State<KidWalletScreen> {
|
||||
final theme = context.read<ThemePort>();
|
||||
|
||||
return Scaffold(
|
||||
backgroundColor: Color(0xE6FFFFFF),
|
||||
backgroundColor: theme.getColorFor(ThemeCode.background_secondary),
|
||||
body: Stack(
|
||||
children: [
|
||||
DecoratedBox(
|
||||
@@ -47,26 +47,27 @@ class _KidWalletScreenState extends State<KidWalletScreen> {
|
||||
children: [
|
||||
IconButton(
|
||||
onPressed: ()=>Navigator.pop(context),
|
||||
icon: Icon(Icons.arrow_back_ios_new_outlined, color: Color(0xFFFFFFFF),)
|
||||
icon: Icon(Icons.arrow_back_ios_new_outlined, color: theme.getColorFor(ThemeCode.background_primary),)
|
||||
),
|
||||
SizedBox(height: 50, child: SvgPicture.asset("assets/images/ui/face.svg")),
|
||||
Text(widget.kid.name,
|
||||
style: TextStyle(
|
||||
color: Color(0xFFFFFFFF),
|
||||
color: theme.getColorFor(ThemeCode.background_primary),
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 20
|
||||
)
|
||||
),
|
||||
Spacer()
|
||||
Spacer(),
|
||||
SizedBox(height: 30, child: SvgPicture.asset("assets/images/ui/face.svg")),
|
||||
],
|
||||
),
|
||||
Text("${widget.kid.balance.toString()}€",
|
||||
style: TextStyle(color: Color(0xFFFFFFFF), fontSize: 35, fontWeight: FontWeight.bold)),
|
||||
Text("Saldo disponible", style: TextStyle(color: Color(0xFFFFFFFF))),
|
||||
style: TextStyle(color: theme.getColorFor(ThemeCode.background_primary), fontSize: 35, fontWeight: FontWeight.bold)),
|
||||
Text("Saldo disponible", style: TextStyle(color: theme.getColorFor(ThemeCode.background_primary))),
|
||||
LinearProgressIndicator(
|
||||
value: 0.7,
|
||||
color: Color(0xFFFFFFFF),
|
||||
backgroundColor: Color(0xFFFFFFFF).withAlpha(0x4C),
|
||||
color: theme.getColorFor(ThemeCode.background_primary),
|
||||
backgroundColor: theme.getColorFor(ThemeCode.background_primary).withAlpha(0x4C),
|
||||
minHeight: 10,
|
||||
borderRadius: BorderRadius.all(Radius.circular(5)),
|
||||
),
|
||||
@@ -74,61 +75,63 @@ class _KidWalletScreenState extends State<KidWalletScreen> {
|
||||
Center( child: Container(
|
||||
padding: EdgeInsets.all(8),
|
||||
margin: EdgeInsets.only(top: 30),
|
||||
decoration: const BoxDecoration(
|
||||
color: Colors.white,
|
||||
decoration: BoxDecoration(
|
||||
color: theme.getColorFor(ThemeCode.background_primary),
|
||||
borderRadius: BorderRadius.all(Radius.circular(20)),
|
||||
), child: Row(
|
||||
spacing: 10,
|
||||
children: [
|
||||
TextButton(onPressed: ()=>{},
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.add_circle_outline),
|
||||
Text("Añadir")
|
||||
]
|
||||
),
|
||||
child: Row(
|
||||
spacing: 10,
|
||||
children: [
|
||||
TextButton(onPressed: ()=>{},
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.add_circle_outline),
|
||||
Text("Añadir")
|
||||
]
|
||||
)
|
||||
),
|
||||
TextButton(onPressed: ()=>{},
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.account_balance_wallet_outlined),
|
||||
Text("Paga")
|
||||
]
|
||||
)
|
||||
),
|
||||
TextButton(onPressed: ()=>{},
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.list_alt_outlined),
|
||||
Text("Límites")
|
||||
]
|
||||
)
|
||||
),
|
||||
TextButton(onPressed: ()=>{},
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.emoji_events_outlined),
|
||||
Text("Metas")
|
||||
]
|
||||
)
|
||||
)
|
||||
),
|
||||
TextButton(onPressed: ()=>{},
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.account_balance_wallet_outlined),
|
||||
Text("Paga")
|
||||
]
|
||||
)
|
||||
),
|
||||
TextButton(onPressed: ()=>{},
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.list_alt_outlined),
|
||||
Text("Límites")
|
||||
]
|
||||
)
|
||||
),
|
||||
TextButton(onPressed: ()=>{},
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.emoji_events_outlined),
|
||||
Text("Metas")
|
||||
]
|
||||
)
|
||||
)
|
||||
],
|
||||
))
|
||||
],
|
||||
)
|
||||
)
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.all(15),
|
||||
height: 400,
|
||||
decoration: const BoxDecoration(
|
||||
color: Colors.white,
|
||||
decoration: BoxDecoration(
|
||||
color: theme.getColorFor(ThemeCode.background_primary),
|
||||
borderRadius: BorderRadius.all(Radius.circular(20)),
|
||||
), child: Column(
|
||||
children: [
|
||||
Text("Últimos movimientos"),
|
||||
activityList(),
|
||||
activityList(context),
|
||||
TextButton(onPressed: ()=>{}, child: Text("Ver todos"))
|
||||
],
|
||||
)
|
||||
@@ -137,12 +140,15 @@ class _KidWalletScreenState extends State<KidWalletScreen> {
|
||||
)
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget activityList(){
|
||||
final activity = [{"date": "10/05", "payments": [1, 2, 3]}, {"date": "10/04", "payments":[1, 2]}, {"date": "10/02", "payments":[1]}];
|
||||
Widget activityList(BuildContext context){
|
||||
|
||||
final theme = context.read<ThemePort>();
|
||||
|
||||
final activity = [{"date": "10/05", "payments": [1, 2, 3]}, {"date": "10/04", "payments":[1, 2]}, {"date": "10/02", "payments":[1, 2, 3, 4]}];
|
||||
|
||||
return Align(alignment: Alignment.topLeft, child: SingleChildScrollView(child: Column(
|
||||
children: List<Widget>.generate(activity.length, (int index) {
|
||||
@@ -159,8 +165,8 @@ class _KidWalletScreenState extends State<KidWalletScreen> {
|
||||
children: [
|
||||
Container(
|
||||
padding: EdgeInsets.all(9),
|
||||
color: Color(0xFF329e95).withAlpha(0x1A),
|
||||
child: Icon(Icons.local_pizza_outlined, color: Color(0xFF329e95)),
|
||||
color: theme.getColorFor(ThemeCode.button_primary).withAlpha(0x1A),
|
||||
child: Icon(Icons.local_pizza_outlined, color: theme.getColorFor(ThemeCode.button_primary)),
|
||||
),
|
||||
Column(
|
||||
children: [
|
||||
|
||||
@@ -11,33 +11,43 @@ class LinkPhoneScreen extends StatelessWidget{
|
||||
|
||||
return Scaffold(
|
||||
body: Container(
|
||||
margin: EdgeInsets.symmetric(horizontal: 20),
|
||||
child: Center(child: Expanded(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Expanded(child: Center(
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Text("¡Nos alegra mucho tenerte por aquí!", style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold)),
|
||||
Text("Para poder entrar de forma segura, te vamos a enviar un código al teléfono"),
|
||||
Row(children: [
|
||||
DropdownMenu(
|
||||
initialSelection: "es",
|
||||
dropdownMenuEntries: List<DropdownMenuEntry>.generate(3, (int index){
|
||||
return DropdownMenuEntry(labelWidget: Icon(Icons.outlined_flag), label: "es", value: "es");
|
||||
})
|
||||
),
|
||||
Expanded(child: TextField(
|
||||
onSubmitted: (String value){phone=value;},
|
||||
controller: phoneController,
|
||||
decoration: InputDecoration(labelText: "Teléfono móvil", hintText: "Teléfono"),
|
||||
keyboardType: TextInputType.number)
|
||||
Row(
|
||||
spacing: 10,
|
||||
children: [
|
||||
DropdownMenu(
|
||||
initialSelection: "es",
|
||||
dropdownMenuEntries: List<DropdownMenuEntry>.generate(3, (int index){
|
||||
return DropdownMenuEntry(
|
||||
labelWidget: Icon(Icons.outlined_flag),
|
||||
label: "es",
|
||||
value: "es",
|
||||
);
|
||||
})
|
||||
),
|
||||
Expanded(child: TextField(
|
||||
onSubmitted: (String value){phone=value;},
|
||||
controller: phoneController,
|
||||
decoration: InputDecoration(labelText: "Teléfono móvil", hintText: "Teléfono", border: OutlineInputBorder()),
|
||||
keyboardType: TextInputType.number)
|
||||
)
|
||||
]
|
||||
),
|
||||
SizedBox(
|
||||
width: double.infinity,
|
||||
child: FilledButton(
|
||||
onPressed: ()=>{
|
||||
if (phone != null)
|
||||
Navigator.push(context, MaterialPageRoute(builder: (_)=>PhoneCodeScreen(phone: phone!)))
|
||||
},
|
||||
child: Text("Siguiente")
|
||||
)
|
||||
]),
|
||||
FilledButton(
|
||||
onPressed: ()=>{
|
||||
if (phone != null)
|
||||
Navigator.push(context, MaterialPageRoute(builder: (_)=>PhoneCodeScreen(phone: phone!)))
|
||||
},
|
||||
child: Text("Siguiente")
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
26
lib/payments/view/screens/loading_google_screen.dart
Normal file
26
lib/payments/view/screens/loading_google_screen.dart
Normal file
@@ -0,0 +1,26 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
|
||||
class LoadingGoogleScreen extends StatelessWidget{
|
||||
const LoadingGoogleScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Expanded(
|
||||
child: Center(
|
||||
child: Column(
|
||||
spacing: 50,
|
||||
children: [
|
||||
Spacer(flex: 8),
|
||||
Text("Continuar con Google", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30)),
|
||||
CircularProgressIndicator(),
|
||||
Text("Redirigiendo a Google"),
|
||||
Spacer(flex: 10)
|
||||
],
|
||||
),
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
|
||||
class LoadingScreen extends StatelessWidget{
|
||||
const LoadingScreen({super.key});
|
||||
@@ -11,8 +12,10 @@ class LoadingScreen extends StatelessWidget{
|
||||
child: Column(
|
||||
spacing: 50,
|
||||
children: [
|
||||
Image.asset("assets/images/ui/logo.jpg"),
|
||||
CircularProgressIndicator()
|
||||
Spacer(flex: 8),
|
||||
SvgPicture.asset("assets/images/ui/logo_sf.svg"),
|
||||
CircularProgressIndicator(),
|
||||
Spacer(flex: 10)
|
||||
],
|
||||
),
|
||||
)
|
||||
|
||||
98
lib/payments/view/screens/login_screen.dart
Normal file
98
lib/payments/view/screens/login_screen.dart
Normal file
@@ -0,0 +1,98 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/dashboard_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/loading_google_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/restore_password/restore_password_screen.dart';
|
||||
|
||||
class LoginScreen extends StatefulWidget {
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => LoginScreenState();
|
||||
|
||||
}
|
||||
|
||||
class LoginScreenState extends State<LoginScreen>{
|
||||
|
||||
bool passwordVisible = false;
|
||||
|
||||
@override
|
||||
void initState(){
|
||||
super.initState();
|
||||
passwordVisible = true;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Expanded(child: Center(
|
||||
child: Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.check, color: Color(0xFF329e95), size: 50),
|
||||
Text("¡Te damos la bienvenida!", style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold),),
|
||||
TextField(
|
||||
decoration: InputDecoration(
|
||||
hintText: "Nombre de usuario",
|
||||
labelText: "Nombre de usuario",
|
||||
border: OutlineInputBorder(),
|
||||
),
|
||||
),
|
||||
TextField(
|
||||
obscureText: passwordVisible,
|
||||
enableSuggestions: false,
|
||||
autocorrect: false,
|
||||
decoration: InputDecoration(
|
||||
labelText: "Contraseña",
|
||||
hintText: "********",
|
||||
border: OutlineInputBorder(),
|
||||
suffixIcon: IconButton(
|
||||
icon: Icon(passwordVisible
|
||||
? Icons.visibility
|
||||
: Icons.visibility_off),
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
passwordVisible = !passwordVisible;
|
||||
});
|
||||
},
|
||||
),
|
||||
)
|
||||
),
|
||||
TextButton(
|
||||
onPressed: ()=>Navigator.push(context, MaterialPageRoute(builder: (_)=>RestorePasswordScreen())),
|
||||
child: Text("¿Has olvidado la contraseña?")
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: ()=>Navigator.push(context, MaterialPageRoute(builder: (_)=>DashboardScreen())),
|
||||
child: Text("Iniciar sesión")
|
||||
),
|
||||
Stack(
|
||||
children: [
|
||||
Divider(),
|
||||
Text("o continúa con"),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
spacing: 20,
|
||||
children: [
|
||||
OutlinedButton(
|
||||
onPressed: ()=>Navigator.push(context, MaterialPageRoute(builder: (_)=>LoadingGoogleScreen())),
|
||||
child: Text("Google", semanticsLabel: "Google")
|
||||
),
|
||||
OutlinedButton(
|
||||
onPressed: ()=>{},
|
||||
child: Icon(Icons.apple, semanticLabel: "Apple")
|
||||
)
|
||||
],
|
||||
),
|
||||
Text("¿No tienes cuenta?"),
|
||||
TextButton(onPressed: ()=>{}, child: Text("Crear una ahora"))
|
||||
],
|
||||
),
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
abstract class LogScreen {
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/dashboard_screen.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/login_screen.dart';
|
||||
|
||||
class PhoneCodeScreen extends StatefulWidget {
|
||||
final String phone;
|
||||
@@ -20,35 +21,41 @@ class PhoneCodeScreenState extends State<PhoneCodeScreen> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Expanded(child: Center(
|
||||
child: Column(
|
||||
spacing: 15,
|
||||
children: [
|
||||
Text("Conéctate", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30)),
|
||||
Text.rich(TextSpan(text: "Hemos enviado el código al ",
|
||||
children: [TextSpan(
|
||||
text: widget.phone, style: TextStyle(fontWeight: FontWeight.bold))]
|
||||
)),
|
||||
Text("Introduce el código aquí"),
|
||||
Row(
|
||||
children: List<Widget>.generate(6, (int i){
|
||||
return Expanded(child: TextField(
|
||||
focusNode: focusNodes[i],
|
||||
keyboardType: TextInputType.number,
|
||||
decoration: InputDecoration(hintText: "0"),
|
||||
maxLength: 1,
|
||||
onChanged: (String value)=>{value!="" ? focusNodes[i+1].requestFocus() : focusNodes[i-1].requestFocus()},
|
||||
));
|
||||
}),
|
||||
),
|
||||
FilledButton(onPressed: ()=>{Navigator.pushReplacement(context, MaterialPageRoute(builder: (_)=>DashboardScreen()))}, child: Text("Entrar")),
|
||||
Text("¿No lo has recibido?"),
|
||||
TextButton(onPressed: ()=>{},
|
||||
child: Text("Volver a intentarlo", style: TextStyle(fontWeight: FontWeight.bold))
|
||||
)
|
||||
]
|
||||
),
|
||||
)),
|
||||
body: Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Expanded(child: Center(
|
||||
child: Column(
|
||||
spacing: 15,
|
||||
children: [
|
||||
Spacer(flex:8),
|
||||
Text("Conéctate", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30)),
|
||||
Text.rich(TextSpan(text: "Hemos enviado el código al ",
|
||||
children: [TextSpan(
|
||||
text: widget.phone, style: TextStyle(fontWeight: FontWeight.bold))]
|
||||
)),
|
||||
Text("Introduce el código aquí"),
|
||||
Row(
|
||||
spacing: 20,
|
||||
children: List<Widget>.generate(6, (int i){
|
||||
return Expanded(child: TextField(
|
||||
focusNode: focusNodes[i],
|
||||
keyboardType: TextInputType.number,
|
||||
decoration: InputDecoration(hintText: "0", counterText: "", border: OutlineInputBorder()),
|
||||
maxLength: 1,
|
||||
onChanged: (String value)=>{value!="" ? focusNodes[i+1].requestFocus() : focusNodes[i-1].requestFocus()},
|
||||
));
|
||||
}),
|
||||
),
|
||||
FilledButton(onPressed: ()=>{Navigator.pushReplacement(context, MaterialPageRoute(builder: (_)=>LoginScreen()))}, child: Text("Entrar")),
|
||||
Text("¿No lo has recibido?"),
|
||||
TextButton(onPressed: ()=>{},
|
||||
child: Text("Volver a intentarlo", style: TextStyle(fontWeight: FontWeight.bold))
|
||||
),
|
||||
Spacer(flex:10)
|
||||
]
|
||||
),
|
||||
)),
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:sf_app_platform/payments/domain/ports/theme_port.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/restore_password/new_password_screen.dart';
|
||||
|
||||
class EmailSentScreen extends StatefulWidget{
|
||||
final String email;
|
||||
|
||||
const EmailSentScreen({super.key, required this.email});
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => EmailSentScreenState();
|
||||
|
||||
}
|
||||
|
||||
class EmailSentScreenState extends State<EmailSentScreen> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = context.read<ThemePort>();
|
||||
|
||||
return Scaffold(
|
||||
body: Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Center(
|
||||
child: Column(
|
||||
spacing: 20,
|
||||
children: [
|
||||
Spacer(flex: 8),
|
||||
Text("Recuperar contraseña", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30)),
|
||||
Spacer(flex: 1),
|
||||
Row(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Icon(Icons.check, color: theme.getColorFor(ThemeCode.button_primary)),
|
||||
Text("Correo enviado correctamente", style: TextStyle(fontWeight: FontWeight.bold))
|
||||
]
|
||||
),
|
||||
Spacer(flex: 1),
|
||||
Text("Revisa tu email y haz clic en el enlace para crear una nueva contraseña"),
|
||||
Text("Si no recibes el correo en unos minutos, revisa tu carpeta de spam o pulsa \"Reenviar correo\""),
|
||||
Row(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Expanded(child: OutlinedButton(onPressed: ()=>{}, child: Text("Reenviar correo"))),
|
||||
Expanded(child: FilledButton(onPressed:
|
||||
()=>{Navigator.push(context, MaterialPageRoute(builder: (_)=>NewPasswordScreen()))},
|
||||
style: ButtonStyle(backgroundColor: WidgetStatePropertyAll<Color>(theme.getColorFor(ThemeCode.button_secondary))),
|
||||
child: Text("Continuar")
|
||||
)
|
||||
)
|
||||
]),
|
||||
Spacer(flex: 10)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../../domain/ports/theme_port.dart';
|
||||
|
||||
class NewPasswordScreen extends StatefulWidget{
|
||||
const NewPasswordScreen({super.key});
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => NewPasswordScreenState();
|
||||
|
||||
}
|
||||
|
||||
class NewPasswordScreenState extends State<NewPasswordScreen> {
|
||||
|
||||
bool passwordVisible = false;
|
||||
bool equalPasswords = false;
|
||||
String password = "";
|
||||
var securityChecks = {"min": false, "capital": false, "number": false, "special": false};
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
passwordVisible = false;
|
||||
equalPasswords = false;
|
||||
String password = "";
|
||||
securityChecks = {"min": false, "capital": false, "number": false, "special": false};
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = context.read<ThemePort>();
|
||||
|
||||
return Scaffold(
|
||||
body: Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Center(
|
||||
child: Column(
|
||||
spacing: 10,
|
||||
children: [
|
||||
Spacer(flex: 4),
|
||||
Text("Recuperar contraseña", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30)),
|
||||
TextField(
|
||||
obscureText: passwordVisible,
|
||||
enableSuggestions: false,
|
||||
autocorrect: false,
|
||||
decoration: InputDecoration(
|
||||
labelText: "Nueva contraseña",
|
||||
hintText: "********",
|
||||
border: OutlineInputBorder(),
|
||||
suffixIcon: IconButton(
|
||||
icon: Icon(passwordVisible
|
||||
? Icons.visibility
|
||||
: Icons.visibility_off),
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
passwordVisible = !passwordVisible;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
onChanged: (value)=>{
|
||||
setState(() {
|
||||
password = value;
|
||||
securityChecks = checkSecurity(value);
|
||||
})
|
||||
},
|
||||
),
|
||||
TextField(
|
||||
obscureText: passwordVisible,
|
||||
enableSuggestions: false,
|
||||
autocorrect: false,
|
||||
decoration: InputDecoration(
|
||||
labelText: "Repetir contraseña",
|
||||
hintText: "********",
|
||||
border: OutlineInputBorder(),
|
||||
suffixIcon: IconButton(
|
||||
icon: Icon(passwordVisible
|
||||
? Icons.visibility
|
||||
: Icons.visibility_off),
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
passwordVisible = !passwordVisible;
|
||||
});
|
||||
},
|
||||
),
|
||||
),
|
||||
onChanged: (value)=>{setState(() {
|
||||
equalPasswords = password == value;
|
||||
})},
|
||||
),
|
||||
Row(children: [
|
||||
securityChecks["min"]! ?
|
||||
Icon(Icons.check, color: theme.getColorFor(ThemeCode.button_primary)) :
|
||||
Icon(Icons.cancel_outlined, color: theme.getColorFor(ThemeCode.button_secondary)),
|
||||
Text("Al menos 8 caracteres")
|
||||
]),
|
||||
Row(children: [
|
||||
securityChecks["capital"]! ?
|
||||
Icon(Icons.check, color: theme.getColorFor(ThemeCode.button_primary)) :
|
||||
Icon(Icons.cancel_outlined, color: theme.getColorFor(ThemeCode.button_secondary)),
|
||||
Text("Una mayúscula")
|
||||
]),
|
||||
Row(children: [
|
||||
securityChecks["number"]! ?
|
||||
Icon(Icons.check, color: theme.getColorFor(ThemeCode.button_primary)) :
|
||||
Icon(Icons.cancel_outlined, color: theme.getColorFor(ThemeCode.button_secondary)),
|
||||
Text("Un número")
|
||||
]),
|
||||
Row(children: [
|
||||
securityChecks["special"]! ?
|
||||
Icon(Icons.check, color: theme.getColorFor(ThemeCode.button_primary)) :
|
||||
Icon(Icons.cancel_outlined, color: theme.getColorFor(ThemeCode.button_secondary)),
|
||||
Text("Un carácter especial")
|
||||
]),
|
||||
Spacer(flex: 1),
|
||||
FilledButton(
|
||||
onPressed: ()=>{},
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
padding: EdgeInsets.all(20),
|
||||
child: Text("Aceptar")
|
||||
)
|
||||
),
|
||||
Spacer(flex: 4)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
//TODO: Extraer de la vista
|
||||
Map<String, bool> checkSecurity(String value) {
|
||||
Map<String, bool> checks = {};
|
||||
|
||||
checks["min"] = value.length >= 8;
|
||||
checks["capital"] = RegExp(r'[A-Z]').hasMatch(value);
|
||||
checks["number"] = RegExp(r'[0-9]').hasMatch(value);
|
||||
checks["special"] = RegExp(r'[^A-Za-z0-9]').hasMatch(value);
|
||||
|
||||
return checks;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:sf_app_platform/payments/domain/ports/theme_port.dart';
|
||||
import 'package:sf_app_platform/payments/view/screens/restore_password/email_sent_screen.dart';
|
||||
|
||||
class RestorePasswordScreen extends StatelessWidget{
|
||||
const RestorePasswordScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ThemePort theme = context.read<ThemePort>();
|
||||
|
||||
return Scaffold(
|
||||
body: Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Center(child:
|
||||
Column(
|
||||
spacing: 30,
|
||||
children: [
|
||||
Spacer(flex: 8),
|
||||
Text("Recuperar contaseña", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30)),
|
||||
Text("Introduce tu email para enviarte un enlace de recuperación"),
|
||||
TextField(decoration: InputDecoration(labelText: "Correo electrónico", hintText: "Correo electrónico", border: OutlineInputBorder())),
|
||||
Row(
|
||||
spacing: 20,
|
||||
children: [
|
||||
Expanded(child: OutlinedButton(onPressed: ()=>{Navigator.pop(context)}, child: Text("Volver"))),
|
||||
Expanded(child: FilledButton(
|
||||
onPressed: ()=>{Navigator.push(context, MaterialPageRoute(builder: (_)=>EmailSentScreen(email: "")))},
|
||||
style: ButtonStyle(backgroundColor: WidgetStatePropertyAll<Color>(theme.getColorFor(ThemeCode.button_secondary))),
|
||||
child: Text("Enviar")
|
||||
))
|
||||
],
|
||||
),
|
||||
Spacer(flex: 10)
|
||||
],
|
||||
)
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -79,22 +79,22 @@ class _SignupScreenState extends State<SignupScreen> {
|
||||
Text("Datos personales"),
|
||||
Text("Identifícate"),
|
||||
Text("Nos aseguraremos de que la cuenta está a nombre del adulto responsable"),
|
||||
TextField(decoration: InputDecoration(labelText: "Nombre", hintText: "Nombre")),
|
||||
TextField(decoration: InputDecoration(labelText: "Apellidos", hintText: "Apellidos")),
|
||||
TextField(decoration: InputDecoration(labelText: "Nombre", hintText: "Nombre", border: OutlineInputBorder())),
|
||||
TextField(decoration: InputDecoration(labelText: "Apellidos", hintText: "Apellidos", border: OutlineInputBorder())),
|
||||
Row(
|
||||
children: [
|
||||
Expanded( child: TextField(
|
||||
decoration: InputDecoration(label: Text("Fecha de nacimiento"), hintText: "DD"),
|
||||
decoration: InputDecoration(label: Text("Fecha de nacimiento"), hintText: "DD", border: OutlineInputBorder()),
|
||||
keyboardType: TextInputType.number,
|
||||
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
|
||||
)),
|
||||
Expanded( child: TextField(
|
||||
decoration: InputDecoration(hintText: "MM"),
|
||||
decoration: InputDecoration(hintText: "MM", border: OutlineInputBorder()),
|
||||
keyboardType: TextInputType.number,
|
||||
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
|
||||
)),
|
||||
Expanded( child: TextField(
|
||||
decoration: InputDecoration(hintText: "AAAA"),
|
||||
decoration: InputDecoration(hintText: "AAAA", border: OutlineInputBorder()),
|
||||
keyboardType: TextInputType.number,
|
||||
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
|
||||
)),
|
||||
@@ -123,8 +123,8 @@ class _SignupScreenState extends State<SignupScreen> {
|
||||
Text("Domicilio"),
|
||||
Text("Tu dirección", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20)),
|
||||
Text("Tu dirección nos ayuda a verificar y mantener la seguridad de tu cuenta"),
|
||||
TextField(decoration: InputDecoration(hintText: "Dirección completa")),
|
||||
TextField(decoration: InputDecoration(hintText: "Ciudad")),
|
||||
TextField(decoration: InputDecoration(hintText: "Dirección completa", border: OutlineInputBorder())),
|
||||
TextField(decoration: InputDecoration(hintText: "Ciudad", border: OutlineInputBorder())),
|
||||
DropdownMenu(
|
||||
dropdownMenuEntries: List<DropdownMenuEntry>.generate(3, (int index) {
|
||||
return DropdownMenuEntry(value: "España", label: "España");
|
||||
@@ -132,7 +132,7 @@ class _SignupScreenState extends State<SignupScreen> {
|
||||
hintText: "País",
|
||||
width: double.infinity,
|
||||
),
|
||||
TextField(decoration: InputDecoration(hintText: "Nacionalidad"))
|
||||
TextField(decoration: InputDecoration(hintText: "Nacionalidad", border: OutlineInputBorder()))
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -147,7 +147,7 @@ class _SignupScreenState extends State<SignupScreen> {
|
||||
Text("Usuario y contacto"),
|
||||
Text("Crea tu usuario", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20)),
|
||||
Text("Con tu email y tu número podremos mantenerte siempre informado"),
|
||||
TextField(decoration: InputDecoration(labelText: "Correo electrónico", hintText: "Correo electrónico")),
|
||||
TextField(decoration: InputDecoration(labelText: "Correo electrónico", hintText: "Correo electrónico", border: OutlineInputBorder())),
|
||||
Row(children: [
|
||||
DropdownMenu(
|
||||
initialSelection: "es",
|
||||
@@ -156,7 +156,7 @@ class _SignupScreenState extends State<SignupScreen> {
|
||||
})
|
||||
),
|
||||
Expanded(child: TextField(
|
||||
decoration: InputDecoration(labelText: "Teléfono móvil", hintText: "Teléfono"),
|
||||
decoration: InputDecoration(labelText: "Teléfono móvil", hintText: "Teléfono", border: OutlineInputBorder()),
|
||||
keyboardType: TextInputType.number)
|
||||
)
|
||||
],
|
||||
@@ -168,6 +168,7 @@ class _SignupScreenState extends State<SignupScreen> {
|
||||
decoration: InputDecoration(
|
||||
labelText: "Contraseña",
|
||||
hintText: "********",
|
||||
border: OutlineInputBorder(),
|
||||
suffixIcon: IconButton(
|
||||
icon: Icon(passwordVisible
|
||||
? Icons.visibility
|
||||
@@ -186,6 +187,7 @@ class _SignupScreenState extends State<SignupScreen> {
|
||||
decoration: InputDecoration(
|
||||
labelText: "Repetir contraseña",
|
||||
hintText: "*******",
|
||||
border: OutlineInputBorder(),
|
||||
suffixIcon: IconButton(
|
||||
icon: Icon(passwordVisible
|
||||
? Icons.visibility
|
||||
|
||||
63
lib/payments/view/screens/wallet_management_screen.dart
Normal file
63
lib/payments/view/screens/wallet_management_screen.dart
Normal file
@@ -0,0 +1,63 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../domain/ports/theme_port.dart';
|
||||
|
||||
class WalletManagementScreen extends StatefulWidget {
|
||||
final List<Widget> children;
|
||||
|
||||
const WalletManagementScreen({super.key, required this.children});
|
||||
|
||||
@override
|
||||
State<WalletManagementScreen> createState() => WalletManagementScreenState();
|
||||
|
||||
}
|
||||
|
||||
class WalletManagementScreenState extends State<WalletManagementScreen>{
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = context.read<ThemePort>();
|
||||
|
||||
return Scaffold(
|
||||
body: Stack(children: [
|
||||
DecoratedBox(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: const BorderRadius.all(Radius.circular(30)),
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: theme.getCardColorFor(0)
|
||||
),
|
||||
),
|
||||
child: SizedBox(width: double.infinity, height: 300),
|
||||
),
|
||||
Container(
|
||||
margin: EdgeInsets.all(30),
|
||||
child: Column(
|
||||
spacing: 15,
|
||||
children: [
|
||||
Row(
|
||||
spacing: 10,
|
||||
children: [
|
||||
IconButton(onPressed: ()=>Navigator.pop(context), icon: Icon(Icons.arrow_back_ios_outlined)),
|
||||
Center(child: Column(children: [
|
||||
//Text(widget.kid.name),
|
||||
Text.rich(TextSpan(
|
||||
text: "Sueldo disponible: ",
|
||||
children: [
|
||||
|
||||
]))
|
||||
]))
|
||||
],
|
||||
),
|
||||
...widget.children
|
||||
],
|
||||
)
|
||||
)
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user