initialized Dashboard Page

This commit is contained in:
Mohammad Salameh
2024-02-20 12:08:59 +03:00
parent 0c390a8062
commit d27063f149
98 changed files with 1704 additions and 824 deletions

7
assets/icons/CO2.svg Normal file
View File

@ -0,0 +1,7 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15 30C23.2843 30 30 23.2843 30 15C30 6.71573 23.2843 0 15 0C6.71573 0 0 6.71573 0 15C0 23.2843 6.71573 30 15 30Z" fill="#84DBFF"/>
<path d="M24.1181 12.8504C24.2598 12.5669 24.3307 12.2362 24.3307 11.9055C24.3307 10.6536 23.315 9.66143 22.0866 9.66143C22.063 9.66143 22.0394 9.66143 22.0158 9.66143C21.4252 7.44096 19.4173 5.81104 17.0079 5.81104C15.3307 5.81104 13.8425 6.61418 12.874 7.84253C12.3071 7.53544 11.6693 7.37009 10.9843 7.37009C8.74017 7.37009 6.89765 9.18899 6.89765 11.4567C6.89765 11.811 6.94489 12.1417 7.01576 12.4488C4.96064 12.8032 3.37796 14.6221 3.37796 16.7953C3.37796 19.2284 5.36221 21.2126 7.79528 21.2126H22.1811C24.6142 21.2126 26.5984 19.2284 26.5984 16.7953C26.5984 15.0945 25.5827 13.5827 24.1181 12.8504Z" fill="white"/>
<path d="M11.126 12.7087C11.6457 12.7087 12.0709 12.9213 12.4016 13.3465L13.0866 12.5906C12.5433 11.9764 11.8819 11.6693 11.0787 11.6693C10.3701 11.6693 9.7559 11.9055 9.25984 12.4016C8.76378 12.874 8.52756 13.4882 8.52756 14.1969C8.52756 14.9292 8.76378 15.5197 9.25984 15.9921C9.7559 16.4646 10.3701 16.7008 11.1024 16.7008C11.8346 16.7008 12.4961 16.3937 13.063 15.7795L12.378 15.0709C12.0472 15.4961 11.5984 15.7087 11.0787 15.7087C10.7008 15.7087 10.3465 15.5669 10.0866 15.3071C9.80315 15.0236 9.68504 14.6693 9.68504 14.2205C9.68504 13.7717 9.82677 13.4173 10.1102 13.1339C10.3701 12.8268 10.7244 12.7087 11.126 12.7087Z" fill="#324A5E"/>
<path d="M16.0866 11.6693C15.378 11.6693 14.7638 11.9055 14.2677 12.378C13.7717 12.8504 13.5354 13.4646 13.5354 14.1732C13.5354 14.8819 13.7717 15.4961 14.2677 15.9685C14.7638 16.441 15.3543 16.6772 16.0866 16.6772C16.8189 16.6772 17.4094 16.441 17.9055 15.9685C18.4016 15.4961 18.6378 14.8819 18.6378 14.1732C18.6378 13.4646 18.4016 12.8504 17.9055 12.378C17.4094 11.9055 16.8189 11.6693 16.0866 11.6693ZM17.126 15.2835C16.8425 15.5906 16.5118 15.7323 16.1102 15.7323C15.7087 15.7323 15.3543 15.5906 15.0945 15.2835C14.811 14.9764 14.6693 14.6221 14.6693 14.1732C14.6693 13.7481 14.811 13.3701 15.0945 13.063C15.378 12.7559 15.7087 12.6142 16.1102 12.6142C16.5118 12.6142 16.8661 12.7559 17.126 13.063C17.4094 13.3701 17.5512 13.7481 17.5512 14.1732C17.5512 14.6221 17.4094 14.9764 17.126 15.2835Z" fill="#324A5E"/>
<path d="M20.1968 16.937L20.7638 16.3465C21 16.1102 21.1417 15.9213 21.2362 15.7559C21.3307 15.6142 21.3543 15.4488 21.3543 15.2835C21.3543 14.9764 21.2598 14.7402 21.0472 14.5748C20.8346 14.4095 20.5984 14.315 20.315 14.315C20.0315 14.315 19.8189 14.3858 19.6299 14.5039C19.4409 14.6221 19.2756 14.811 19.1339 15.0236L19.7008 15.3543C19.8898 15.0709 20.0787 14.9291 20.2677 14.9291C20.3858 14.9291 20.4567 14.9764 20.5276 15.0473C20.5984 15.1181 20.622 15.2126 20.622 15.3071C20.622 15.4252 20.5748 15.5197 20.5039 15.6378C20.4331 15.7559 20.2913 15.8976 20.1024 16.1102L19.1575 17.0788V17.6221H21.4252V16.9843H20.1968V16.937Z" fill="#324A5E"/>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 491 B

View File

@ -0,0 +1,13 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_76_231)">
<path d="M3.33332 0H5.83332C7.67426 0 9.16664 1.49238 9.16664 3.33332V5.83332C9.16664 7.67426 7.67426 9.16664 5.83332 9.16664H3.33332C1.49238 9.16668 0 7.6743 0 5.83332V3.33332C0 1.49238 1.49238 0 3.33332 0Z" fill="#999999"/>
<path d="M3.33332 10.8333H5.83332C7.67426 10.8333 9.16664 12.3257 9.16664 14.1666V16.6666C9.16664 18.5076 7.67426 20 5.83332 20H3.33332C1.49238 20 0 18.5076 0 16.6667V14.1667C0 12.3257 1.49238 10.8333 3.33332 10.8333Z" fill="#999999"/>
<path d="M14.1667 10.8333H16.6667C18.5076 10.8333 20 12.3257 20 14.1666V16.6666C20 18.5076 18.5076 20 16.6667 20H14.1667C12.3258 20 10.8334 18.5076 10.8334 16.6667V14.1667C10.8333 12.3257 12.3257 10.8333 14.1667 10.8333Z" fill="#999999"/>
<path d="M11.6667 5.83333H14.1667V8.33333C14.1667 8.79357 14.5398 9.16666 15 9.16666C15.4602 9.16666 15.8333 8.79357 15.8333 8.33333V5.83333H18.3333C18.7936 5.83333 19.1667 5.46025 19.1667 5.00001C19.1667 4.53978 18.7936 4.16669 18.3333 4.16669H15.8333V1.66669C15.8333 1.20646 15.4602 0.833374 15 0.833374C14.5398 0.833374 14.1667 1.20646 14.1667 1.66669V4.16669H11.6667C11.2065 4.16669 10.8334 4.53978 10.8334 5.00001C10.8334 5.46025 11.2065 5.83333 11.6667 5.83333Z" fill="#999999"/>
</g>
<defs>
<clipPath id="clip0_76_231">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 597 B

13
assets/icons/Devices.svg Normal file
View File

@ -0,0 +1,13 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_76_112)">
<path d="M5.83333 0H3.33333C2.44928 0 1.60143 0.35119 0.976311 0.976311C0.35119 1.60143 0 2.44928 0 3.33333L0 5.83333C0 6.71739 0.35119 7.56524 0.976311 8.19036C1.60143 8.81548 2.44928 9.16667 3.33333 9.16667H5.83333C6.71739 9.16667 7.56524 8.81548 8.19036 8.19036C8.81548 7.56524 9.16667 6.71739 9.16667 5.83333V3.33333C9.16667 2.44928 8.81548 1.60143 8.19036 0.976311C7.56524 0.35119 6.71739 0 5.83333 0ZM7.5 5.83333C7.5 6.27536 7.32441 6.69928 7.01184 7.01184C6.69928 7.32441 6.27536 7.5 5.83333 7.5H3.33333C2.89131 7.5 2.46738 7.32441 2.15482 7.01184C1.84226 6.69928 1.66667 6.27536 1.66667 5.83333V3.33333C1.66667 2.89131 1.84226 2.46738 2.15482 2.15482C2.46738 1.84226 2.89131 1.66667 3.33333 1.66667H5.83333C6.27536 1.66667 6.69928 1.84226 7.01184 2.15482C7.32441 2.46738 7.5 2.89131 7.5 3.33333V5.83333Z" fill="#999999"/>
<path d="M5.83333 10.8333H3.33333C2.44928 10.8333 1.60143 11.1845 0.976311 11.8096C0.35119 12.4347 0 13.2826 0 14.1666L0 16.6666C0 17.5507 0.35119 18.3985 0.976311 19.0237C1.60143 19.6488 2.44928 20 3.33333 20H5.83333C6.71739 20 7.56524 19.6488 8.19036 19.0237C8.81548 18.3985 9.16667 17.5507 9.16667 16.6666V14.1666C9.16667 13.2826 8.81548 12.4347 8.19036 11.8096C7.56524 11.1845 6.71739 10.8333 5.83333 10.8333ZM7.5 16.6666C7.5 17.1087 7.32441 17.5326 7.01184 17.8452C6.69928 18.1577 6.27536 18.3333 5.83333 18.3333H3.33333C2.89131 18.3333 2.46738 18.1577 2.15482 17.8452C1.84226 17.5326 1.66667 17.1087 1.66667 16.6666V14.1666C1.66667 13.7246 1.84226 13.3007 2.15482 12.9881C2.46738 12.6756 2.89131 12.5 3.33333 12.5H5.83333C6.27536 12.5 6.69928 12.6756 7.01184 12.9881C7.32441 13.3007 7.5 13.7246 7.5 14.1666V16.6666Z" fill="#999999"/>
<path d="M16.6667 10.8333H14.1667C13.2827 10.8333 12.4348 11.1845 11.8097 11.8096C11.1846 12.4347 10.8334 13.2826 10.8334 14.1666V16.6666C10.8334 17.5507 11.1846 18.3985 11.8097 19.0237C12.4348 19.6488 13.2827 20 14.1667 20H16.6667C17.5508 20 18.3986 19.6488 19.0237 19.0237C19.6489 18.3985 20 17.5507 20 16.6666V14.1666C20 13.2826 19.6489 12.4347 19.0237 11.8096C18.3986 11.1845 17.5508 10.8333 16.6667 10.8333ZM18.3334 16.6666C18.3334 17.1087 18.1578 17.5326 17.8452 17.8452C17.5327 18.1577 17.1087 18.3333 16.6667 18.3333H14.1667C13.7247 18.3333 13.3008 18.1577 12.9882 17.8452C12.6756 17.5326 12.5 17.1087 12.5 16.6666V14.1666C12.5 13.7246 12.6756 13.3007 12.9882 12.9881C13.3008 12.6756 13.7247 12.5 14.1667 12.5H16.6667C17.1087 12.5 17.5327 12.6756 17.8452 12.9881C18.1578 13.3007 18.3334 13.7246 18.3334 14.1666V16.6666Z" fill="#999999"/>
<path d="M11.6667 5.83331H14.1667V8.33331C14.1667 8.55433 14.2545 8.76629 14.4108 8.92257C14.5671 9.07885 14.779 9.16665 15 9.16665C15.2211 9.16665 15.433 9.07885 15.5893 8.92257C15.7456 8.76629 15.8334 8.55433 15.8334 8.33331V5.83331H18.3334C18.5544 5.83331 18.7664 5.74552 18.9226 5.58924C19.0789 5.43296 19.1667 5.22099 19.1667 4.99998C19.1667 4.77897 19.0789 4.567 18.9226 4.41072C18.7664 4.25444 18.5544 4.16665 18.3334 4.16665H15.8334V1.66665C15.8334 1.44563 15.7456 1.23367 15.5893 1.07739C15.433 0.92111 15.2211 0.833313 15 0.833313C14.779 0.833313 14.5671 0.92111 14.4108 1.07739C14.2545 1.23367 14.1667 1.44563 14.1667 1.66665V4.16665H11.6667C11.4457 4.16665 11.2337 4.25444 11.0775 4.41072C10.9212 4.567 10.8334 4.77897 10.8334 4.99998C10.8334 5.22099 10.9212 5.43296 11.0775 5.58924C11.2337 5.74552 11.4457 5.83331 11.6667 5.83331Z" fill="#999999"/>
</g>
<defs>
<clipPath id="clip0_76_112">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 B

View File

@ -0,0 +1,13 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_76_222)">
<path d="M1.66668 9.16668H10.8334C11.7538 9.16668 12.5 8.42047 12.5 7.5V1.66668C12.5 0.746211 11.7538 0 10.8333 0H1.66668C0.746211 0 0 0.746211 0 1.66668V7.5C0 8.42047 0.746211 9.16668 1.66668 9.16668Z" fill="#999999"/>
<path d="M19.715 0.735C19.4053 0.275547 18.8874 7.8125e-05 18.3333 0H15.8333C14.9128 0 14.1666 0.746211 14.1666 1.66668V7.5C14.1666 8.42047 14.9128 9.16668 15.8333 9.16668H18.3333C19.2538 9.16668 20 8.42047 20 7.5V1.66668C20.0005 1.33457 19.9012 1.00996 19.715 0.735Z" fill="#999999"/>
<path d="M5.09832 11.1183C4.82336 10.9321 4.49875 10.8328 4.16664 10.8333H1.66664C0.746211 10.8333 0 11.5795 0 12.5V18.3333C0 19.2538 0.746211 20 1.66668 20H4.16668C5.08715 20 5.83336 19.2538 5.83336 18.3333V12.5C5.83324 11.9459 5.55777 11.4281 5.09832 11.1183Z" fill="#999999"/>
<path d="M19.265 11.1183C18.99 10.9321 18.6654 10.8328 18.3333 10.8333H9.16668C8.24621 10.8333 7.5 11.5795 7.5 12.5V18.3333C7.5 19.2538 8.24621 20 9.16668 20H18.3334C19.2538 20 20 19.2538 20 18.3333V12.5C19.9999 11.9459 19.7245 11.4281 19.265 11.1183Z" fill="#999999"/>
</g>
<defs>
<clipPath id="clip0_76_222">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 459 B

13
assets/icons/Layout.svg Normal file
View File

@ -0,0 +1,13 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_76_67)">
<path d="M1.66667 9.16667H10.8333C11.2754 9.16667 11.6993 8.99107 12.0118 8.67851C12.3244 8.36595 12.5 7.94203 12.5 7.5V1.66667C12.5 1.22464 12.3244 0.800716 12.0118 0.488155C11.6993 0.175595 11.2754 0 10.8333 0L1.66667 0C1.22464 0 0.800716 0.175595 0.488155 0.488155C0.175595 0.800716 0 1.22464 0 1.66667L0 7.5C0 7.94203 0.175595 8.36595 0.488155 8.67851C0.800716 8.99107 1.22464 9.16667 1.66667 9.16667ZM1.66667 1.66667H10.8333V7.5H1.66667V1.66667Z" fill="#999999"/>
<path d="M18.3334 0H15.8334C15.3913 0 14.9674 0.175595 14.6548 0.488155C14.3423 0.800716 14.1667 1.22464 14.1667 1.66667V7.5C14.1667 7.94203 14.3423 8.36595 14.6548 8.67851C14.9674 8.99107 15.3913 9.16667 15.8334 9.16667H18.3334C18.7754 9.16667 19.1993 8.99107 19.5119 8.67851C19.8244 8.36595 20 7.94203 20 7.5V1.66667C20 1.22464 19.8244 0.800716 19.5119 0.488155C19.1993 0.175595 18.7754 0 18.3334 0ZM18.3334 7.5H15.8334V1.66667H18.3334V7.5Z" fill="#999999"/>
<path d="M4.16667 10.8333H1.66667C1.22464 10.8333 0.800716 11.0089 0.488155 11.3215C0.175595 11.634 0 12.058 0 12.5L0 18.3333C0 18.7753 0.175595 19.1993 0.488155 19.5118C0.800716 19.8244 1.22464 20 1.66667 20H4.16667C4.60869 20 5.03262 19.8244 5.34518 19.5118C5.65774 19.1993 5.83333 18.7753 5.83333 18.3333V12.5C5.83333 12.058 5.65774 11.634 5.34518 11.3215C5.03262 11.0089 4.60869 10.8333 4.16667 10.8333ZM4.16667 18.3333H1.66667V12.5H4.16667V18.3333Z" fill="#999999"/>
<path d="M18.3333 10.8333H9.16667C8.72464 10.8333 8.30072 11.0089 7.98816 11.3215C7.6756 11.634 7.5 12.058 7.5 12.5V18.3333C7.5 18.7753 7.6756 19.1993 7.98816 19.5118C8.30072 19.8244 8.72464 20 9.16667 20H18.3333C18.7754 20 19.1993 19.8244 19.5118 19.5118C19.8244 19.1993 20 18.7753 20 18.3333V12.5C20 12.058 19.8244 11.634 19.5118 11.3215C19.1993 11.0089 18.7754 10.8333 18.3333 10.8333ZM18.3333 18.3333H9.16667V12.5H18.3333V18.3333Z" fill="#999999"/>
</g>
<defs>
<clipPath id="clip0_76_67">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 466 B

View File

@ -0,0 +1,12 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_76_239)">
<path d="M0.834214 3.95894H3.11399C3.56394 5.61448 5.27076 6.5918 6.9263 6.14185C7.98959 5.85285 8.82022 5.02223 9.10921 3.95894H19.1657C19.6259 3.95894 19.9989 3.58589 19.9989 3.1257C19.9989 2.66552 19.6259 2.29247 19.1657 2.29247H9.10921C8.65926 0.636889 6.95243 -0.340435 5.29689 0.10952C4.2336 0.398514 3.40298 1.22913 3.11399 2.29243H0.834214C0.374025 2.29243 0.000976562 2.66548 0.000976562 3.12566C0.000976562 3.58585 0.374025 3.95894 0.834214 3.95894Z" fill="#999999"/>
<path d="M19.1657 9.16672H16.8859C16.4369 7.51142 14.731 6.53355 13.0757 6.98256C12.0115 7.27125 11.1802 8.10253 10.8915 9.16672H0.834214C0.374025 9.16672 0.000976562 9.53977 0.000976562 9.99996C0.000976562 10.4601 0.374025 10.8332 0.834214 10.8332H10.8915C11.3406 12.4885 13.0465 13.4664 14.7018 13.0174C15.7659 12.7287 16.5973 11.8974 16.8859 10.8332H19.1657C19.6259 10.8332 19.9989 10.4601 19.9989 9.99996C19.9989 9.53977 19.6259 9.16672 19.1657 9.16672Z" fill="#999999"/>
<path d="M19.1657 16.0411H9.10921C8.65926 14.3855 6.95243 13.4082 5.29689 13.8582C4.2336 14.1472 3.40298 14.9778 3.11399 16.0411H0.834214C0.374025 16.0411 0.000976562 16.4141 0.000976562 16.8743C0.000976562 17.3345 0.374025 17.7076 0.834214 17.7076H3.11399C3.56394 19.3631 5.27076 20.3404 6.9263 19.8905C7.98959 19.6015 8.82022 18.7709 9.10921 17.7076H19.1657C19.6259 17.7076 19.9989 17.3345 19.9989 16.8743C19.9989 16.4141 19.6259 16.0411 19.1657 16.0411Z" fill="#999999"/>
</g>
<defs>
<clipPath id="clip0_76_239">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 537 B

12
assets/icons/Menu.svg Normal file
View File

@ -0,0 +1,12 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_76_181)">
<path d="M0.833333 3.95812H3.11333C3.2922 4.61623 3.68264 5.1972 4.22444 5.6114C4.76623 6.02559 5.42927 6.25 6.11125 6.25C6.79323 6.25 7.45627 6.02559 7.99806 5.6114C8.53986 5.1972 8.9303 4.61623 9.10917 3.95812H19.1667C19.3877 3.95812 19.5996 3.87032 19.7559 3.71404C19.9122 3.55776 20 3.3458 20 3.12479C20 2.90377 19.9122 2.69181 19.7559 2.53553C19.5996 2.37925 19.3877 2.29146 19.1667 2.29146H9.10917C8.9303 1.63335 8.53986 1.05238 7.99806 0.638179C7.45627 0.223982 6.79323 -0.000427246 6.11125 -0.000427246C5.42927 -0.000427246 4.76623 0.223982 4.22444 0.638179C3.68264 1.05238 3.2922 1.63335 3.11333 2.29146H0.833333C0.61232 2.29146 0.400358 2.37925 0.244078 2.53553C0.0877974 2.69181 0 2.90377 0 3.12479C0 3.3458 0.0877974 3.55776 0.244078 3.71404C0.400358 3.87032 0.61232 3.95812 0.833333 3.95812ZM6.11083 1.66646C6.39926 1.66646 6.68122 1.75198 6.92104 1.91223C7.16086 2.07247 7.34778 2.30023 7.45816 2.56671C7.56854 2.83318 7.59742 3.12641 7.54115 3.4093C7.48488 3.69218 7.34598 3.95203 7.14203 4.15599C6.93808 4.35994 6.67823 4.49883 6.39534 4.5551C6.11245 4.61137 5.81923 4.58249 5.55275 4.47211C5.28628 4.36173 5.05852 4.17482 4.89827 3.935C4.73803 3.69517 4.6525 3.41322 4.6525 3.12479C4.65294 2.73815 4.80673 2.36747 5.08012 2.09408C5.35352 1.82068 5.72419 1.6669 6.11083 1.66646Z" fill="#999999"/>
<path d="M19.1667 9.16666H16.8867C16.7081 8.50839 16.3178 7.92722 15.7761 7.51285C15.2343 7.09848 14.5712 6.87396 13.8892 6.87396C13.2071 6.87396 12.544 7.09848 12.0023 7.51285C11.4605 7.92722 11.0702 8.50839 10.8917 9.16666H0.833333C0.61232 9.16666 0.400358 9.25446 0.244078 9.41074C0.0877974 9.56702 0 9.77898 0 9.99999C0 10.221 0.0877974 10.433 0.244078 10.5892C0.400358 10.7455 0.61232 10.8333 0.833333 10.8333H10.8917C11.0702 11.4916 11.4605 12.0728 12.0023 12.4871C12.544 12.9015 13.2071 13.126 13.8892 13.126C14.5712 13.126 15.2343 12.9015 15.7761 12.4871C16.3178 12.0728 16.7081 11.4916 16.8867 10.8333H19.1667C19.3877 10.8333 19.5996 10.7455 19.7559 10.5892C19.9122 10.433 20 10.221 20 9.99999C20 9.77898 19.9122 9.56702 19.7559 9.41074C19.5996 9.25446 19.3877 9.16666 19.1667 9.16666ZM13.8892 11.4583C13.6007 11.4583 13.3188 11.3728 13.079 11.2126C12.8391 11.0523 12.6522 10.8245 12.5418 10.5581C12.4315 10.2916 12.4026 9.99837 12.4589 9.71548C12.5151 9.4326 12.654 9.17274 12.858 8.96879C13.0619 8.76484 13.3218 8.62595 13.6047 8.56968C13.8875 8.51341 14.1808 8.54229 14.4472 8.65267C14.7137 8.76304 14.9415 8.94996 15.1017 9.18978C15.262 9.42961 15.3475 9.71156 15.3475 9.99999C15.3471 10.3866 15.1933 10.7573 14.9199 11.0307C14.6465 11.3041 14.2758 11.4579 13.8892 11.4583Z" fill="#999999"/>
<path d="M19.1667 16.0416H9.10917C8.9303 15.3835 8.53986 14.8026 7.99806 14.3884C7.45627 13.9742 6.79323 13.7498 6.11125 13.7498C5.42927 13.7498 4.76623 13.9742 4.22444 14.3884C3.68264 14.8026 3.2922 15.3835 3.11333 16.0416H0.833333C0.61232 16.0416 0.400358 16.1294 0.244078 16.2857C0.0877974 16.442 0 16.654 0 16.875C0 17.096 0.0877974 17.3079 0.244078 17.4642C0.400358 17.6205 0.61232 17.7083 0.833333 17.7083H3.11333C3.2922 18.3664 3.68264 18.9474 4.22444 19.3616C4.76623 19.7758 5.42927 20.0002 6.11125 20.0002C6.79323 20.0002 7.45627 19.7758 7.99806 19.3616C8.53986 18.9474 8.9303 18.3664 9.10917 17.7083H19.1667C19.3877 17.7083 19.5996 17.6205 19.7559 17.4642C19.9122 17.3079 20 17.096 20 16.875C20 16.654 19.9122 16.442 19.7559 16.2857C19.5996 16.1294 19.3877 16.0416 19.1667 16.0416ZM6.11083 18.3333C5.8224 18.3333 5.54045 18.2478 5.30063 18.0875C5.0608 17.9273 4.87389 17.6995 4.76351 17.4331C4.65313 17.1666 4.62425 16.8734 4.68052 16.5905C4.73679 16.3076 4.87568 16.0477 5.07964 15.8438C5.28359 15.6398 5.54344 15.5009 5.82633 15.4447C6.10922 15.3884 6.40244 15.4173 6.66891 15.5276C6.93539 15.638 7.16315 15.8249 7.32339 16.0648C7.48364 16.3046 7.56917 16.5865 7.56917 16.875C7.56851 17.2615 7.41465 17.6321 7.1413 17.9054C6.86795 18.1788 6.4974 18.3326 6.11083 18.3333Z" fill="#999999"/>
</g>
<defs>
<clipPath id="clip0_76_181">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,10 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_76_237)">
<path d="M10 0C4.48583 0 0 4.48583 0 10C0 15.5142 4.48583 20 10 20C15.5142 20 20 15.5142 20 10C20 4.48583 15.5142 0 10 0ZM13.67 11.5608L9.32667 13.9392C9.05583 14.0917 8.7575 14.1675 8.45917 14.1675C8.14833 14.1675 7.83667 14.085 7.55333 13.92C6.9975 13.595 6.66667 13.0175 6.66667 12.3742V7.625C6.66667 6.98167 6.9975 6.40417 7.55333 6.07917C8.1075 5.755 8.77417 5.74917 9.335 6.065L13.6617 8.43417C14.2417 8.76 14.5825 9.34333 14.5825 9.99917C14.5825 10.655 14.2417 11.2383 13.6692 11.56L13.67 11.5608ZM12.9167 10C12.9167 10.0725 12.8683 10.0992 12.8617 10.1042L8.51833 12.4833C8.5025 12.4917 8.45417 12.5183 8.39583 12.4825C8.33417 12.4467 8.33417 12.3933 8.33417 12.3758V7.62667C8.33417 7.60917 8.33417 7.55583 8.39583 7.52C8.41833 7.50667 8.43917 7.5025 8.4575 7.5025C8.4875 7.5025 8.51167 7.51583 8.52667 7.52417L12.8533 9.89417C12.8692 9.90333 12.9167 9.93 12.9167 10.0025V10Z" fill="#999999"/>
</g>
<defs>
<clipPath id="clip0_76_237">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 657 B

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.6625 8.435L9.33583 6.06583C8.775 5.75 8.10833 5.75583 7.55417 6.08C6.99833 6.405 6.6675 6.9825 6.6675 7.62583V12.375C6.6675 13.0183 6.99833 13.5958 7.55417 13.9208C7.8375 14.0867 8.14917 14.1683 8.46 14.1683C8.75833 14.1683 9.05667 14.0925 9.3275 13.94L13.6708 11.5617C14.2433 11.24 14.5842 10.6567 14.5842 10.0008C14.5842 9.345 14.2433 8.76167 13.6633 8.43583L13.6625 8.435ZM12.8617 10.1042L8.51833 12.4833C8.5025 12.4917 8.45417 12.5183 8.39583 12.4825C8.33417 12.4467 8.33417 12.3933 8.33417 12.3758V7.62667C8.33417 7.60917 8.33417 7.55583 8.39583 7.52C8.41833 7.50667 8.43917 7.5025 8.4575 7.5025C8.4875 7.5025 8.51167 7.51583 8.52667 7.52417L12.8533 9.89417C12.8692 9.90333 12.9167 9.93 12.9167 10.0025C12.9167 10.075 12.8683 10.1017 12.8617 10.1067V10.1042ZM10 0C4.48583 0 0 4.48583 0 10C0 15.5142 4.48583 20 10 20C15.5142 20 20 15.5142 20 10C20 4.48583 15.5142 0 10 0ZM10 18.3333C5.405 18.3333 1.66667 14.595 1.66667 10C1.66667 5.405 5.405 1.66667 10 1.66667C14.595 1.66667 18.3333 5.405 18.3333 10C18.3333 14.595 14.595 18.3333 10 18.3333Z" fill="#999999"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

14
assets/icons/Summer.svg Normal file
View File

@ -0,0 +1,14 @@
<svg width="26" height="30" viewBox="0 0 26 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.93039 2.25768C5.18788 3.39706 6.57032 3.84612 7.44809 3.07571C7.5964 2.94547 7.81865 3.10683 7.7406 3.28811C7.27894 4.36111 8.13336 5.5371 9.29654 5.42976C9.49314 5.41167 9.57806 5.6726 9.40823 5.77354C8.40413 6.37046 8.40413 7.82409 9.40823 8.42078C9.57806 8.52172 9.49314 8.78265 9.29654 8.76456C8.13336 8.65722 7.27894 9.83321 7.7406 10.9062C7.81865 11.0877 7.5964 11.2488 7.44809 11.1186C6.57032 10.3482 5.18765 10.7975 4.93039 11.9366C4.8869 12.1294 4.61247 12.1294 4.56898 11.9366C4.31172 10.7973 2.92927 10.3482 2.05128 11.1186C1.90297 11.2488 1.68072 11.0877 1.75877 10.9062C2.22042 9.83321 1.36601 8.65722 0.202831 8.76456C0.00622152 8.78265 -0.0786937 8.52172 0.0911367 8.42078C1.09524 7.82409 1.09524 6.37046 0.0911367 5.77354C-0.0784648 5.6726 0.00622152 5.41167 0.202831 5.42976C1.36601 5.5371 2.22042 4.36111 1.75877 3.28811C1.68072 3.10683 1.90297 2.94547 2.05128 3.07571C2.92927 3.84612 4.31172 3.39706 4.56898 2.25768C4.61247 2.06496 4.8869 2.06496 4.93039 2.25768Z" fill="#FD8F31"/>
<path d="M9.40828 8.42078C8.40417 7.82409 8.40417 6.37046 9.40828 5.77354C9.57811 5.67283 9.49319 5.41167 9.29659 5.42999C8.13364 5.53733 7.27922 4.36111 7.74065 3.28811C7.8187 3.10683 7.59668 2.94547 7.44814 3.07571C6.57037 3.84635 5.18793 3.39706 4.93044 2.25768C4.88695 2.06496 4.61252 2.06496 4.56903 2.25768C4.47382 2.67905 4.22479 3.00544 3.90436 3.21143C5.04099 4.1249 5.76906 5.52566 5.76906 7.09739C5.76906 8.66889 5.04099 10.0699 3.90436 10.9833C4.22479 11.1891 4.47382 11.5157 4.56903 11.9369C4.61252 12.1296 4.88718 12.1296 4.93044 11.9369C5.18793 10.7975 6.57037 10.3484 7.44814 11.1188C7.59668 11.2491 7.8187 11.0879 7.74065 10.9064C7.27922 9.83344 8.13364 8.65745 9.29659 8.76479C9.49319 8.78288 9.57811 8.52172 9.40828 8.42078Z" fill="#FF7F1F"/>
<path d="M6.79305 7.09717C6.79305 8.22578 5.8782 9.1404 4.74959 9.1404C3.6212 9.1404 2.70636 8.22578 2.70636 7.09717C2.70636 5.96878 3.6212 5.05394 4.74959 5.05394C5.8782 5.05394 6.79305 5.96878 6.79305 7.09717Z" fill="#FCCF3F"/>
<path d="M19.5711 18.4779V3.6422C19.5711 1.63055 17.9403 0 15.9289 0C13.9172 0 12.2867 1.63055 12.2867 3.6422V18.4779C10.657 19.6243 9.59229 21.5195 9.59229 23.6634C9.59229 27.163 12.4293 30 15.9289 30C19.4285 30 22.2655 27.163 22.2655 23.6634C22.2655 21.5195 21.2005 19.6243 19.5711 18.4779Z" fill="#D8D8D8"/>
<path d="M15.9288 27.9247C13.5157 27.9247 11.5526 25.9614 11.5526 23.5485C11.5526 21.7161 12.6913 20.0846 14.3999 19.4481V3.6422C14.3999 2.799 15.0856 2.11327 15.9288 2.11327C16.7718 2.11327 17.4578 2.799 17.4578 3.6422V19.4481C19.1661 20.0844 20.3051 21.7159 20.3051 23.5483C20.3051 25.9614 18.3419 27.9247 15.9288 27.9247Z" fill="#F3E8D7"/>
<path d="M14.3999 6.43776V19.4481C12.6913 20.0844 11.5526 21.7159 11.5526 23.5483C11.5526 25.9614 13.5157 27.9245 15.9288 27.9245C18.3419 27.9245 20.3051 25.9614 20.3051 23.5483C20.3051 21.7159 19.1661 20.0844 17.4578 19.4481V6.43776H14.3999Z" fill="#FC4E51"/>
<path d="M24.6156 10.5597H21.9892C21.739 10.5597 21.5364 10.3569 21.5364 10.107C21.5364 9.85703 21.739 9.65424 21.9892 9.65424H24.6156C24.8655 9.65424 25.0683 9.85703 25.0683 10.107C25.0683 10.3569 24.8655 10.5597 24.6156 10.5597Z" fill="#0D6E9A"/>
<path d="M23.1816 6.89049H21.9892C21.739 6.89049 21.5364 6.6877 21.5364 6.43776C21.5364 6.18782 21.739 5.98503 21.9892 5.98503H23.1816C23.4316 5.98503 23.6344 6.18782 23.6344 6.43776C23.6344 6.6877 23.4316 6.89049 23.1816 6.89049Z" fill="#0D6E9A"/>
<path d="M23.6042 3.22128H21.9892C21.739 3.22128 21.5364 3.01849 21.5364 2.76855C21.5364 2.51862 21.739 2.31583 21.9892 2.31583H23.6042C23.8543 2.31583 24.0569 2.51862 24.0569 2.76855C24.0569 3.01849 23.8543 3.22128 23.6042 3.22128Z" fill="#0D6E9A"/>
<path d="M23.6042 17.8981H21.9892C21.739 17.8981 21.5364 17.6953 21.5364 17.4454C21.5364 17.1952 21.739 16.9926 21.9892 16.9926H23.6042C23.8543 16.9926 24.0569 17.1952 24.0569 17.4454C24.0569 17.6953 23.8543 17.8981 23.6042 17.8981Z" fill="#0D6E9A"/>
<path d="M23.1816 14.2289H21.9892C21.739 14.2289 21.5364 14.0261 21.5364 13.7762C21.5364 13.5262 21.739 13.3234 21.9892 13.3234H23.1816C23.4316 13.3234 23.6344 13.5262 23.6344 13.7762C23.6344 14.0261 23.4316 14.2289 23.1816 14.2289Z" fill="#0D6E9A"/>
<path d="M17.4578 19.4481V6.43776H14.3999V19.4481C14.3999 19.4481 16.5136 20.4288 16.5136 23.5483C16.5136 25.2827 15.4995 26.7847 14.033 27.4924C14.6068 27.7693 15.25 27.9245 15.9286 27.9245C18.3417 27.9245 20.3051 25.9614 20.3051 23.5483C20.3051 21.7159 19.1662 20.0846 17.4578 19.4481Z" fill="#E5394B"/>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

12
assets/icons/Winter.svg Normal file
View File

@ -0,0 +1,12 @@
<svg width="25" height="30" viewBox="0 0 25 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.7514 18.4779V3.6422C18.7514 1.63055 17.1208 0 15.1094 0C13.0978 0 11.4672 1.63055 11.4672 3.6422V18.4779C9.83759 19.6243 8.77283 21.5195 8.77283 23.6634C8.77283 27.163 11.6098 30 15.1094 30C18.609 30 21.446 27.163 21.446 23.6634C21.446 21.5195 20.381 19.6243 18.7514 18.4779Z" fill="#D8D8D8"/>
<path d="M15.1094 27.9247C12.6963 27.9247 10.7332 25.9614 10.7332 23.5485C10.7332 21.7161 11.8718 20.0846 13.5804 19.4481V3.6422C13.5804 2.799 14.2662 2.11327 15.1094 2.11327C15.9523 2.11327 16.6383 2.799 16.6383 3.6422V19.4481C18.3467 20.0844 19.4856 21.7159 19.4856 23.5483C19.4856 25.9614 17.5225 27.9247 15.1094 27.9247Z" fill="#F3E8D7"/>
<path d="M13.5803 17.5106V19.4481C11.8719 20.0846 10.733 21.7161 10.733 23.5485C10.733 25.9614 12.6963 27.9247 15.1094 27.9247C17.5223 27.9247 19.4856 25.9614 19.4856 23.5485C19.4856 21.7161 18.3467 20.0846 16.6384 19.4481V17.5106H13.5803Z" fill="#69E6ED"/>
<path d="M16.6383 19.4481V17.5106H13.5805V19.4481C13.5805 19.4481 15.6942 20.4288 15.6942 23.5485C15.6942 25.2827 14.68 26.7847 13.2136 27.4924C13.7874 27.7693 14.4305 27.9247 15.1094 27.9247C17.5223 27.9247 19.4856 25.9614 19.4856 23.5485C19.4856 21.7159 18.3467 20.0846 16.6383 19.4481Z" fill="#33D8DD"/>
<path d="M23.7962 10.5597H21.1698C20.9196 10.5597 20.717 10.3569 20.717 10.107C20.717 9.85703 20.9196 9.65424 21.1698 9.65424H23.7962C24.0461 9.65424 24.2487 9.85703 24.2487 10.107C24.2489 10.3569 24.0461 10.5597 23.7962 10.5597Z" fill="#0D6E9A"/>
<path d="M22.3622 6.89049H21.1698C20.9196 6.89049 20.717 6.6877 20.717 6.43776C20.717 6.18782 20.9196 5.98503 21.1698 5.98503H22.3622C22.6122 5.98503 22.815 6.18782 22.815 6.43776C22.815 6.6877 22.6122 6.89049 22.3622 6.89049Z" fill="#0D6E9A"/>
<path d="M22.7848 3.22128H21.1698C20.9196 3.22128 20.717 3.01849 20.717 2.76855C20.717 2.51862 20.9196 2.31583 21.1698 2.31583H22.7848C23.0349 2.31583 23.2375 2.51862 23.2375 2.76855C23.2375 3.01849 23.0349 3.22128 22.7848 3.22128Z" fill="#0D6E9A"/>
<path d="M22.7848 17.8981H21.1698C20.9196 17.8981 20.717 17.6953 20.717 17.4454C20.717 17.1952 20.9196 16.9926 21.1698 16.9926H22.7848C23.0349 16.9926 23.2375 17.1952 23.2375 17.4454C23.2375 17.6953 23.0349 17.8981 22.7848 17.8981Z" fill="#0D6E9A"/>
<path d="M22.3622 14.2289H21.1698C20.9196 14.2289 20.717 14.0261 20.717 13.7762C20.717 13.5262 20.9196 13.3234 21.1698 13.3234H22.3622C22.6122 13.3234 22.815 13.5262 22.815 13.7762C22.815 14.0261 22.6122 14.2289 22.3622 14.2289Z" fill="#0D6E9A"/>
<path d="M8.88749 9.01726L8.11478 8.58467L8.68287 8.3519C8.91426 8.25714 9.02504 7.99278 8.93029 7.76161C8.83553 7.53021 8.57094 7.41943 8.33977 7.51419L7.10564 8.01979L5.48607 7.11296L7.10564 6.20613L8.33977 6.71173C8.39608 6.73462 8.45398 6.74561 8.5112 6.74561C8.6895 6.74561 8.85865 6.6394 8.93029 6.46431C9.02504 6.23291 8.91426 5.96855 8.68309 5.87379L8.11501 5.64102L8.88749 5.20844C9.10561 5.08621 9.18343 4.81041 9.06121 4.59229C8.93921 4.37416 8.66341 4.29634 8.44506 4.41833L7.67258 4.85092L7.771 4.24507C7.81128 3.99811 7.64374 3.76556 7.39678 3.72551C7.15027 3.68523 6.9175 3.853 6.87745 4.09973L6.66344 5.41603L5.01229 6.34071V4.44832L6.05622 3.61839C6.25214 3.46298 6.28464 3.17802 6.129 2.98233C5.97359 2.78664 5.68863 2.75414 5.49294 2.90955L5.01229 3.29178V2.40623C5.01229 2.1563 4.80973 1.95351 4.55956 1.95351C4.30962 1.95351 4.10683 2.1563 4.10683 2.40623V3.29178L3.62618 2.90977C3.43048 2.75414 3.14576 2.78664 2.99012 2.98233C2.83471 3.17825 2.86721 3.46298 3.0629 3.61862L4.10683 4.44832V6.34071L2.45568 5.41603L2.24167 4.09973C2.20162 3.853 1.96907 3.68523 1.72234 3.72551C1.47538 3.76556 1.30783 3.99811 1.34812 4.24507L1.44654 4.85092L0.67406 4.41833C0.455936 4.29634 0.179904 4.37416 0.0579105 4.59229C-0.0643124 4.81041 0.0135074 5.08644 0.231632 5.20844L1.00434 5.64102L0.436023 5.87379C0.204853 5.96855 0.0940738 6.23291 0.188831 6.46431C0.260471 6.6394 0.429615 6.74561 0.607914 6.74561C0.665134 6.74561 0.72327 6.73462 0.779346 6.71173L2.01348 6.20613L3.63304 7.11296L2.01348 8.01979L0.779346 7.51419C0.547718 7.41943 0.283588 7.53021 0.188831 7.76161C0.0940738 7.99278 0.204853 8.25737 0.436023 8.3519L1.00411 8.58467L0.231632 9.01726C0.0135074 9.13948 -0.0643124 9.41528 0.0576816 9.63341C0.140766 9.78172 0.294574 9.86504 0.453189 9.86504C0.528034 9.86504 0.604023 9.8465 0.67406 9.80736L1.44654 9.37477L1.34812 9.98085C1.30783 10.2276 1.47538 10.4601 1.72234 10.5004C1.74683 10.5043 1.77132 10.5064 1.79535 10.5064C2.01348 10.5064 2.20574 10.3482 2.24167 10.1262L2.45568 8.80966L4.10683 7.88521V9.7776L3.06267 10.6073C2.86698 10.7629 2.83448 11.0477 2.99012 11.2434C3.14553 11.4393 3.43048 11.4718 3.62618 11.3161L4.10683 10.9341V11.8197C4.10683 12.0696 4.30939 12.2722 4.55956 12.2722C4.8095 12.2722 5.01229 12.0696 5.01229 11.8197V10.9341L5.49294 11.3161C5.57625 11.3823 5.67536 11.4146 5.77423 11.4146C5.90744 11.4146 6.03951 11.356 6.12877 11.2434C6.28441 11.0477 6.25191 10.7629 6.05622 10.6073L5.01206 9.7776V7.88521L6.66321 8.80966L6.87722 10.1262C6.91315 10.3484 7.10541 10.5064 7.32354 10.5064C7.34757 10.5064 7.37206 10.5043 7.39655 10.5004C7.64351 10.4601 7.81105 10.2276 7.771 9.98085L7.67235 9.37477L8.44506 9.80736C8.51487 9.8465 8.59085 9.86504 8.6657 9.86504C8.82431 9.86504 8.97812 9.78172 9.06121 9.63341C9.18343 9.41528 9.10561 9.13948 8.88749 9.01726Z" fill="#33D8DD"/>
</svg>

After

Width:  |  Height:  |  Size: 5.3 KiB

3
assets/icons/active.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="13" height="23" viewBox="0 0 13 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.03065 0L0.220878 11.2883H4.45397L0.0797729 23L11.6503 9.17177H7.55828L12.9202 0H4.03065Z" fill="#F7CF52"/>
</svg>

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 617 B

View File

@ -0,0 +1,3 @@
<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.9167 8.71179C19.5893 6.19131 18.3144 3.89007 16.3512 2.27583C14.388 0.661581 11.8837 -0.144533 9.34747 0.0213309C6.81122 0.187195 4.4333 1.31259 2.69703 3.16877C0.960757 5.02496 -0.00356686 7.47263 6.17117e-05 10.0143C-0.00474196 11.3747 0.270943 12.7215 0.809907 13.9707C1.34887 15.2198 2.13954 16.3444 3.13256 17.2743C3.89201 17.9774 4.89269 18.3617 5.92756 18.3476H14.0667C15.16 18.3502 16.2104 17.9224 16.9909 17.1568C18.1032 16.0747 18.947 14.7475 19.455 13.2812C19.963 11.8149 20.1211 10.2501 19.9167 8.71179ZM6.22673 15.5651C6.15442 15.6474 6.06662 15.7145 5.96833 15.7628C5.87005 15.8111 5.76322 15.8395 5.65394 15.8465C5.54466 15.8534 5.43508 15.8388 5.33146 15.8034C5.22785 15.768 5.13222 15.7125 5.05006 15.6401C3.90472 14.6346 3.0932 13.3037 2.72376 11.825C2.35432 10.3463 2.44452 8.79015 2.98233 7.36406C3.52013 5.93796 4.47998 4.70975 5.73383 3.84325C6.98768 2.97675 8.47593 2.51315 10.0001 2.51429C10.6322 2.51448 11.2618 2.59371 11.8742 2.75012C11.9803 2.77748 12.0799 2.82546 12.1674 2.89132C12.2549 2.95717 12.3286 3.03962 12.3842 3.13395C12.4398 3.22828 12.4763 3.33264 12.4917 3.44108C12.507 3.54952 12.5008 3.65992 12.4734 3.76596C12.446 3.872 12.3981 3.97162 12.3322 4.05912C12.2663 4.14662 12.1839 4.22029 12.0896 4.27593C11.9952 4.33157 11.8909 4.36808 11.7824 4.38338C11.674 4.39869 11.5636 4.39248 11.4576 4.36513C10.188 4.03606 8.84452 4.14482 7.64441 4.67382C6.4443 5.20282 5.45768 6.12113 4.84409 7.28028C4.2305 8.43942 4.0258 9.77164 4.26309 11.0615C4.50038 12.3514 5.16579 13.5236 6.15173 14.3885C6.23396 14.4608 6.30113 14.5486 6.34941 14.6469C6.39768 14.7451 6.42612 14.852 6.43308 14.9612C6.44005 15.0705 6.42541 15.1801 6.39 15.2837C6.35459 15.3873 6.29911 15.483 6.22673 15.5651ZM10.0001 11.681C9.76116 11.6841 9.52437 11.6359 9.30575 11.5395C9.08713 11.4431 8.89178 11.3008 8.73296 11.1223C8.57414 10.9439 8.45555 10.7333 8.38523 10.505C8.31491 10.2766 8.29451 10.0358 8.32541 9.79891C8.3563 9.56199 8.43778 9.33448 8.5643 9.13181C8.69083 8.92914 8.85946 8.75605 9.05874 8.62426C9.25803 8.49247 9.48333 8.40506 9.71935 8.36797C9.95538 8.33088 10.1966 8.34498 10.4267 8.40929L13.5776 5.25846C13.6544 5.17887 13.7464 5.11538 13.8481 5.07171C13.9497 5.02803 14.0591 5.00504 14.1697 5.00408C14.2804 5.00312 14.3901 5.02421 14.4925 5.06611C14.5949 5.10801 14.688 5.16989 14.7662 5.24813C14.8445 5.32637 14.9063 5.41942 14.9482 5.52183C14.9901 5.62424 15.0112 5.73398 15.0103 5.84463C15.0093 5.95528 14.9863 6.06463 14.9426 6.1663C14.899 6.26796 14.8355 6.35992 14.7559 6.43679L11.6051 9.58762C11.6745 9.8341 11.6856 10.0934 11.6373 10.3449C11.589 10.5964 11.4828 10.8331 11.3269 11.0363C11.1711 11.2396 10.9701 11.4036 10.7397 11.5155C10.5094 11.6274 10.2561 11.6841 10.0001 11.681ZM14.9501 15.6401C14.7834 15.78 14.5687 15.8492 14.3518 15.8329C14.1349 15.8165 13.9329 15.7161 13.7891 15.5529C13.6453 15.3897 13.5709 15.1767 13.582 14.9594C13.5931 14.7422 13.6887 14.5378 13.8484 14.3901C14.6587 13.6795 15.256 12.758 15.574 11.7282C15.8919 10.6984 15.9179 9.60054 15.6492 8.55679C15.594 8.34263 15.6261 8.11529 15.7384 7.92478C15.8508 7.73428 16.0342 7.59621 16.2484 7.54096C16.4626 7.4857 16.6899 7.51779 16.8804 7.63016C17.0709 7.74252 17.209 7.92596 17.2642 8.14013C17.4207 8.75257 17.4999 9.38218 17.5001 10.0143C17.4988 11.0793 17.2708 12.1319 16.8311 13.1019C16.3914 14.0719 15.7502 14.9372 14.9501 15.6401Z" fill="#999999"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 692 B

View File

@ -0,0 +1,3 @@
<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.9166 8.53082C19.5892 6.01034 18.3143 3.7091 16.3511 2.09486C14.3878 0.480611 11.8836 -0.325502 9.34735 -0.159638C6.8111 0.00622584 4.43318 1.13162 2.69691 2.9878C0.960635 4.84399 -0.00368893 7.29166 -6.03587e-05 9.83332C-0.00486403 11.1938 0.270821 12.5406 0.809785 13.7897C1.34875 15.0388 2.13942 16.1634 3.13244 17.0933C3.89189 17.7964 4.89257 18.1807 5.92744 18.1667H14.0666C15.1599 18.1692 16.2103 17.7415 16.9908 16.9758C18.103 15.8937 18.9469 14.5665 19.4549 13.1002C19.9629 11.6339 20.121 10.0691 19.9166 8.53082ZM15.8258 15.7808C15.3569 16.2428 14.7248 16.5012 14.0666 16.5H5.92744C5.3185 16.5125 4.72785 16.2916 4.27661 15.8825C3.44934 15.1076 2.79062 14.1705 2.34157 13.1297C1.89251 12.089 1.66275 10.9668 1.66661 9.83332C1.66743 8.66019 1.91558 7.50041 2.39489 6.42966C2.87419 5.35891 3.57387 4.40124 4.44827 3.61916C5.96756 2.24908 7.94247 1.49363 9.98827 1.49999C10.3152 1.50013 10.6418 1.51849 10.9666 1.55499C12.5296 1.73652 14.0092 2.35712 15.2341 3.34492C16.4589 4.33273 17.3788 5.6473 17.8873 7.13639C18.3958 8.62549 18.472 10.2282 18.1072 11.7588C17.7423 13.2894 16.9513 14.6854 15.8258 15.785V15.7808ZM6.50577 13.4042C6.6638 13.5589 6.75389 13.77 6.75624 13.9911C6.75858 14.2123 6.67298 14.4253 6.51827 14.5833C6.36356 14.7413 6.15241 14.8314 5.93128 14.8338C5.71014 14.8361 5.49713 14.7505 5.33911 14.5958C4.39324 13.6693 3.74469 12.4821 3.47611 11.1856C3.20754 9.88907 3.33112 8.54194 3.83109 7.31592C4.33107 6.0899 5.18479 5.04052 6.28344 4.30156C7.38208 3.56259 8.67589 3.1675 9.99994 3.16666C10.3186 3.16656 10.6369 3.18912 10.9524 3.23416C11.0608 3.24978 11.165 3.28659 11.2591 3.3425C11.3532 3.39841 11.4354 3.47232 11.501 3.56C11.5665 3.64768 11.6142 3.74742 11.6411 3.85351C11.6681 3.95961 11.674 4.06998 11.6583 4.17832C11.6439 4.28726 11.6079 4.39223 11.5524 4.48706C11.4969 4.58189 11.423 4.66466 11.335 4.7305C11.247 4.79634 11.1468 4.84393 11.0402 4.87046C10.9335 4.89699 10.8227 4.90193 10.7141 4.88499C9.67118 4.73602 8.60784 4.92029 7.67585 5.41149C6.74386 5.90269 5.99083 6.67573 5.52424 7.62028C5.05764 8.56484 4.90132 9.63264 5.07759 10.6713C5.25385 11.71 5.75369 12.6664 6.50577 13.4042ZM16.5991 8.88082C16.6441 9.19632 16.6667 9.51462 16.6666 9.83332C16.6693 10.7214 16.493 11.6009 16.1482 12.4193C15.8035 13.2377 15.2973 13.9782 14.6599 14.5967C14.5017 14.7514 14.2885 14.8369 14.0672 14.8344C13.8459 14.8319 13.6346 14.7416 13.4799 14.5833C13.3252 14.4251 13.2397 14.2119 13.2422 13.9906C13.2447 13.7693 13.335 13.558 13.4933 13.4033C14.0563 12.8545 14.4815 12.1803 14.7341 11.4357C14.9867 10.6911 15.0595 9.89727 14.9466 9.11915C14.915 8.90024 14.9717 8.67774 15.1041 8.5006C15.2365 8.32345 15.4339 8.20618 15.6529 8.17457C15.8718 8.14297 16.0943 8.19962 16.2714 8.33207C16.4486 8.46452 16.5658 8.66191 16.5974 8.88082H16.5991ZM11.6049 9.40666C11.7052 9.76728 11.6833 10.151 11.5425 10.4978C11.4017 10.8446 11.15 11.1351 10.8267 11.3237C10.5034 11.5124 10.1268 11.5887 9.75554 11.5407C9.38431 11.4928 9.03943 11.3232 8.77475 11.0585C8.51007 10.7938 8.3405 10.4489 8.29252 10.0777C8.24454 9.7065 8.32085 9.32984 8.50953 9.00656C8.69821 8.68328 8.98864 8.43159 9.33547 8.2908C9.68229 8.15001 10.066 8.12804 10.4266 8.22832L13.5774 5.07749C13.6543 4.9979 13.7463 4.93441 13.8479 4.89074C13.9496 4.84706 14.059 4.82408 14.1696 4.82311C14.2803 4.82215 14.39 4.84324 14.4924 4.88514C14.5948 4.92704 14.6879 4.98892 14.7661 5.06716C14.8443 5.1454 14.9062 5.23845 14.9481 5.34086C14.99 5.44327 15.0111 5.55301 15.0101 5.66366C15.0092 5.77431 14.9862 5.88366 14.9425 5.98533C14.8988 6.087 14.8354 6.17895 14.7558 6.25582L11.6049 9.40666Z" fill="#999999"/>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,25 @@
<svg width="23" height="18" viewBox="0 0 23 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22.3031 0.832703H1.45256C1.10928 0.832703 0.830032 1.11285 0.830032 1.45725V16.6318C0.830032 16.9762 1.10928 17.2563 1.45256 17.2563H22.3031C22.6462 17.2563 22.9257 16.9762 22.9257 16.6318V1.45725C22.9257 1.11265 22.6464 0.832703 22.3031 0.832703Z" fill="#E6E7E8"/>
<path d="M21.8881 0.624556V15.7989C21.8881 16.029 21.7023 16.2153 21.4731 16.2153H0.622522C0.393127 16.2153 0.207504 16.029 0.207504 15.7989V0.624556C0.207504 0.394417 0.393127 0.208191 0.622522 0.208191H21.4731C21.7023 0.208191 21.8881 0.394417 21.8881 0.624556Z" fill="white"/>
<path d="M0.207504 15.7989C0.207504 16.0288 0.393127 16.2152 0.622522 16.2152H21.4731C21.7023 16.2152 21.8881 16.0288 21.8881 15.7989V0.832703H0.207504V15.7989Z" fill="#D4FBFF"/>
<path d="M4.44421 8.45071C4.36336 8.45071 4.29 8.3952 4.27055 8.31266C3.4626 4.87562 2.7657 4.37773 2.4283 4.37427C1.65825 4.38423 0.871172 6.79256 0.555856 8.30819C0.535592 8.40517 0.440754 8.46758 0.3447 8.44705C0.248038 8.42672 0.186231 8.33177 0.206293 8.235C0.29566 7.80501 1.11779 4.03293 2.42364 4.01605H2.43336C3.2484 4.01605 3.94267 5.35582 4.61829 8.23053C4.64098 8.32669 4.58161 8.42326 4.48555 8.44603C4.47157 8.44928 4.45799 8.45071 4.44421 8.45071Z" fill="#FFD7E5"/>
<path d="M12.6696 8.59971C12.5887 8.59971 12.5156 8.54421 12.4959 8.46167C11.6916 5.03987 11.001 4.52328 10.6583 4.52328C10.6569 4.52328 10.6553 4.52348 10.6539 4.52348C9.88382 4.53344 9.09695 6.94157 8.78163 8.45719C8.76116 8.55417 8.66632 8.61679 8.57027 8.59605C8.47361 8.57572 8.4118 8.48078 8.43186 8.38401C8.52143 7.95402 9.34356 4.18193 10.6494 4.16526C11.4762 4.15693 12.1656 5.49364 12.8437 8.37953C12.8664 8.4757 12.807 8.57226 12.7109 8.59524C12.6971 8.59829 12.6834 8.59971 12.6696 8.59971Z" fill="#FFD7E5"/>
<path d="M20.7961 8.29596C20.7152 8.29596 20.6418 8.24046 20.6224 8.15792C19.8181 4.73612 19.1275 4.21953 18.7848 4.21953C18.7832 4.21953 18.7818 4.21973 18.7803 4.21973C18.0103 4.2297 17.2234 6.63782 16.9081 8.15345C16.8878 8.25042 16.7928 8.31284 16.6968 8.2923C16.6001 8.27197 16.5383 8.17703 16.5583 8.08026C16.6477 7.65027 17.47 3.87818 18.7759 3.86151C19.5903 3.84647 20.2921 5.1899 20.9701 8.07579C20.9928 8.17195 20.9335 8.26852 20.8374 8.29149C20.8234 8.29454 20.8098 8.29596 20.7961 8.29596Z" fill="#FFD7E5"/>
<path d="M6.52173 12.5619C6.51849 12.5619 6.51545 12.5617 6.5118 12.5617C5.17535 12.5448 4.33377 8.7729 4.24217 8.34291C4.2215 8.24594 4.28493 8.15099 4.38382 8.13087C4.48251 8.11074 4.57958 8.17275 4.60004 8.26972C4.92286 9.78535 5.72898 12.1935 6.51666 12.2034C6.51808 12.2034 6.5197 12.2036 6.52112 12.2036C6.8721 12.2036 7.57913 11.6875 8.40228 8.26525C8.42518 8.16909 8.52386 8.10993 8.62215 8.13188C8.72063 8.15465 8.78143 8.25122 8.75812 8.34759C8.0667 11.2215 7.35582 12.5619 6.52173 12.5619Z" fill="#FFD7E5"/>
<path d="M14.7222 12.5619C14.7187 12.5619 14.7157 12.5617 14.7124 12.5617C13.4066 12.5448 12.5843 8.7729 12.4949 8.34291C12.4748 8.24594 12.5366 8.15099 12.6333 8.13087C12.73 8.11074 12.8244 8.17275 12.8447 8.26972C13.16 9.78535 13.9473 12.1935 14.7169 12.2034C14.7183 12.2034 14.7197 12.2036 14.7214 12.2036C15.064 12.2036 15.7546 11.6875 16.5589 8.26525C16.5816 8.16909 16.6777 8.10972 16.7738 8.13188C16.8698 8.15465 16.9292 8.25122 16.9065 8.34759C16.2315 11.2215 15.5368 12.5619 14.7222 12.5619Z" fill="#FFD7E5"/>
<path d="M21.7088 11.1408C21.6411 11.1408 21.5762 11.102 21.5463 11.0361C20.9983 9.83621 20.6678 8.26468 20.6542 8.1982C20.6339 8.10142 20.696 8.00648 20.7926 7.98615C20.8887 7.96602 20.9837 8.02803 21.0038 8.12501C21.0072 8.14087 21.34 9.72419 21.8711 10.8871C21.912 10.9769 21.8727 11.0831 21.7829 11.1245C21.759 11.1357 21.7339 11.1408 21.7088 11.1408Z" fill="#FFD7E5"/>
<path d="M3.03705 8.32625C2.9718 8.32625 2.91242 8.28111 2.89682 8.21463C2.36042 5.93296 1.90953 5.68534 1.73587 5.69388C1.28093 5.69977 0.771275 7.16925 0.554647 8.21097C0.538435 8.28925 0.461835 8.33946 0.383817 8.32299C0.305798 8.30673 0.255948 8.23008 0.271957 8.15202C0.366997 7.69499 0.884148 5.41535 1.73181 5.40437H1.7385C2.28037 5.40437 2.73795 6.27654 3.17769 8.14815C3.19592 8.22582 3.1479 8.30388 3.07028 8.32238C3.05934 8.32462 3.0482 8.32625 3.03705 8.32625Z" fill="#FA759E"/>
<path d="M8.34899 8.42241C8.28354 8.42241 8.22416 8.37748 8.20856 8.31079C7.67479 6.03929 7.22208 5.79004 7.04983 5.79004C7.04902 5.79004 7.04841 5.79004 7.0476 5.79004C6.59287 5.79593 6.08322 7.26541 5.86659 8.30714C5.85017 8.38541 5.77337 8.43562 5.69576 8.41916C5.61774 8.40289 5.56769 8.32625 5.5839 8.24818C5.67894 7.79115 6.19609 5.51151 7.04375 5.50053H7.05024C7.59211 5.50053 8.04968 6.3727 8.48942 8.24431C8.50766 8.32198 8.45964 8.40004 8.38202 8.41855C8.37088 8.42119 8.35993 8.42241 8.34899 8.42241Z" fill="#FA759E"/>
<path d="M13.5965 8.22601C13.531 8.22601 13.4717 8.18108 13.4561 8.1144C12.9199 5.83293 12.4649 5.59039 12.2951 5.59385C11.8402 5.59974 11.3305 7.06922 11.1139 8.11094C11.0977 8.18921 11.0211 8.23984 10.9433 8.22296C10.8652 8.2067 10.8152 8.12985 10.8314 8.05178C10.9264 7.59476 11.4436 5.31532 12.2913 5.30414H12.2977C12.8396 5.30414 13.2972 6.17651 13.7369 8.04812C13.7552 8.12578 13.7071 8.20385 13.6295 8.22235C13.6186 8.22479 13.6074 8.22601 13.5965 8.22601Z" fill="#FA759E"/>
<path d="M18.8951 8.42241C18.8298 8.42241 18.7704 8.37748 18.7548 8.31079C18.2186 6.02933 17.7635 5.78679 17.5939 5.79004C17.1389 5.79614 16.6293 7.26541 16.4127 8.30714C16.3962 8.38541 16.3198 8.43603 16.242 8.41916C16.1638 8.40289 16.114 8.32625 16.1302 8.24818C16.2252 7.79115 16.7422 5.51151 17.5898 5.50053H17.5965C18.1384 5.50053 18.596 6.3727 19.0357 8.24431C19.0539 8.32198 19.0059 8.40004 18.9283 8.41855C18.9171 8.42119 18.9062 8.42241 18.8951 8.42241Z" fill="#FA759E"/>
<path d="M4.42659 11.1188C4.42436 11.1188 4.42214 11.1188 4.41991 11.1188C3.57204 11.1076 3.05509 8.8282 2.96005 8.37118C2.94384 8.2929 2.99389 8.21626 3.07171 8.19999C3.14993 8.18332 3.22633 8.23374 3.24254 8.31201C3.45937 9.35354 3.96922 10.8234 4.42376 10.8291H4.42599C4.59823 10.8291 5.05074 10.5799 5.58471 8.30856C5.60295 8.2309 5.68077 8.18312 5.75818 8.20081C5.83579 8.2191 5.88361 8.29717 5.86538 8.37504C5.42584 10.2464 4.96847 11.1188 4.42659 11.1188Z" fill="#FA759E"/>
<path d="M9.67409 10.9584C9.67186 10.9584 9.66963 10.9584 9.6674 10.9584C8.81954 10.9474 8.30259 8.6678 8.20755 8.21077C8.19134 8.1325 8.24139 8.05585 8.3192 8.03979C8.39763 8.02312 8.47362 8.07354 8.49003 8.15181C8.70687 9.19333 9.21672 10.663 9.67125 10.6689H9.67348C9.84573 10.6689 10.2982 10.4197 10.8322 8.14815C10.8504 8.07029 10.9281 8.02292 11.0057 8.04061C11.0833 8.0589 11.1311 8.13697 11.1129 8.21484C10.6733 10.086 10.216 10.9584 9.67409 10.9584Z" fill="#FA759E"/>
<path d="M14.9775 10.9842C14.9753 10.9842 14.9733 10.9842 14.971 10.9842C14.123 10.9732 13.6062 8.69361 13.5112 8.23658C13.495 8.15831 13.545 8.08166 13.6228 8.0656C13.7011 8.04893 13.7772 8.09915 13.7935 8.17762C14.0103 9.21915 14.5201 10.6888 14.9747 10.6947H14.9769C15.1492 10.6947 15.6017 10.4455 16.1356 8.17396C16.1539 8.0963 16.2317 8.04873 16.3091 8.06642C16.3867 8.08471 16.4347 8.16278 16.4165 8.24065C15.9768 10.1121 15.5194 10.9842 14.9775 10.9842Z" fill="#FA759E"/>
<path d="M20.2341 11.1188C20.2319 11.1188 20.2299 11.1188 20.2275 11.1188C19.3796 11.1076 18.8628 8.8282 18.7678 8.37118C18.7516 8.2929 18.8016 8.21626 18.8795 8.19999C18.9577 8.18332 19.0339 8.23374 19.0501 8.31201C19.2669 9.35354 19.7768 10.8234 20.2313 10.8291H20.2335C20.4058 10.8291 20.8583 10.5799 21.3923 8.30856C21.4105 8.2309 21.4883 8.18312 21.5657 8.20081C21.6433 8.2191 21.6914 8.29717 21.6731 8.37504C21.2336 10.2464 20.776 11.1188 20.2341 11.1188Z" fill="#FA759E"/>
<path d="M5.67447 8.26302C5.58713 8.26302 5.50789 8.20284 5.48702 8.11399C4.43691 3.6462 3.52015 2.97225 3.06359 2.97225C3.06156 2.97225 3.05953 2.97225 3.05771 2.97225C2.03536 2.98567 1.00147 6.12996 0.589896 8.10912C0.568213 8.21382 0.465674 8.28091 0.361717 8.25895C0.257355 8.2372 0.190482 8.13473 0.212165 8.02983C0.327673 7.47501 1.38812 2.60651 3.05264 2.58496H3.06399C4.08715 2.58496 5.0025 4.36447 5.86252 8.02495C5.88704 8.12884 5.8226 8.23333 5.71905 8.25793C5.70426 8.26139 5.68926 8.26302 5.67447 8.26302Z" fill="#0089EF"/>
<path d="M16.3506 8.26302C16.2633 8.26302 16.1841 8.20284 16.163 8.11399C15.1131 3.6462 14.1963 2.97225 13.7397 2.97225C13.7377 2.97225 13.7357 2.97225 13.7337 2.97225C12.7115 2.98567 11.6778 6.12996 11.2661 8.10912C11.2442 8.21382 11.1418 8.28091 11.0379 8.25895C10.9335 8.2372 10.8666 8.13473 10.8881 8.02983C11.0038 7.47501 12.0641 2.60651 13.7286 2.58496H13.7399C14.7627 2.58496 15.678 4.36447 16.5385 8.02495C16.563 8.12884 16.4986 8.23333 16.395 8.25793C16.3804 8.26139 16.3654 8.26302 16.3506 8.26302Z" fill="#0089EF"/>
<path d="M8.46631 13.838C8.46266 13.838 8.45881 13.838 8.45496 13.838C6.79043 13.8164 5.72999 8.94794 5.61428 8.39292C5.5926 8.28843 5.65947 8.18576 5.76403 8.164C5.86799 8.14205 5.97053 8.20934 5.99221 8.31384C6.40419 10.2928 7.43829 13.4375 8.45982 13.4505H8.4659C8.92267 13.4505 9.83923 12.777 10.8891 8.30896C10.9137 8.20507 11.0178 8.14123 11.1212 8.16482C11.2249 8.18942 11.2892 8.29371 11.2646 8.3978C10.4046 12.0583 9.48906 13.838 8.46631 13.838Z" fill="#0089EF"/>
<path d="M19.014 13.6947C19.0104 13.6947 19.0065 13.6947 19.0027 13.6947C17.3381 13.6729 16.2777 8.80464 16.162 8.24963C16.1403 8.14513 16.207 8.04246 16.3117 8.0205C16.4161 7.99875 16.518 8.06604 16.5399 8.17054C16.9519 10.1495 17.986 13.294 19.0075 13.3072H19.0136C19.4704 13.3072 20.3869 12.6335 21.4368 8.16546C21.4613 8.06157 21.5655 7.99794 21.6689 8.02152C21.7726 8.04592 21.8371 8.15021 21.8123 8.2543C20.9523 11.9148 20.0368 13.6947 19.014 13.6947Z" fill="#0089EF"/>
<path d="M21.4731 0H0.622526C0.279245 0 0 0.280152 0 0.624547V15.7991C0 16.1435 0.279245 16.4236 0.622526 16.4236H21.4731C21.8162 16.4236 22.0956 16.1435 22.0956 15.7991V6.08324C22.0956 5.96817 22.0026 5.87506 21.8881 5.87506C21.7734 5.87506 21.6806 5.96817 21.6806 6.08324V8.00323H18.0263C17.7882 6.70921 16.7602 1.48066 15.5275 0.416365H21.4731C21.5874 0.416365 21.6806 0.509681 21.6806 0.624547V2.90866C21.6806 3.02373 21.7734 3.11684 21.8881 3.11684C22.0026 3.11684 22.0956 3.02373 22.0956 2.90866V0.624547C22.0956 0.279949 21.8164 0 21.4731 0ZM17.6453 8.4196C17.94 9.69594 19.2156 14.9412 20.4964 16.0071H9.63335C10.8664 14.9428 11.8945 9.71342 12.1324 8.4196H17.6453ZM9.20192 15.7828C8.47685 15.7828 7.18702 12.0658 6.33874 8.4196H11.7101C11.0348 12.0642 9.92273 15.7828 9.20192 15.7828ZM5.80943 8.00323H0.438119C1.11576 4.35902 2.23011 0.640405 2.95072 0.640405C3.67558 0.640405 4.96319 4.3574 5.80943 8.00323ZM0.622526 0.416365H2.51908C1.64751 1.16899 0.876441 4.00121 0.415017 6.0564V0.624547C0.415017 0.509681 0.508032 0.416365 0.622526 0.416365ZM0.415017 15.7989V8.4196H5.91258C6.20723 9.69594 7.48288 14.9412 8.7636 16.0071H0.622526C0.508032 16.0071 0.415017 15.9138 0.415017 15.7989ZM21.4731 16.0071H21.3939C21.4934 15.9217 21.5902 15.8062 21.6806 15.6543V15.7989C21.6806 15.9138 21.5874 16.0071 21.4731 16.0071ZM21.6806 14.2969C21.5136 15.3866 21.1434 15.7828 20.9347 15.7828C20.2096 15.7828 18.9198 12.0658 18.0715 8.4196H21.6802V14.2969H21.6806ZM17.604 8.00323H12.2329C13.081 4.3574 14.3708 0.640405 15.0959 0.640405C15.8167 0.640405 16.9288 4.35902 17.604 8.00323ZM11.8065 8.00323H6.2356C5.94156 6.72629 4.66915 1.48249 3.38944 0.416365H14.6569C13.3768 1.48269 12.1014 6.72669 11.8065 8.00323Z" fill="#3A2C60"/>
<path d="M21.8881 3.50696C21.7734 3.50696 21.6806 3.60007 21.6806 3.71514V5.22446C21.6806 5.33953 21.7734 5.43265 21.8881 5.43265C22.0026 5.43265 22.0956 5.33953 22.0956 5.22446V3.71514C22.0956 3.60027 22.0026 3.50696 21.8881 3.50696Z" fill="#3A2C60"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

1
assets/icons/home-2.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M240-200h120v-240h240v240h120v-360L480-740 240-560v360Zm-80 80v-480l320-240 320 240v480H520v-240h-80v240H160Zm320-350Z"/></svg>

After

Width:  |  Height:  |  Size: 224 B

9
assets/icons/home.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,12 @@
<svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.0534 0.00088501H15.2594C15.1889 0.00088501 15.1182 0.0184631 15.0477 0.0184631C10.4604 0.106354 6.49052 3.23532 5.37897 7.7001L5.09661 8.78995H8.59012C10.372 8.78995 12.1541 9.21182 13.742 10.0028C14.1655 10.2138 14.6066 10.3544 15.0477 10.4423C15.3829 10.5125 15.7181 10.5478 16.0534 10.5478C22.9448 10.5478 22.9476 0.00088501 16.0534 0.00088501Z" fill="#A0E65C"/>
<path d="M16.0534 10.5478C15.7181 10.5478 15.3829 10.5125 15.0477 10.4423V0.0184631C15.1182 0.0184631 15.1889 0.00088501 15.2594 0.00088501H16.0534C22.9448 0.00088501 22.9476 10.5478 16.0534 10.5478Z" fill="#79CC52"/>
<path d="M24.5929 6.66294L23.4814 8.03409C21.1171 6.1356 18.0648 5.18644 15.0477 5.30948C13.9361 5.34458 12.8422 5.538 11.7836 5.87198L11.2543 4.18442C12.4893 3.79765 13.7774 3.58671 15.0477 3.55161C18.4705 3.42862 21.8934 4.51847 24.5929 6.66294Z" fill="#79CC52"/>
<path d="M19.1766 20.6925C19.5764 20.0041 20.1389 19.4094 20.804 18.9716C22.2919 17.9931 23.5497 16.6628 24.4414 15.1229L26.1859 12.1129L26.9983 12.8956C30.3685 16.1426 31.0862 21.2358 28.7419 25.2819L28.3439 25.9668C24.9268 31.8724 15.7449 26.6128 19.1766 20.6925Z" fill="#79CC52"/>
<path d="M18.2945 29.9991L17.6518 28.3615C20.3104 27.3264 22.5607 25.4003 23.9873 22.9387C24.7928 21.55 25.3175 20.0394 25.5475 18.4498L27.2946 18.7004C27.0319 20.5123 26.4332 22.234 25.5156 23.8176C23.8891 26.6243 21.3244 28.819 18.2945 29.9991Z" fill="#59B348"/>
<path d="M1.76689 25.9659L1.37061 25.2827C-0.974419 21.2358 -0.25679 16.1426 3.11345 12.8957L3.92583 12.1129L5.67038 15.123C6.56204 16.6628 7.81986 17.9931 9.30769 18.9717C9.9728 19.4094 10.5353 20.0042 10.9351 20.6926C14.3684 26.6156 5.18918 31.8773 1.76689 25.9659Z" fill="#A0E65C"/>
<path d="M11.8173 29.9991C8.78732 28.8189 6.22263 26.6242 4.59611 23.8176C3.67858 22.234 3.07987 20.5123 2.8171 18.7004L4.56424 18.4498C4.79425 20.0394 5.31892 21.55 6.12441 22.9387C7.55108 25.4003 9.80136 27.3264 12.46 28.3615L11.8173 29.9991Z" fill="#79CC52"/>
<path d="M14.1654 22.3961V19.0599L10.0293 16.9999L15.9298 11.1214V14.4576L20.0659 16.5175L14.1654 22.3961Z" fill="#FFDF40"/>
<path d="M15.9298 14.4575V11.1213L15.0476 12.0002V21.5172L20.0659 16.5175L15.9298 14.4575Z" fill="#FFBE40"/>
<path d="M24.5929 6.66292L23.4814 8.03407C21.1171 6.13558 18.0648 5.18642 15.0477 5.30946V3.55165C18.4705 3.4286 21.8934 4.51845 24.5929 6.66292Z" fill="#59B348"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,26 @@
<svg width="22" height="23" viewBox="0 0 22 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.1346 0H3.09615C1.3862 0 0 1.3862 0 3.09615V19.9038C0 21.6138 1.3862 23 3.09615 23H18.1346C19.8446 23 21.2308 21.6138 21.2308 19.9038V3.09615C21.2308 1.3862 19.8446 0 18.1346 0Z" fill="#EF5350"/>
<path d="M20.6445 1.29056C17.6514 17.7494 4.15071 20.9781 0.482071 21.5556C0.760501 21.9974 1.14622 22.3615 1.6033 22.6141C2.06038 22.8666 2.57394 22.9994 3.09615 23H18.1346C18.9555 22.999 19.7424 22.6725 20.3228 22.0921C20.9033 21.5116 21.2298 20.7247 21.2308 19.9038V3.09615C21.2306 2.44752 21.0254 1.81554 20.6445 1.29056Z" fill="#E53935"/>
<path d="M18.1346 1.76923H3.09615C2.36331 1.76923 1.76923 2.36331 1.76923 3.09615V12.8269C1.76923 13.5598 2.36331 14.1538 3.09615 14.1538H18.1346C18.8675 14.1538 19.4615 13.5598 19.4615 12.8269V3.09615C19.4615 2.36331 18.8675 1.76923 18.1346 1.76923Z" fill="#BBDEFB"/>
<path d="M16.5513 12.3846C16.8258 11.4606 16.8808 10.4852 16.7119 9.53621C16.543 8.58718 16.1549 7.69068 15.5785 6.91809C15.0021 6.14549 14.2532 5.51814 13.3916 5.08598C12.53 4.65381 11.5793 4.42877 10.6154 4.42877C9.65145 4.42877 8.70082 4.65381 7.83918 5.08598C6.97755 5.51814 6.2287 6.14549 5.65227 6.91809C5.07583 7.69068 4.68773 8.58718 4.51885 9.53621C4.34997 10.4852 4.40498 11.4606 4.67951 12.3846L2.875 12.1635V2.875H18.3558V12.1635L16.5513 12.3846Z" fill="#90CAF9"/>
<path d="M10.6154 5.30769C10.5573 5.30772 10.4998 5.2963 10.4461 5.27408C10.3924 5.25187 10.3436 5.21929 10.3026 5.17821C10.2615 5.13713 10.2289 5.08836 10.2067 5.03468C10.1845 4.981 10.173 4.92347 10.1731 4.86538V3.09615C10.1731 2.97884 10.2197 2.86634 10.3026 2.78339C10.3856 2.70044 10.4981 2.65384 10.6154 2.65384C10.7327 2.65384 10.8452 2.70044 10.9281 2.78339C11.0111 2.86634 11.0577 2.97884 11.0577 3.09615V4.86538C11.0577 4.92347 11.0463 4.981 11.0241 5.03468C11.0019 5.08836 10.9693 5.13713 10.9282 5.17821C10.8871 5.21929 10.8384 5.25187 10.7847 5.27408C10.731 5.2963 10.6735 5.30772 10.6154 5.30769Z" fill="#37474F"/>
<path d="M6.54953 6.99182C6.49143 6.99189 6.4339 6.98047 6.38024 6.95823C6.32657 6.93599 6.27783 6.90336 6.23681 6.86223L4.99498 5.62039C4.91328 5.5372 4.86774 5.42511 4.86827 5.30851C4.8688 5.19191 4.91535 5.08024 4.9978 4.99779C5.08025 4.91534 5.19192 4.86879 5.30852 4.86826C5.42512 4.86773 5.53721 4.91327 5.62041 4.99497L6.86224 6.2368C6.92408 6.29866 6.96619 6.37746 6.98325 6.46325C7.0003 6.54904 6.99155 6.63796 6.95808 6.71877C6.92461 6.79958 6.86793 6.86865 6.79521 6.91725C6.72249 6.96585 6.63699 6.9918 6.54953 6.99182Z" fill="#37474F"/>
<path d="M14.6812 6.99184C14.5938 6.99182 14.5083 6.96587 14.4356 6.91727C14.3628 6.86867 14.3062 6.79959 14.2727 6.71878C14.2392 6.63797 14.2305 6.54906 14.2475 6.46327C14.2646 6.37748 14.3067 6.29868 14.3685 6.23682L15.6104 4.99499C15.6513 4.95331 15.7001 4.92015 15.7539 4.89743C15.8077 4.87471 15.8655 4.86288 15.9239 4.86261C15.9823 4.86235 16.0402 4.87366 16.0942 4.89589C16.1482 4.91812 16.1973 4.95084 16.2386 4.99214C16.2799 5.03345 16.3127 5.08253 16.3349 5.13655C16.3571 5.19057 16.3684 5.24846 16.3682 5.30687C16.3679 5.36529 16.3561 5.42307 16.3333 5.47689C16.3106 5.5307 16.2775 5.57948 16.2358 5.62041L14.994 6.86224C14.9529 6.90338 14.9042 6.93601 14.8505 6.95825C14.7969 6.98049 14.7393 6.99191 14.6812 6.99184Z" fill="#37474F"/>
<path d="M10.6154 11.0577C10.5573 11.0578 10.4998 11.0463 10.4461 11.0241C10.3924 11.0019 10.3437 10.9692 10.3027 10.9281L7.48771 8.11314C7.40477 8.0302 7.35818 7.91771 7.35818 7.80041C7.35818 7.68312 7.40477 7.57063 7.48771 7.48769C7.57065 7.40475 7.68314 7.35815 7.80044 7.35815C7.91773 7.35815 8.03022 7.40475 8.11316 7.48769L10.9281 10.3027C10.9899 10.3645 11.032 10.4433 11.0491 10.5291C11.0662 10.6149 11.0574 10.7038 11.0239 10.7846C10.9905 10.8654 10.9338 10.9345 10.8611 10.9831C10.7883 11.0317 10.7029 11.0577 10.6154 11.0577Z" fill="#37474F"/>
<path d="M3.98077 19.9039C5.20217 19.9039 6.19231 18.9137 6.19231 17.6923C6.19231 16.4709 5.20217 15.4808 3.98077 15.4808C2.75937 15.4808 1.76923 16.4709 1.76923 17.6923C1.76923 18.9137 2.75937 19.9039 3.98077 19.9039Z" fill="#CFD8DC"/>
<path d="M5.70351 16.3228C5.784 16.7463 5.75973 17.1831 5.63281 17.5952C5.5059 18.0072 5.28018 18.382 4.97531 18.6868C4.67045 18.9917 4.29568 19.2174 3.88364 19.3443C3.4716 19.4713 3.03478 19.4955 2.61122 19.415C2.99872 19.7293 3.4819 19.9017 3.98077 19.9038C4.56709 19.9032 5.12921 19.6699 5.5438 19.2553C5.9584 18.8407 6.19162 18.2786 6.19231 17.6923C6.19017 17.1934 6.01772 16.7103 5.70351 16.3228Z" fill="#B0BEC5"/>
<path d="M17.25 19.9039C18.4714 19.9039 19.4615 18.9137 19.4615 17.6923C19.4615 16.4709 18.4714 15.4808 17.25 15.4808C16.0286 15.4808 15.0385 16.4709 15.0385 17.6923C15.0385 18.9137 16.0286 19.9039 17.25 19.9039Z" fill="#CFD8DC"/>
<path d="M18.9727 16.3228C19.0532 16.7463 19.029 17.1831 18.902 17.5952C18.7751 18.0072 18.5494 18.382 18.2445 18.6868C17.9397 18.9917 17.5649 19.2174 17.1529 19.3443C16.7408 19.4713 16.304 19.4955 15.8805 19.415C16.2679 19.7293 16.7511 19.9017 17.25 19.9038C17.8363 19.9032 18.3984 19.6699 18.813 19.2553C19.2276 18.8407 19.4609 18.2786 19.4615 17.6923C19.4594 17.1934 19.2869 16.7103 18.9727 16.3228Z" fill="#B0BEC5"/>
<path d="M4.42308 17.6923C4.42273 17.8095 4.37602 17.9218 4.29314 18.0047C4.21027 18.0876 4.09797 18.1343 3.98077 18.1346H1.81346C1.7545 17.8427 1.7545 17.5419 1.81346 17.25H3.98077C4.09797 17.2504 4.21027 17.2971 4.29314 17.3799C4.37602 17.4628 4.42273 17.5751 4.42308 17.6923Z" fill="#546E7A"/>
<path d="M19.0988 16.4716L17.564 18.0064C17.4802 18.0886 17.3674 18.1346 17.25 18.1346C17.1326 18.1346 17.0198 18.0886 16.936 18.0064C16.8531 17.9228 16.8066 17.81 16.8066 17.6923C16.8066 17.5747 16.8531 17.4618 16.936 17.3783L18.4708 15.8435C18.718 16.0111 18.9312 16.2243 19.0988 16.4716Z" fill="#546E7A"/>
<path d="M15.4808 21.6731H5.75C5.63269 21.6731 5.52019 21.6265 5.43724 21.5435C5.35429 21.4606 5.30769 21.3481 5.30769 21.2308C5.30769 21.1135 5.35429 21.001 5.43724 20.918C5.52019 20.8351 5.63269 20.7885 5.75 20.7885H15.4808C15.5981 20.7885 15.7106 20.8351 15.7935 20.918C15.8765 21.001 15.9231 21.1135 15.9231 21.2308C15.9231 21.3481 15.8765 21.4606 15.7935 21.5435C15.7106 21.6265 15.5981 21.6731 15.4808 21.6731Z" fill="#37474F"/>
<path d="M14.1538 19.9038H7.07692C6.95962 19.9038 6.84711 19.8572 6.76417 19.7743C6.68122 19.6913 6.63462 19.5788 6.63462 19.4615C6.63462 19.3442 6.68122 19.2317 6.76417 19.1488C6.84711 19.0658 6.95962 19.0192 7.07692 19.0192H14.1538C14.2712 19.0192 14.3837 19.0658 14.4666 19.1488C14.5496 19.2317 14.5962 19.3442 14.5962 19.4615C14.5962 19.5788 14.5496 19.6913 14.4666 19.7743C14.3837 19.8572 14.2712 19.9038 14.1538 19.9038Z" fill="#37474F"/>
<path d="M14.1538 16.3654H7.07692C6.95962 16.3654 6.84711 16.3188 6.76417 16.2358C6.68122 16.1529 6.63462 16.0404 6.63462 15.9231C6.63462 15.8058 6.68122 15.6933 6.76417 15.6103C6.84711 15.5274 6.95962 15.4808 7.07692 15.4808H14.1538C14.2712 15.4808 14.3837 15.5274 14.4666 15.6103C14.5496 15.6933 14.5962 15.8058 14.5962 15.9231C14.5962 16.0404 14.5496 16.1529 14.4666 16.2358C14.3837 16.3188 14.2712 16.3654 14.1538 16.3654Z" fill="#37474F"/>
<path d="M18.1346 1.76923H3.09615C2.74435 1.76961 2.40706 1.90953 2.1583 2.1583C1.90954 2.40706 1.76961 2.74435 1.76923 3.09615V12.8269C1.76961 13.1787 1.90954 13.516 2.1583 13.7648C2.40706 14.0135 2.74435 14.1535 3.09615 14.1538H18.1346C18.4864 14.1535 18.8237 14.0135 19.0725 13.7648C19.3212 13.516 19.4612 13.1787 19.4615 12.8269V3.09615C19.4612 2.74435 19.3212 2.40706 19.0725 2.1583C18.8237 1.90953 18.4864 1.76961 18.1346 1.76923ZM17.25 11.0577H13.7115C13.6534 11.0577 13.5959 11.0463 13.5422 11.0241C13.4886 11.0019 13.4398 10.9693 13.3987 10.9282C13.3576 10.8871 13.325 10.8384 13.3028 10.7847C13.2806 10.731 13.2692 10.6735 13.2692 10.6154C13.2692 9.91154 12.9896 9.23652 12.4919 8.73883C11.9942 8.24113 11.3192 7.96153 10.6154 7.96153C9.91154 7.96153 9.23652 8.24113 8.73883 8.73883C8.24114 9.23652 7.96154 9.91154 7.96154 10.6154C7.96157 10.6735 7.95015 10.731 7.92794 10.7847C7.90572 10.8384 7.87314 10.8871 7.83206 10.9282C7.79098 10.9693 7.74221 11.0019 7.68853 11.0241C7.63486 11.0463 7.57732 11.0577 7.51923 11.0577H3.98077C3.92267 11.0577 3.86514 11.0463 3.81147 11.0241C3.75779 11.0019 3.70901 10.9693 3.66794 10.9282C3.62686 10.8871 3.59428 10.8384 3.57206 10.7847C3.54985 10.731 3.53843 10.6735 3.53846 10.6154C3.53846 8.73846 4.28406 6.93842 5.61124 5.61124C6.93842 4.28406 8.73847 3.53846 10.6154 3.53846C12.4923 3.53846 14.2923 4.28406 15.6195 5.61124C16.9467 6.93842 17.6923 8.73846 17.6923 10.6154C17.6923 10.6735 17.6809 10.731 17.6587 10.7847C17.6365 10.8384 17.6039 10.8871 17.5628 10.9282C17.5218 10.9693 17.473 11.0019 17.4193 11.0241C17.3656 11.0463 17.3081 11.0577 17.25 11.0577Z" fill="#FFEE58"/>
<path d="M18.1346 1.76923H18.1031C17.434 11.9799 5.19336 12.4807 1.76923 12.4194V12.8269C1.76961 13.1787 1.90954 13.516 2.1583 13.7648C2.40706 14.0135 2.74435 14.1535 3.09615 14.1538H18.1346C18.4864 14.1535 18.8237 14.0135 19.0725 13.7648C19.3212 13.516 19.4612 13.1787 19.4615 12.8269V3.09615C19.4612 2.74435 19.3212 2.40706 19.0725 2.1583C18.8237 1.90953 18.4864 1.76961 18.1346 1.76923Z" fill="#90CAF9"/>
<path d="M18.1346 1.76923H18.1031C18.0217 3.53365 17.4778 5.24565 16.5259 6.7335C17.2873 7.88491 17.693 9.23498 17.6923 10.6154C17.6923 10.6735 17.6809 10.731 17.6587 10.7847C17.6365 10.8384 17.6039 10.8871 17.5628 10.9282C17.5218 10.9693 17.473 11.0019 17.4193 11.0241C17.3656 11.0463 17.3081 11.0577 17.25 11.0577H13.7115C13.6534 11.0577 13.5959 11.0463 13.5422 11.0241C13.4886 11.0019 13.4398 10.9693 13.3987 10.9282C13.3576 10.8871 13.325 10.8384 13.3028 10.7847C13.2806 10.731 13.2692 10.6735 13.2692 10.6154C13.2687 10.3667 13.2331 10.1193 13.1635 9.88054C9.14978 12.2871 3.84298 12.4565 1.76923 12.4194V12.8269C1.76961 13.1787 1.90954 13.516 2.1583 13.7648C2.40706 14.0135 2.74435 14.1535 3.09615 14.1538H18.1346C18.4864 14.1535 18.8237 14.0135 19.0725 13.7648C19.3212 13.516 19.4612 13.1787 19.4615 12.8269V3.09615C19.4612 2.74435 19.3212 2.40706 19.0725 2.1583C18.8237 1.90953 18.4864 1.76961 18.1346 1.76923Z" fill="#FDD835"/>
<path d="M10.6154 12.3846C11.5925 12.3846 12.3846 11.5925 12.3846 10.6154C12.3846 9.63827 11.5925 8.84616 10.6154 8.84616C9.63826 8.84616 8.84615 9.63827 8.84615 10.6154C8.84615 11.5925 9.63826 12.3846 10.6154 12.3846Z" fill="#CFD8DC"/>
<path d="M11.9108 9.41928C11.9288 9.52222 11.9393 9.62632 11.9423 9.73076C11.9417 10.3171 11.7085 10.8793 11.2939 11.2939C10.8793 11.7085 10.3171 11.9417 9.73077 11.9423C9.62632 11.9393 9.52223 11.9288 9.41929 11.9108C9.75344 12.2224 10.1955 12.392 10.6523 12.3841C11.1091 12.3761 11.5449 12.191 11.868 11.868C12.191 11.5449 12.376 11.1091 12.384 10.6523C12.392 10.1955 12.2224 9.75343 11.9108 9.41928Z" fill="#B0BEC5"/>
<path d="M3.53846 4.86538C4.02702 4.86538 4.42308 4.37031 4.42308 3.75961C4.42308 3.14891 4.02702 2.65384 3.53846 2.65384C3.0499 2.65384 2.65385 3.14891 2.65385 3.75961C2.65385 4.37031 3.0499 4.86538 3.53846 4.86538Z" fill="white"/>
<path d="M3.09615 6.63462C3.34043 6.63462 3.53846 6.43659 3.53846 6.19231C3.53846 5.94803 3.34043 5.75 3.09615 5.75C2.85187 5.75 2.65385 5.94803 2.65385 6.19231C2.65385 6.43659 2.85187 6.63462 3.09615 6.63462Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
assets/images/test_dash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

1
devtools_options.yaml Normal file
View File

@ -0,0 +1 @@
extensions:

View File

@ -0,0 +1,99 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/dashboard/view/card_title.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
import 'package:syncrow_app/features/shared_widgets/united_text.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';
class CarbonEmission extends StatelessWidget {
const CarbonEmission({
super.key,
});
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const CardTitle(
title: "Carbon Emission",
),
const Gap(10),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox.square(
dimension: 30,
child: SvgPicture.asset(
IconsManager.CO2,
fit: BoxFit.contain,
),
),
const Gap(5),
const Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BodySmall(
text: StringsManager.emissions,
),
UnitedText(
value: '120.00',
valueSize: 14,
unit: 'kg',
unitSize: 10,
),
],
),
],
),
const Gap(20),
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox.square(
dimension: 30,
child: SvgPicture.asset(
IconsManager.sustainability,
fit: BoxFit.contain,
),
),
const Gap(5),
const Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BodySmall(
text: StringsManager.reductions,
),
UnitedText(
value: '20.00',
valueSize: 14,
unit: 'kg',
unitSize: 10,
),
],
),
],
),
],
)
],
),
);
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
class CardTitle extends StatelessWidget {
const CardTitle({
super.key,
required this.title,
});
final String title;
@override
Widget build(BuildContext context) {
return BodySmall(
text: title,
fontColor: Colors.grey,
fontSize: 12,
);
}
}

View File

@ -0,0 +1,65 @@
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/dashboard/view/card_title.dart';
import 'package:syncrow_app/features/shared_widgets/united_text.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';
class Consumption extends StatelessWidget {
const Consumption({
super.key,
});
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
const Column(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
CardTitle(
title: StringsManager.ACConsumption,
),
Gap(10),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
UnitedText(
value: "2",
valueSize: 35,
valueWeight: FontWeight.normal,
unit: "Units",
),
Gap(30),
UnitedText(
value: "720",
valueSize: 35,
valueWeight: FontWeight.normal,
unit: "kWh",
),
],
),
],
),
//TODO: Replace with actual pie chart
SizedBox.square(
dimension: 60,
child: Image.asset(
ImageManager.testDash2,
fit: BoxFit.contain,
),
)
],
),
);
}
}

View File

@ -1,10 +1,49 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/dashboard/view/carbon_emission.dart';
import 'package:syncrow_app/features/dashboard/view/consumption.dart';
import 'package:syncrow_app/features/dashboard/view/live_monitor_tab.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/title_medium.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';
import 'energy_usage.dart';
class DashboardView extends StatelessWidget { class DashboardView extends StatelessWidget {
const DashboardView({super.key}); const DashboardView({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return const Placeholder(); return const Padding(
padding: EdgeInsets.only(top: 60, right: 15, left: 15, bottom: 100),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
TitleMedium(
text: StringsManager.dashboard,
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
),
),
LiveMonitorTab(),
Gap(10),
EnergyUsage(),
Expanded(
child: Padding(
padding: EdgeInsets.only(top: 20),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Consumption(),
Gap(20),
CarbonEmission(),
],
),
),
),
],
),
);
} }
} }

View File

@ -0,0 +1,34 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/dashboard/view/energy_usage_header.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
class EnergyUsage extends StatelessWidget {
const EnergyUsage({
super.key,
});
@override
Widget build(BuildContext context) {
return Expanded(
child: DecoratedBox(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15),
),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const EnergyUsageHeader(),
Expanded(
child: Image.asset(ImageManager.testDash),
)
],
),
),
),
);
}
}

View File

@ -0,0 +1,74 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/dashboard/view/card_title.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
import 'package:syncrow_app/features/shared_widgets/united_text.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';
class EnergyUsageHeader extends StatelessWidget {
const EnergyUsageHeader({
super.key,
});
@override
Widget build(BuildContext context) {
return const Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
CardTitle(
title: StringsManager.energyUsage,
),
Padding(
padding: EdgeInsets.only(top: 10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BodySmall(
text: StringsManager.totalConsumption,
),
BodySmall(
text: "JAN 2024",
fontSize: 12,
fontColor: Colors.grey,
),
],
),
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
UnitedText(
value: "1200.00",
valueStyle: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
height: 0,
),
unit: "kWh",
),
UnitedText(
value: "430",
valueStyle: TextStyle(
fontSize: 14,
color: Colors.grey,
),
unit: "AED",
unitStyle: TextStyle(
fontSize: 12,
color: Colors.grey,
),
)
],
),
],
),
)
],
);
}
}

View File

@ -0,0 +1,39 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/dashboard/view/live_monitor_widget.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';
class LiveMonitorTab extends StatelessWidget {
const LiveMonitorTab({
super.key,
});
@override
Widget build(BuildContext context) {
return const Row(
children: [
Expanded(
child: LiveMonitorWidget(
image: IconsManager.active,
title: StringsManager.active,
value: '10.00w',
),
),
Expanded(
child: LiveMonitorWidget(
image: IconsManager.voltMeter,
title: StringsManager.current,
value: '12.1 A',
),
),
Expanded(
child: LiveMonitorWidget(
image: IconsManager.frequency,
title: StringsManager.frequency,
value: '50 Hz',
),
),
],
);
}
}

View File

@ -0,0 +1,62 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
class LiveMonitorWidget extends StatelessWidget {
const LiveMonitorWidget({
super.key,
required this.image,
required this.title,
required this.value,
});
final String image;
final String title;
final String value;
@override
Widget build(BuildContext context) {
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15),
),
padding: const EdgeInsets.only(left: 10, top: 5, bottom: 5),
margin: const EdgeInsets.only(right: 5),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
height: 23,
width: 20,
child: SvgPicture.asset(
image,
fit: BoxFit.contain,
),
),
const Gap(5),
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
BodySmall(
text: title,
style: const TextStyle(fontSize: 10, color: Colors.grey)),
BodyMedium(
text: value,
style: const TextStyle(
fontSize: 12,
fontWeight: FontWeight.bold,
),
),
],
)
],
),
);
}
}

View File

@ -0,0 +1,25 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../model/device_model.dart';
part 'devices_state.dart';
class DevicesCubit extends Cubit<DevicesState> {
DevicesCubit() : super(DevicesInitial()) {
getDevices();
}
//TODO separate the navigation logic to another cubit
static DevicesCubit get(context) => BlocProvider.of(context);
var devices = <DeviceModel>[];
Future<List<DeviceModel>> getDevices() async {
emit(DevicesLoading());
await Future.delayed(const Duration(seconds: 2));
emit(DevicesSuccess());
return devices = [];
}
}

View File

@ -0,0 +1,14 @@
part of 'devices_cubit.dart';
@immutable
abstract class DevicesState {}
class DevicesInitial extends DevicesState {}
class DevicesLoading extends DevicesState {}
class DevicesSuccess extends DevicesState {}
class DevicesFailure extends DevicesState {}
class ChangeIndex extends DevicesState {}

View File

@ -0,0 +1,18 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart';
import 'package:syncrow_app/features/devices/view/widgets/devices_view_body.dart';
class DevicesView extends StatelessWidget {
const DevicesView({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => DevicesCubit(),
child: BlocBuilder<DevicesCubit, DevicesState>(
builder: (context, state) => const DevicesViewBody(),
),
);
}
}

View File

@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../bloc/devices_cubit.dart';
import 'no_devices_view.dart';
class DevicesViewBody extends StatelessWidget {
const DevicesViewBody({
super.key,
});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => DevicesCubit(),
child: BlocBuilder<DevicesCubit, DevicesState>(
builder: (context, state) {
return DevicesCubit.get(context).devices.isEmpty
? const NoDevicesView()
: const SizedBox();
},
));
}
}

View File

@ -3,8 +3,8 @@ import 'package:gap/gap.dart';
import 'package:syncrow_app/features/shared_widgets/default_text_button.dart'; import 'package:syncrow_app/features/shared_widgets/default_text_button.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart'; import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
class HomeViewNoDevices extends StatelessWidget { class NoDevicesView extends StatelessWidget {
const HomeViewNoDevices({ const NoDevicesView({
super.key, super.key,
}); });

View File

@ -1,80 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../profile/view/profile_view.dart';
import '../../scene/view/scene_view.dart';
import '../../smart/view/smart_view.dart';
import '../model/device_model.dart';
import '../view/widgets/home_view_body.dart';
part 'home_state.dart';
class HomeCubit extends Cubit<HomeState> {
HomeCubit() : super(HomeInitial()) {
getDevices();
}
//TODO separate the navigation logic to another cubit
static HomeCubit get(context) => BlocProvider.of(context);
static int pageIndex = 0;
var devices = <DeviceModel>[];
Future<List<DeviceModel>> getDevices() async {
emit(HomeLoading());
await Future.delayed(const Duration(seconds: 2));
emit(HomeSuccess());
return devices = [];
}
Map<String, List<Widget>> appBarActions = {
'Home': [
IconButton(
icon: const Icon(Icons.mic),
onPressed: () {},
),
IconButton(
icon: const Icon(Icons.add_circle),
onPressed: () {},
),
],
'Scene': [],
'Smart': [],
'Profile': [],
};
var bottomNavItems = [
const BottomNavigationBarItem(
icon: Icon(Icons.home_outlined),
label: 'Home',
),
const BottomNavigationBarItem(
icon: Icon(Icons.check_box_outlined),
label: 'Scene',
),
const BottomNavigationBarItem(
icon: Icon(Icons.view_in_ar),
label: 'Smart',
),
const BottomNavigationBarItem(
icon: Icon(Icons.account_circle),
label: 'Profile',
),
];
final List<Widget> pages = [
const HomeViewBody(),
const SceneView(),
const SmartPage(),
const ProfileView(),
];
static Widget get currentPage => HomeCubit().pages[pageIndex];
void updatePageIndex(int index, BuildContext context) {
emit(HomeChangeIndex());
pageIndex = index;
}
}

View File

@ -1,14 +0,0 @@
part of 'home_cubit.dart';
@immutable
abstract class HomeState {}
class HomeInitial extends HomeState {}
class HomeLoading extends HomeState {}
class HomeSuccess extends HomeState {}
class HomeFailure extends HomeState {}
class HomeChangeIndex extends HomeState {}

View File

@ -1,28 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/home/bloc/home_cubit.dart';
import '../../shared_widgets/default_app_bar.dart';
import '../../shared_widgets/default_nav_bar.dart';
class HomeView extends StatelessWidget {
const HomeView({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => HomeCubit(),
child: BlocBuilder<HomeCubit, HomeState>(
builder: (context, state) {
return Scaffold(
appBar: const DefaultAppBar(),
body: state is HomeLoading
? const Center(child: CircularProgressIndicator())
: HomeCubit.currentPage,
bottomNavigationBar: const DefaultNavBar(),
);
},
),
);
}
}

View File

@ -1,24 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/home/bloc/home_cubit.dart';
import 'home_view_no_devices.dart';
class HomeViewBody extends StatelessWidget {
const HomeViewBody({
super.key,
});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => HomeCubit(),
child: BlocBuilder<HomeCubit, HomeState>(
builder: (context, state) {
return HomeCubit.get(context).devices.isEmpty
? const HomeViewNoDevices()
: const SizedBox();
},
));
}
}

View File

@ -0,0 +1,8 @@
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';
part 'layout_state.dart';
class LayoutCubit extends Cubit<LayoutState> {
LayoutCubit() : super(LayoutInitial());
}

View File

@ -0,0 +1,6 @@
part of 'layout_cubit.dart';
@immutable
abstract class LayoutState {}
class LayoutInitial extends LayoutState {}

View File

@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/layout/bloc/layout_cubit.dart';
class LayoutPage extends StatelessWidget {
const LayoutPage({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => LayoutCubit(),
child: BlocBuilder<LayoutCubit, LayoutState>(
builder: (context, state) {
return const Center(
child: Text('Layout Page'),
);
},
));
}
}

View File

@ -0,0 +1,8 @@
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';
part 'menu_state.dart';
class MenuCubit extends Cubit<MenuState> {
MenuCubit() : super(MenuInitial());
}

View File

@ -0,0 +1,6 @@
part of 'menu_cubit.dart';
@immutable
abstract class MenuState {}
class MenuInitial extends MenuState {}

View File

@ -0,0 +1,12 @@
import 'package:flutter/material.dart';
class MenuView extends StatelessWidget {
const MenuView({super.key});
@override
Widget build(BuildContext context) {
return const Center(
child: Text('Menu View'),
);
}
}

View File

@ -0,0 +1,66 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_app/features/dashboard/view/dashboard_view.dart';
import 'package:syncrow_app/features/devices/view/widgets/devices_view_body.dart';
import 'package:syncrow_app/features/layout/view/layout_view.dart';
import 'package:syncrow_app/features/profile/view/profile_view.dart';
import 'package:syncrow_app/features/scene/view/scene_view.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
part 'nav_state.dart';
class NavCubit extends Cubit<NavState> {
NavCubit() : super(NavInitial());
static NavCubit of(context) => BlocProvider.of<NavCubit>(context);
static int pageIndex = 0;
int get getPageIndex => pageIndex;
Map<String, List<Widget>> appBarActions = {
'Home': [],
'Scene': [],
'Smart': [],
'Profile': [],
};
var bottomNavItems = [
defaultBottomNavBarItem(icon: IconsManager.dashboard, label: 'Dashboard'),
defaultBottomNavBarItem(icon: IconsManager.layout, label: 'Layout'),
defaultBottomNavBarItem(icon: IconsManager.devices, label: 'Devices'),
defaultBottomNavBarItem(icon: IconsManager.routine, label: 'Routine'),
defaultBottomNavBarItem(icon: IconsManager.menu, label: 'Menu'),
];
final List<Widget> pages = [
const DashboardView(),
const LayoutPage(),
const DevicesViewBody(),
const SceneView(),
const ProfileView(),
];
Widget get currentPage => NavCubit().pages[pageIndex];
void updatePageIndex(int index, BuildContext context) {
emit(NavChangePage());
pageIndex = index;
}
}
BottomNavigationBarItem defaultBottomNavBarItem(
{required String icon, required String label}) {
return BottomNavigationBarItem(
icon: SvgPicture.asset(icon),
activeIcon: SvgPicture.asset(
icon.replaceAll('.svg', '-fill.svg'),
colorFilter: const ColorFilter.mode(
ColorsManager.primaryColor,
BlendMode.srcIn,
),
),
label: label,
);
}

View File

@ -0,0 +1,7 @@
part of 'nav_cubit.dart';
abstract class NavState {}
class NavInitial extends NavState {}
class NavChangePage extends NavState {}

View File

@ -0,0 +1,36 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/navigation/bloc/nav_cubit.dart';
import 'package:syncrow_app/features/navigation/view/widgets/app_body.dart';
import 'package:syncrow_app/features/navigation/view/widgets/default_app_bar.dart';
import 'package:syncrow_app/features/navigation/view/widgets/default_nav_bar.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class NavigationView extends StatelessWidget {
const NavigationView({super.key});
@override
Widget build(BuildContext context) {
return BlocBuilder<NavCubit, NavState>(
builder: (context, state) {
return AnnotatedRegion(
value: SystemUiOverlayStyle(
statusBarColor: ColorsManager.primaryColor.withOpacity(0.5),
statusBarIconBrightness: Brightness.light,
),
child: const SafeArea(
child: Scaffold(
backgroundColor: ColorsManager.backgroundColor,
extendBodyBehindAppBar: true,
extendBody: true,
appBar: DefaultAppBar(),
body: AppBody(),
bottomNavigationBar: DefaultNavBar(),
),
),
);
},
);
}
}

View File

@ -0,0 +1,40 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
import '../../../shared_widgets/text_widgets/body_large.dart';
class AppBarHomeDropdown extends StatelessWidget {
const AppBarHomeDropdown({
super.key,
});
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () {},
child: SizedBox(
width: 150,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
SvgPicture.asset(
IconsManager.home,
width: 30,
height: 30,
),
const Gap(5),
const BodyLarge(text: 'Home'),
const Gap(5),
const Icon(
Icons.expand_more,
color: Colors.black,
)
],
),
),
);
}
}

View File

@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/navigation/bloc/nav_cubit.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
class AppBody extends StatelessWidget {
const AppBody({
super.key,
});
@override
Widget build(BuildContext context) {
return BlocBuilder<NavCubit, NavState>(
builder: (context, state) {
return Container(
width: MediaQuery.sizeOf(context).width,
height: MediaQuery.sizeOf(context).height,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage(
ImageManager.background,
),
fit: BoxFit.cover,
opacity: 0.4,
),
),
child: NavCubit.of(context).currentPage,
);
},
);
}
}

View File

@ -0,0 +1,38 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/navigation/bloc/nav_cubit.dart';
import 'package:syncrow_app/features/navigation/view/widgets/app_bar_home_dropdown.dart';
class DefaultAppBar extends StatelessWidget implements PreferredSizeWidget {
const DefaultAppBar({super.key});
@override
Widget build(BuildContext context) {
return BlocBuilder<NavCubit, NavState>(
builder: (context, state) {
return Padding(
padding: const EdgeInsets.only(
top: 20,
),
child: AppBar(
backgroundColor: Colors.transparent,
leadingWidth: 150,
leading: const AppBarHomeDropdown(),
actions: <Widget>[
IconButton(
icon: const Icon(
Icons.add,
size: 35,
),
onPressed: () {},
),
],
),
);
},
);
}
@override
Size get preferredSize => const Size.fromHeight(100);
}

View File

@ -0,0 +1,41 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/navigation/bloc/nav_cubit.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class DefaultNavBar extends StatelessWidget {
const DefaultNavBar({
super.key,
});
@override
Widget build(BuildContext context) {
return BlocBuilder<NavCubit, NavState>(
builder: (context, state) {
var cubit = NavCubit.of(context);
return Padding(
padding: const EdgeInsets.only(bottom: 27),
child: BottomNavigationBar(
backgroundColor: Colors.transparent,
onTap: (int index) => cubit.updatePageIndex(index, context),
currentIndex: cubit.getPageIndex,
selectedItemColor: ColorsManager.primaryColor,
selectedLabelStyle: const TextStyle(
color: ColorsManager.primaryColor,
fontSize: 10,
),
showUnselectedLabels: true,
unselectedItemColor: Colors.grey,
type: BottomNavigationBarType.fixed,
elevation: 0,
items: cubit.bottomNavItems,
),
);
},
);
}
}
class DefaultBottomNavBarItem extends BottomNavigationBarItem {
DefaultBottomNavBarItem({required super.icon});
}

View File

@ -1,34 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/home/bloc/home_cubit.dart';
import 'package:syncrow_app/features/shared_widgets/syncrow_logo.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class DefaultAppBar extends StatelessWidget implements PreferredSizeWidget {
const DefaultAppBar({super.key});
@override
Widget build(BuildContext context) {
return BlocBuilder<HomeCubit, HomeState>(
builder: (context, state) {
return AppBar(
title: const SyncrowLogo(),
actions: <Widget>[
IconButton(
icon: const Icon(Icons.mic),
onPressed: () {},
),
IconButton(
icon: const Icon(Icons.add_circle,
color: ColorsManager.primaryColor),
onPressed: () {},
),
],
);
},
);
}
@override
Size get preferredSize => const Size.fromHeight(50);
}

View File

@ -1,34 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/home/bloc/home_cubit.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class DefaultNavBar extends StatelessWidget {
const DefaultNavBar({
super.key,
});
@override
Widget build(BuildContext context) {
return BlocBuilder<HomeCubit, HomeState>(
builder: (context, state) {
return BottomNavigationBar(
onTap: (int index) =>
HomeCubit.get(context).updatePageIndex(index, context),
currentIndex: HomeCubit.pageIndex,
selectedItemColor: ColorsManager.primaryColor,
selectedLabelStyle: const TextStyle(
color: ColorsManager.primaryColor,
),
unselectedItemColor: Colors.grey,
elevation: 10,
items: HomeCubit.get(context).bottomNavItems,
);
},
);
}
}
class DefaultBottomNavBarItem extends BottomNavigationBarItem {
DefaultBottomNavBarItem({required super.icon});
}

View File

@ -0,0 +1,28 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/utils/context_extension.dart';
import 'custom_text_widget.dart';
class BodyLarge extends StatelessWidget {
const BodyLarge({
required this.text,
super.key,
this.textAlign,
this.style,
this.height,
});
final String text;
final TextAlign? textAlign;
final TextStyle? style;
final double? height;
@override
Widget build(BuildContext context) => CustomText(
text,
style: style ?? context.bodyLarge.copyWith(height: height ?? 1.5),
textAlign: textAlign,
);
}

View File

@ -0,0 +1,31 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/custom_text_widget.dart';
import 'package:syncrow_app/utils/context_extension.dart';
class BodyMedium extends StatelessWidget {
const BodyMedium({
required this.text,
super.key,
this.style,
this.maxLines,
this.overflow,
this.textAlign,
});
final String text;
final TextStyle? style;
final int? maxLines;
final TextOverflow? overflow;
final TextAlign? textAlign;
@override
Widget build(BuildContext context) => CustomText(
text,
style: style ?? context.bodyMedium,
// softWrap: true,
maxLines: maxLines,
// overflow: overflow,
textAlign: textAlign,
);
}

View File

@ -0,0 +1,28 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/custom_text_widget.dart';
import 'package:syncrow_app/utils/context_extension.dart';
class BodySmall extends StatelessWidget {
const BodySmall({
required this.text,
super.key,
this.style,
this.fontColor,
this.fontSize,
});
final String text;
final TextStyle? style;
final Color? fontColor;
final double? fontSize;
@override
Widget build(BuildContext context) => CustomText(
text,
style: style ?? context.bodySmall,
fontColor: fontColor,
fontSize: fontSize,
);
}

View File

@ -0,0 +1,42 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class CustomText extends StatelessWidget {
const CustomText(this.text,
{super.key,
this.style,
this.textAlign,
this.onTap,
this.minLines,
this.maxLines,
this.textDirection,
this.fontSize,
this.fontColor});
final String text;
final TextStyle? style;
final TextAlign? textAlign;
final Function()? onTap;
final int? minLines;
final int? maxLines;
final TextDirection? textDirection;
final double? fontSize;
final Color? fontColor;
@override
Widget build(BuildContext context) {
return SelectableText(
text,
style: style!.copyWith(
fontSize: fontSize,
color: fontColor ?? ColorsManager.textPrimaryColor,
),
textAlign: textAlign,
onTap: onTap,
minLines: minLines,
maxLines: maxLines,
textDirection: textDirection,
);
}
}

View File

@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/custom_text_widget.dart';
class DisplayLarge extends StatelessWidget {
const DisplayLarge({
required this.text,
super.key,
this.style,
this.textAlign,
});
final String text;
final TextStyle? style;
final TextAlign? textAlign;
@override
Widget build(BuildContext context) => CustomText(
text,
style: style ?? Theme.of(context).textTheme.displayLarge,
textAlign: textAlign,
// softWrap: true,
);
}

View File

@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
import 'custom_text_widget.dart';
class DisplayMedium extends StatelessWidget {
const DisplayMedium({
required this.text,
super.key,
this.style,
});
final String text;
final TextStyle? style;
@override
Widget build(BuildContext context) => CustomText(
text,
style: style ?? Theme.of(context).textTheme.displayMedium,
);
}

View File

@ -0,0 +1,25 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/utils/context_extension.dart';
import 'custom_text_widget.dart';
class DisplaySmall extends StatelessWidget {
const DisplaySmall({
required this.text,
super.key,
this.textAlign,
});
final String text;
final TextAlign? textAlign;
@override
Widget build(BuildContext context) => Padding(
padding: const EdgeInsets.only(bottom: 20),
child: CustomText(
text,
style: context.displaySmall,
textAlign: textAlign,
),
);
}

View File

@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/utils/context_extension.dart';
class TitleLarge extends StatelessWidget {
const TitleLarge({
required this.text,
super.key,
});
final String text;
@override
Widget build(BuildContext context) => Padding(
padding: const EdgeInsets.only(top: 20, bottom: 10),
child: SelectableText(
text,
style: context.titleLarge,
),
);
}

View File

@ -0,0 +1,28 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/utils/context_extension.dart';
import 'custom_text_widget.dart';
class TitleMedium extends StatelessWidget {
const TitleMedium({
required this.text,
super.key,
this.maxLines,
this.textAlign,
this.style,
});
final String text;
final int? maxLines;
final TextAlign? textAlign;
final TextStyle? style;
@override
Widget build(BuildContext context) => CustomText(
text,
style: style ?? context.titleMedium,
maxLines: maxLines,
textAlign: textAlign,
);
}

View File

@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/utils/context_extension.dart';
import 'custom_text_widget.dart';
class TitleSmall extends StatelessWidget {
const TitleSmall({
required this.text,
super.key,
this.style,
this.textAlign,
});
final String text;
final TextStyle? style;
final TextAlign? textAlign;
@override
Widget build(BuildContext context) => CustomText(
text,
style: style ?? context.titleSmall,
textAlign: textAlign,
);
}

View File

@ -0,0 +1,63 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
class UnitedText extends StatelessWidget {
const UnitedText({
super.key,
required this.value,
required this.unit,
this.valueStyle,
this.unitStyle,
this.valueSize,
this.valueWeight,
this.valueColor,
this.unitSize,
this.unitWeight,
this.unitColor,
});
final String value;
final TextStyle? valueStyle;
final double? valueSize;
final FontWeight? valueWeight;
final Color? valueColor;
final String unit;
final TextStyle? unitStyle;
final double? unitSize;
final FontWeight? unitWeight;
final Color? unitColor;
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.alphabetic,
children: [
BodyLarge(
text: value,
style: valueStyle ??
TextStyle(
fontSize: valueSize ?? 20,
fontWeight: valueWeight ?? FontWeight.bold,
color: valueColor,
height: 0,
),
),
BodySmall(
text: unit,
style: unitStyle ??
TextStyle(
fontSize: unitSize ?? 10,
fontWeight: unitWeight,
color: unitColor,
),
),
],
);
}
}

View File

@ -1,8 +0,0 @@
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';
part 'smart_state.dart';
class SmartCubit extends Cubit<SmartState> {
SmartCubit() : super(SmartInitial());
}

View File

@ -1,6 +0,0 @@
part of 'smart_cubit.dart';
@immutable
abstract class SmartState {}
class SmartInitial extends SmartState {}

View File

@ -1,20 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/smart/bloc/smart_cubit.dart';
class SmartPage extends StatelessWidget {
const SmartPage({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => SmartCubit(),
child: BlocBuilder<SmartCubit, SmartState>(
builder: (context, state) {
return const Center(
child: Text('Smart Page'),
);
},
));
}
}

View File

@ -8,20 +8,17 @@ class SplashView extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( //TODO remove this delay
appBar: AppBar( Future.delayed(
actions: [ const Duration(seconds: 3),
IconButton( () {
icon: const Icon(Icons.arrow_forward),
onPressed: () {
Navigator.popAndPushNamed( Navigator.popAndPushNamed(
context, context,
Routes.authRoute, Routes.authRoute,
); );
}, },
), );
], return Scaffold(
),
body: Center( body: Center(
child: InkWell( child: InkWell(
//TODO check if user agreement is accepted //TODO check if user agreement is accepted

21
lib/generated/assets.dart Normal file
View File

@ -0,0 +1,21 @@
///This file is automatically generated. DO NOT EDIT, all your changes would be lost.
class Assets {
Assets._();
static const String fontsAftikaRegular = 'assets/fonts/AftikaRegular.ttf';
static const String iconsDashboard = 'assets/icons/dashboard-fill.svg';
static const String iconsDashboardFill = 'assets/icons/dashboard.svg';
static const String iconsDevices = 'assets/icons/Devices.svg';
static const String iconsDevicesFill = 'assets/icons/Devices-fill.svg';
static const String iconsHome = 'assets/icons/home.svg';
static const String iconsLayout = 'assets/icons/Layout.svg';
static const String iconsLayoutFill = 'assets/icons/Layout-fill.svg';
static const String iconsMenu = 'assets/icons/Menu.svg';
static const String iconsMenuFill = 'assets/icons/Menu-fill.svg';
static const String iconsRoutineFill = 'assets/icons/Routine-fill.svg';
static const String iconsRoutines = 'assets/icons/Routines.svg';
static const String imagesAutomation = 'assets/images/automation.jpg';
static const String imagesBlackLogo = 'assets/images/black-logo.png';
static const String imagesBoxEmpty = 'assets/images/box-empty.jpg';
static const String imagesWhiteLogo = 'assets/images/white-logo.png';
}

View File

@ -1,33 +1,43 @@
import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/services/locator.dart';
import 'package:syncrow_app/utils/bloc_observer.dart'; import 'package:syncrow_app/utils/bloc_observer.dart';
import 'package:syncrow_app/utils/helpers/localization_helpers.dart';
import 'my_app.dart'; import 'my_app.dart';
void main() { void main() {
//to observe the state of the blocs in the output console
Bloc.observer = MyBlocObserver(); Bloc.observer = MyBlocObserver();
//TODO: Uncomment //to catch all the errors in the app and send them to firebase
// runZonedGuarded(() async { runZonedGuarded(() async {
//to load the environment variables
// const environment = // const environment =
// String.fromEnvironment('FLAVOR', defaultValue: 'production'); // String.fromEnvironment('FLAVOR', defaultValue: 'production');
// await dotenv.load(fileName: '.env.$environment'); // await dotenv.load(fileName: '.env.$environment');
//
// //this is to make the app work with the self-signed certificate
// HttpOverrides.global = MyHttpOverrides(); // HttpOverrides.global = MyHttpOverrides();
// WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
//license for the font
// LicenseRegistry.addLicense(() async* { // LicenseRegistry.addLicense(() async* {
// final license = // final license =
// await rootBundle.loadString('assets/fonts/roboto/LICENSE.txt'); // await rootBundle.loadString('assets/fonts/roboto/LICENSE.txt');
// yield LicenseEntryWithLineBreaks(['google_fonts'], license); // yield LicenseEntryWithLineBreaks(['google_fonts'], license);
// }); // });
// initialSetup();
// await LocalizationService.saveLocale(const Locale("en", "AE"));
//
// final savedLocale = await LocalizationService.savedLocale();
//
// runApp(const MyApp(Locale('en', '')));
// }, (error, stackTrace) {
// FirebaseCrashlytics.instance.recordError(error, stackTrace, fatal: true);
// });
runApp(const MyApp(Locale('en', ''))); //to initialize the locator
initialSetup();
//to save the locale in the shared preferences
await LocalizationService.saveLocale(const Locale("en", "AE"));
final savedLocale = await LocalizationService.savedLocale();
runApp(MyApp(savedLocale));
}, (error, stackTrace) {
// FirebaseCrashlytics.instance.recordError(error, stackTrace, fatal: true);
});
} }

View File

@ -1,7 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/auth/bloc/auth_cubit.dart'; import 'package:syncrow_app/features/auth/bloc/auth_cubit.dart';
import 'package:syncrow_app/features/home/bloc/home_cubit.dart'; import 'package:syncrow_app/features/navigation/bloc/nav_cubit.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
import 'package:syncrow_app/utils/resource_manager/theme_manager.dart'; import 'package:syncrow_app/utils/resource_manager/theme_manager.dart';
@ -21,7 +21,7 @@ class MyApp extends StatelessWidget {
create: (context) => AuthCubit(), create: (context) => AuthCubit(),
), ),
BlocProvider( BlocProvider(
create: (context) => HomeCubit(), create: (context) => NavCubit(),
), ),
], ],
child: MaterialApp( child: MaterialApp(

View File

@ -1,9 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:syncrow_app/features/auth/view/auth_view.dart'; import 'package:syncrow_app/features/auth/view/auth_view.dart';
import 'package:syncrow_app/features/home/view/home_view.dart'; import 'package:syncrow_app/features/dashboard/view/dashboard_view.dart';
import 'package:syncrow_app/features/devices/view/devices_view.dart';
import 'package:syncrow_app/features/layout/view/layout_view.dart';
import 'package:syncrow_app/features/navigation/view/navigation_view.dart';
import 'package:syncrow_app/features/profile/view/profile_view.dart'; import 'package:syncrow_app/features/profile/view/profile_view.dart';
import 'package:syncrow_app/features/scene/view/scene_view.dart'; import 'package:syncrow_app/features/scene/view/scene_view.dart';
import 'package:syncrow_app/features/smart/view/smart_view.dart';
import 'package:syncrow_app/features/splash/view/splash_view.dart'; import 'package:syncrow_app/features/splash/view/splash_view.dart';
import 'routing_constants.dart'; import 'routing_constants.dart';
@ -15,9 +17,9 @@ class Router {
return MaterialPageRoute( return MaterialPageRoute(
builder: (_) => const SplashView(), settings: settings); builder: (_) => const SplashView(), settings: settings);
case Routes.homeRoute: case Routes.devicesRoute:
return MaterialPageRoute( return MaterialPageRoute(
builder: (_) => const HomeView(), settings: settings); builder: (_) => const DevicesView(), settings: settings);
case Routes.profileRoute: case Routes.profileRoute:
return MaterialPageRoute( return MaterialPageRoute(
@ -27,14 +29,22 @@ class Router {
return MaterialPageRoute( return MaterialPageRoute(
builder: (_) => const SceneView(), settings: settings); builder: (_) => const SceneView(), settings: settings);
case Routes.smartRoute: case Routes.layoutRoute:
return MaterialPageRoute( return MaterialPageRoute(
builder: (_) => const SmartPage(), settings: settings); builder: (_) => const LayoutPage(), settings: settings);
case Routes.authRoute: case Routes.authRoute:
return MaterialPageRoute( return MaterialPageRoute(
builder: (_) => const AuthView(), settings: settings); builder: (_) => const AuthView(), settings: settings);
case Routes.dashboardRoute:
return MaterialPageRoute(
builder: (_) => const DashboardView(), settings: settings);
case Routes.homeRoute:
return MaterialPageRoute(
builder: (_) => const NavigationView(), settings: settings);
default: default:
return MaterialPageRoute( return MaterialPageRoute(
builder: (_) => Scaffold( builder: (_) => Scaffold(

View File

@ -1,8 +1,10 @@
class Routes { class Routes {
static const String splash = '/'; static const String splash = '/';
static const String homeRoute = '/home'; static const String homeRoute = '/navigation';
static const String devicesRoute = '/devices';
static const String dashboardRoute = '/dashboard';
static const String sceneRoute = '/scene'; static const String sceneRoute = '/scene';
static const String smartRoute = '/smart'; static const String layoutRoute = '/layout';
static const String profileRoute = '/profile'; static const String profileRoute = '/profile';
static const String authRoute = '/auth'; static const String authRoute = '/auth';
} }

View File

@ -1,4 +1,6 @@
import 'package:dio/dio.dart';
import 'package:get_it/get_it.dart'; import 'package:get_it/get_it.dart';
import 'package:syncrow_app/services/api/http_service.dart';
import 'api/http_interceptor.dart'; import 'api/http_interceptor.dart';
@ -8,5 +10,5 @@ GetIt locator = GetIt.instance;
initialSetup() async { initialSetup() async {
locator.registerSingleton<HTTPInterceptor>(HTTPInterceptor()); locator.registerSingleton<HTTPInterceptor>(HTTPInterceptor());
//Base classes //Base classes
// locator.registerSingleton<Dio>(HTTPService.setupDioClient()); locator.registerSingleton<Dio>(HTTPService.setupDioClient());
} }

View File

@ -0,0 +1,30 @@
import 'package:flutter/material.dart';
extension ContextExtension on BuildContext {
Future<void> goTo(String newRouteName) async {
// go(newRouteName);
await Navigator.pushNamed(this, newRouteName);
}
double get width => MediaQuery.sizeOf(this).width;
double get height => MediaQuery.sizeOf(this).height;
TextStyle get displayLarge => Theme.of(this).textTheme.displayLarge!;
TextStyle get displayMedium => Theme.of(this).textTheme.displayMedium!;
TextStyle get displaySmall => Theme.of(this).textTheme.displaySmall!;
TextStyle get titleLarge => Theme.of(this).textTheme.titleLarge!;
TextStyle get titleMedium => Theme.of(this).textTheme.titleMedium!;
TextStyle get titleSmall => Theme.of(this).textTheme.titleSmall!;
TextStyle get bodyLarge => Theme.of(this).textTheme.bodyLarge!;
TextStyle get bodyMedium => Theme.of(this).textTheme.bodyMedium!;
TextStyle get bodySmall => Theme.of(this).textTheme.bodySmall!;
}

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:syncrow_app/utils/resource_manager/constants.dart';
class LocalizationService { class LocalizationService {
static saveLocale(Locale locale) async { static saveLocale(Locale locale) async {
@ -11,15 +12,14 @@ class LocalizationService {
} }
static Future<Locale> savedLocale() async { static Future<Locale> savedLocale() async {
//todo: uncomment
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
// var savedLanguageCode = prefs.getString(Constants.languageCode); var savedLanguageCode = prefs.getString(Constants.languageCode);
// var savedCountryCode = prefs.getString(Constants.countryCode); var savedCountryCode = prefs.getString(Constants.countryCode);
var savedLocale = const Locale("ar", "JO"); var savedLocale = const Locale("ar", "JO");
// if (savedCountryCode != null && savedLanguageCode != null) { if (savedCountryCode != null && savedLanguageCode != null) {
// savedLocale = Locale(savedLanguageCode, savedCountryCode); savedLocale = Locale(savedLanguageCode, savedCountryCode);
// } }
return savedLocale; return savedLocale;
} }

View File

@ -1,16 +1,43 @@
class ImageManager { abstract class ImageManager {
static const String base = 'assets/images'; static const String base = 'assets/images';
static const String whiteLogo = '$base/white-logo.png'; static const String whiteLogo = '$base/white-logo.png';
static const String blackLogo = '$base/black-logo.png'; static const String blackLogo = '$base/black-logo.png';
static const String boxEmpty = '$base/box-empty.jpg'; static const String boxEmpty = '$base/box-empty.jpg';
static const String automation = '$base/automation.jpg'; static const String automation = '$base/automation.jpg';
static const String background = '$base/Background.png';
static const String testDash = '$base/test_dash.png';
static const String testDash2 = '$base/test_dash2.png';
} }
class IconsManager { abstract class IconsManager {
// static const String facebookIcon = 'assets/icons/icon.png'; static const String base = 'assets/icons';
static const String home = '$base/home-2.svg';
static const String dashboardFill = '$base/dashboard-fill.svg';
static const String dashboard = '$base/dashboard.svg';
static const String devices = '$base/Devices.svg';
static const String devicesFill = '$base/Devices-fill.svg';
static const String routine = '$base/Routines.svg';
static const String routineFill = '$base/Routine-fill.svg';
static const String menu = '$base/Menu.svg';
static const String menuFill = '$base/Menu-fill.svg';
static const String layout = '$base/Layout.svg';
static const String layoutFill = '$base/Layout-fill.svg';
static const String frequency = '$base/frequency.svg';
static const String winter = '$base/winter.svg';
static const String active = '$base/active.svg';
static const String voltMeter = '$base/volt-meter.svg';
static const String summer = '$base/Summer.svg';
static const String CO2 = '$base/CO2.svg';
static const String sustainability = '$base/sustainability.svg';
} }
class VideosManager { abstract class VideosManager {
// static const String registrationVideo = 'assets/videos/video.mp4'; // static const String registrationVideo = 'assets/videos/video.mp4';
} }

View File

@ -1,9 +1,11 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class ColorsManager { abstract class ColorsManager {
static const Color textPrimaryColor = Color(0xFF5D5D5D);
static const Color primaryColor = Color(0xFF023dfe); static const Color primaryColor = Color(0xFF023dfe);
static const Color secondaryColor = Colors.white; static const Color secondaryColor = Colors.white;
static const Color primaryTextColor = Colors.black; static const Color primaryTextColor = Colors.black;
static const Color greyColor = Color(0xFFd9d9d9); static const Color greyColor = Color(0xFFd9d9d9);
static const Color backgroundColor = Color(0xFFececec);
} }

View File

@ -1 +1,5 @@
abstract class Constants {} abstract class Constants {
static const String languageCode = "en";
static const String countryCode = "US";
}

View File

@ -14,7 +14,7 @@ import 'dart:ui';
/// - asset: assets/ fonts/Montserrat-SemiB01d. ttf /// - asset: assets/ fonts/Montserrat-SemiB01d. ttf
/// weight: 600 /// weight: 600
class FontsManager { abstract class FontsManager {
static const FontWeight light = FontWeight.w300; static const FontWeight light = FontWeight.w300;
static const FontWeight regular = FontWeight.w400; static const FontWeight regular = FontWeight.w400;
static const FontWeight medium = FontWeight.w500; static const FontWeight medium = FontWeight.w500;

View File

@ -1,428 +1,17 @@
// // ignore_for_file: lines_longer_than_80_chars // ignore_for_file: lines_longer_than_80_chars
// class StringsManager { class StringsManager {
// static const noRouteFound = 'No route found'; static const noRouteFound = 'No route found';
// static const switchToAWiderScreenToSeeTheTable = static const noInternetConnection = 'No internet connection';
// 'Switch to a wider screen to see the table';
// static const home = 'Home';
// static const aboutUs1 = 'About Us';
// static const complains = 'Complains';
// static const registration = 'Registration';
// static const commissionAndTransactions = 'Commission';
// static const termsAndConditions = 'Terms & Conditions';
// static const agents = 'Agents';
// static const webApp = 'Web App';
// static const contact = 'Contact Us';
// static const bannerText = 'Aya for electronic payment services';
// static const bannerSubText = '#Your money, in your mobile';
// static const downloadApp = 'Download App Now!';
// static const clickHere = 'Click Here To Try The App';
// static const inquireAboutYourWallet = 'Inquire About Your Wallet';
// static const readMore = 'Read More';
// static const forMoreDetailsAndToKnowCommissionRate =
// 'For more details and to know commission rate click here';
// static const forMoreDetails = 'For more details click here here';
// static const payYourBillsFromYourMobile = 'Pay your bills from your mobile!';
// static const payYourBillsFromYourMobileDetails =
// 'What you need to consume! Your bills and obligations will easily drive them with # verses from your mobile';
// static const allFinancialServicesYouNeedWithOneApp =
// 'All financial services you need with one application';
// static const allFinancialServicesYouNeedWithOneAppDetails =
// 'AYA provides you with your electronic wallet for free and compatible with all electronic payment services By estimated you pay: -Invoices -recharge - Payment of violations :( #Aea #Payment_Story_Assist ...';
// static const transferAndReceiveYourMoneySafely =
// 'Transfer and receive your money safely';
// static const transferAndReceiveYourMoneySafelyDetails =
// 'By creating an Aya wallet with a push of a button, you can easily transfer and receive your money What do you wait? Call to let you know about the network of agents deployed in all governorates of the Kingdom to benefit from the service free of charge 065509292...';
// static const payYouUniversityFees =
// 'Pay your university fees easily and securely';
// static const payYouUniversityFeesDetails =
// 'Wherever you are not, they are not pushing with any payment Contact us to create your wallet for free: 065509292 # Aya # Payment_right_First #Floosk_Bmobilek';
// static const sendAndReceiveYourFinancialTransaction =
// 'Send and receive your financial transaction from anywhere around the world';
// static const sendAndReceiveYourFinancialTransactionDetails =
// 'Send and receive your financial transaction from anywhere around the world using aya application';
// static const emptyValidator = 'This field is required';
// static const servicesProvidedApp = 'Services provided App by Aya Pay'; static const dashboard = 'Dashboard';
// static const paymentService = 'Payment service'; static const active = 'Active';
// static const paymentServiceSubText = 'Payment through electronic wallet'; static const current = 'Current';
// static const electronicWallet = 'Electronic wallet'; static const frequency = 'Frequency';
// static const electronicWalletSubText = static const energyUsage = 'Energy Usage';
// 'Inquire about the balance in the portfolio'; static const totalConsumption = 'Total Consumption';
// static const nfcTag = 'NFC Tag'; static const ACConsumption = 'AC Consumption';
// static const nfcTagSubText = static const units = 'Units';
// 'Electronic payment in transportation that supports electronic payment.'; static const emissions = 'Emissions';
// static const cashout = 'Cashout'; static const reductions = 'Reductions';
// static const cashoutSubText = }
// 'ATM Cashout service or through the nearest agent';
// static const payBills = 'pay bills';
// static const payBillsSubText = 'Billing Payment Service (EFAWATEERCOM)';
// static const atmCashout = 'ATM Cashout';
// static const atmCashoutSubText = 'Cash Cashout from Cairo Amman Bank';
// static const aboutUs = 'About Us';
// static const aboutUsDetails =
// 'AYA-JO is a mobile payment service provider licensed by the Central Bank of Jordan to operate in the Jordanian market. AYA-JO provides various ways to allow users to purchase their own goods using mobile phone applications. Approval of the entire process and its monitoring by the Central Bank of Jordan';
// static const footerSubmitAComplaint = 'Submit a complaint';
// static const footerSubmitAComplaintDetails =
// 'Call 06/5509292, ext. 300, available around the clock Or on the website, in the complaints tab, by all available means In the event that a solution to the problem is not reached within 30 working days, or in the absence of a convincing response from the company, or if the company refuses to receive the complaint, please contact the Central Bank of Jordan, Consumer Financial Protection Department, at 06/4630301.';
// static const footerContactUs = 'Contact Us';
// static const footerContactUsDetails =
// 'Amman - Garden Street - Building Carrefour No. 90 Floor 3\n\nTelephone: +962 6 092 92\n\nE-mail : info@aya.jo';
// static const footerEmail = 'E-mail : info@aya.jo';
// static const footerPhone = 'Telephone: +962 6 092 92';
// static const footerAddress =
// 'Amman - Garden Street - Building Carrefour No. 90 Floor 3';
// static const footerSubCategories = 'Sub Categories';
// static const footerLastNews = 'Last News';
// static const footerLastNewsDetails =
// 'Save your effort and time and pay from your mobile and win whatever you are Buy Online! Or even Freelancer!\nSave your time with Aya and open your portfolio with us at your nearest authorized agent.';
// static const footerCopyRight = '© 2017 - All Rights with aya';
// ///About Us Page Strings
// static const serviceFeature = 'Service Features';
// static const flexibleApplication =
// 'Flexible application: Our application allows multiple features and languages to be more user friendly.';
// static const protection =
// 'Protection: Save all your data and protect it with our security system to avoid data leakage.';
// static const ourMission = 'Our Mission';
// static const ourMissionDetails =
// 'Aya seeks to empower its employees and provide them with the best means of knowledge using state-of- the-art electronic payment technology to provide innovative solutions to achieve customer satisfaction and improve the level of services provided in line with the highest standards of quality and excellence.';
// static const ourVision = 'Our Vision';
// static const ourVisionDetails =
// 'Play a leading role in the mobile payment market in Jordan.';
// static const ourValues = 'Our Values';
// static const ourValuesDetails =
// 'High professionalism, credibility, fair competition, integration.';
// static const companyServices = 'Company Services';
// static const personalWallets = 'Personal Wallets';
// static const moneyDeposit =
// 'Money deposit and withdrawal: by charge your e-wallet through our agent network, payment cards and efawateercom.';
// static const moneyWithdrawal =
// 'Money withdrawal: proceeding a cash-out process through our agent network, POS machines, CAB ATMs network.';
// static const transferMoney =
// 'Transfer money between AYAJO customers or by sending/receiving transfers with any E-wallet account in jordan from any company.';
// static const payBillsForMoreThan250Services =
// 'Pay bills for more than 250 services (Internet, phone, electricity, water, government service..etc) through eFAWATEERcom system.';
// static const businessSolutions = 'Business Solutions';
// static const transportationSolution = 'Transportation Solution';
// static const posSystem = 'POS System';
// static const agentMerchantSystems = 'Agent Merchant Systems';
// static const technicalChannelsAndSolutions =
// 'Technical Channels and Solutions';
// static const eWalletMobileApp =
// 'E-wallet Mobile application with ability to access through web page';
// static const paymentCards = 'Payment Cards';
// static const qrCode = 'QR Code';
// ///Complains Page Strings
// static const complainsTitle = 'Submit a complaint';
// static const complainsDetails =
// 'Call 06/5509292, ext. 300, available around the clock Or on the website, in the complaints tab, by all available means In the event that a solution to the problem is not reached within 30 working days, or in the absence of a convincing response from the company, or if the company refuses to receive the complaint, please contact the Central Bank of Jordan, Consumer Financial Protection Department, at 06/4630301.';
// static const call06 =
// '1. Call 06/5509292, ext. 300, available around the clock';
// static const orOnTheWebsite =
// '2. Or on the website, in the complaints tab, by all available means';
// static const inTheEvent =
// '3. In the event that a solution to the problem is not reached within 30 working days, or in the absence of a convincing response from the company, or if the company refuses to receive the complaint, please contact the Central Bank of Jordan, Consumer Financial Protection Department, at 06/4630301.';
// static const name = 'name';
// static const enterYourName = 'Enter your name';
// static const email = 'email';
// static const enterYourEmail = 'Enter your email';
// static const mobileNumber = 'mobile number';
// static const enterYourMobileNumber = 'Enter your mobile number';
// static const dateOfTheProblem = 'date of the problem';
// static const enterDateOfTheProblem = 'Enter date of the problem';
// static const complaintText = 'complaint text';
// static const enterComplaintText = 'Enter complaint text';
// static const submitComplaint = 'Submit Complaint';
// static const complaintSubmitted = 'Complaint Submitted';
// ///registration page
// static const howToRegister = 'how to register - open E-wallet';
// static const afterSigningTheContract =
// 'After signing the contract at the agent, you will receive an SMS message containing the activation code';
// static const enterTheActivationCode =
// 'Enter the activation code and the mobile number by clicking on the Create Account button and then enter your password and your security code';
// static const thereIsNoMinimumBalance =
// 'There is no minimum balance, as you can open the wallet with a zero balance.';
// static const usingTheElectronicWallet = 'Using the electronic wallet: ';
// static const youCanPayThroughTheNumber =
// 'You can pay through the number of another subscriber with an electronic wallet';
// static const youCanAlsoBuyFromAnyStore =
// 'You can also buy from any store or supermarket that serves the electronic wallet';
// static const whenYouSubscribeToAya =
// 'When you subscribe to Aya, you get an NFC-Tag sticker that allows you to pay electronically in transportation that supports electronic payment.';
// static const yourMobileIsOld =
// 'Your mobile is old .... Simply you can also call * 999 # and follow the instructions';
// static const youCanPayMobileBills =
// 'You can pay mobile bills or electricity, water and more than sixty types of bills.';
// static const youCanGetAMasterCard =
// 'You can get a Master Card linked to your electronic wallet and enable you to withdraw cash from any ATM, buy goods and shop online, with the ability to control it through the application.';
// ///commission and transactions page
// static const transactionsTitle = 'Transactions:';
// static const service = 'Service';
// static const serviceDetails = 'Service Details';
// static const fees = 'Fees/ Dinar';
// static const transferBetweenIndividualsService =
// 'Transfer between individuals';
// static const transferBetweenSameIndividualsDetails =
// 'Transfer from individual aya pay wallet to individual aya pay wallet';
// static const transferBetweenSameIndividualsFees = 'Free';
// static const transferBetweenDifferentIndividualsDetails =
// 'Transfer from individual aya pay wallet to other individual wallet';
// static const transferBetweenIndividualsFeesDetailsLessThan50 =
// 'Less than 50 dinars';
// static const transferBetweenIndividualsFeesDetailsFrom50 =
// 'From 50 dinars to 100 dinars';
// static const transferBetweenIndividualsFeesDetailsFrom100 =
// 'From 100 dinars to 500 dinars';
// static const transferBetweenIndividualsFeesDetailsFrom500 =
// 'From 500 dinars to 1000 dinars';
// static const transferBetweenIndividualsFeesDetailsLessThan50Fees = '0.15';
// static const transferBetweenIndividualsFeesDetailsFrom50Fees = '0.25';
// static const transferBetweenIndividualsFeesDetailsFrom100Fees = '0.35';
// static const transferBetweenIndividualsFeesDetailsFrom500Fees = '0.5';
// static const cashDepositService = 'Cash deposit';
// static const cashDepositIndividualDetails =
// 'Deposit with an individual wallet at agents';
// static const cashDepositIndividualFees = 'Free';
// static const cashDepositCompanyDetails =
// 'Deposit with a corporate wallet at agents';
// static const cashDepositCompanyFees = '0.50';
// static const cashDepositAtATMDetails =
// 'Cash deposit through ATM without card';
// static const cashDepositAtATMFees = '1.0';
// static const cashWithdrawalService = 'Cash withdrawal';
// static const cashWithdrawalFromAgent = 'Cash withdrawal from agents';
// static const cashWithdrawalFromAgentLessThan20 = 'Less than 20 dinars';
// static const cashWithdrawalFromAgentFrom20 = 'From 20 dinars to 50 dinars';
// static const cashWithdrawalFromAgentFrom50 = 'From 50 dinars to 1000 dinars';
// static const cashWithdrawalFromAgentLessThan20Fees = '0.5';
// static const cashWithdrawalFromAgentFrom20Fees = '0.75';
// static const cashWithdrawalFromAgentFrom50Fees = '1';
// static const cashWithdrawalAtATMDetails =
// 'Cash withdrawal through ATM with card/without card';
// static const cashWithdrawalAtATMFees = '1';
// static const otherAdditionalServices = 'Other additional services';
// static const otherAdditionalPayThroughDetails = 'Pay through eFawateercom';
// static const otherAdditionalEVouchersDetails = 'E-vouchers';
// static const otherAdditionalPayThroughFees = 'No additional fees';
// static const otherAdditionalEVouchersFees = 'According to the voucher';
// static const internationalTransfersService = 'International transfers';
// static const internationalTransfersSendDetails =
// 'Send international transfers';
// static const internationalTransfersReceiveDetails =
// 'Receive international transfers';
// static const internationalTransfersSendFees = 'According to the country';
// static const internationalTransfersReceiveFees = 'Free';
// static const electronicCardsService = 'Electronic cards';
// static const electronicCardsIssueDetails =
// 'Issue an electronic card linked to the electronic wallet';
// static const electronicCardsResendDetails = "Resend the card's secret code";
// static const electronicCardsIssueFees = '5';
// static const electronicCardsResendFees = '1';
// static const solidAccountService = 'Solid account';
// static const solidAccountDetails = 'Monthly fees';
// static const solidAccountFees = '1';
// ///Services Page Strings
// static const definitions = 'Definitions';
// static const definitionsDescription =
// 'Since Aya Company for Electronic Payment Services is licensed by the Central Bank to connect to the national exchange and provide payment service through mobile phones in the Hashemite Kingdom of Jordan. Where I wish the site below to contract with the company or one of its agents for the purposes of opening an electronic wallet, and to benefit from payment services through mobile phones, in accordance with the terms and conditions of those services.';
// static const generalConditions = 'General Conditions';
// static const generalConditionsDescription =
// 'I hereby acknowledge that once I sign these Terms and Conditions, an agreement will be created in force and binding on me to apply to all transactions I carry out through the Mobile Payment Services.';
// static const clientResponsibilities = 'Client Responsibilities';
// static const clientResponsibilitiesDescription =
// 'The customer acknowledges that all data, information and documents provided by him are true and original and acknowledges his full responsibility for what is stated therein, the extent of its legality and any matters related to it.';
// static const companyResponsibilities = 'Company Responsibilities';
// static const companyResponsibilitiesDescription =
// 'The Company/Service Provider is obligated to inform the Client of the balance of his wallet immediately upon the end of any financial movement on his wallet.';
// ///Definitions Page Strings
// static const definitionsCompanyServiceProvider =
// 'Company/Service Provider: Aya Electronic Payment Company';
// static const definitionsAgent =
// 'Agent: One of the authorized agents of Aya Company for electronic payment service';
// static const definitionsServices = 'Service(s): Mobile Payment Service';
// static const definitionsBank = 'Bank:Central Bank of Jordan';
// static const definitionsCustomer =
// 'Customer: The natural and/or legal person who will open an electronic wallet in his name and who has signed these terms and conditions and who has been registered at the National Exchange through the service provider for the purposes of using the mobile payment service.';
// static const definitionsEWallet =
// 'E-wallet: It is the default account that is opened with the company in the name of the client to enable him to carry out mobile payment transactions';
// static const definitionsElectronicMoney =
// 'Electronic money: The value of cash stored electronically and issued against the receipt of cash amounts in the same type of currency and its value and is a means of payment transferable between the parties dealing in it by electronic means';
// ///general conditions
// static const conditionsIntroductionAndDefinitions =
// 'Introduction and Definitions are an integral part of this Agreement';
// static const conditionsApplicantMustBeAtLeast18YearsOld =
// 'The applicant must be at least 18 years old, and those under the age of 18 are required to submit the application by their guardian or his legal representative.';
// static const conditionsClientAuthorizesTheCompany =
// 'The Client authorizes the Company to send his data to the National Exchange for the purposes of registration and the Company is obligated to send the result of the registration process to the Client.';
// static const conditionsClientAuthorizesTheCompany2 =
// "The Client authorizes the Company/Service Provider with absolute and irrevocable authorization to credit the value of any executed transaction to the Client's wallet account with the Company/Service Provider.";
// static const conditionsUponTheOfficialRegistration =
// 'Upon the official registration of the Customer and activation of the Service, the Company/Service Provider issues a user code and PIN for the Customer and the Customer is committed to maintaining it and at his full responsibility.';
// static const conditionsTheUserCodeReceivedByTheCustomer =
// 'The "User and PIN" code received by the customer is considered as an acknowledgment by him of his consent to the execution of any orders, services or payment orders.';
// static const conditionsMobilePaymentServiceIsProvided =
// 'Mobile payment service is provided within the Hashemite Kingdom of Jordan exclusively and in Jordanian dinars only.';
// static const conditionsFinancialTransactionsThatTheCustomer =
// 'Financial transactions that the customer is allowed to carry out through the wallet without limitation: transfer and receipt of funds, payment of bills, payment to the merchant, withdrawal and deposit through ATMs or agents.';
// ///client responsibilities
// static const clientResTheCustomerAcknowledges =
// 'The customer acknowledges that all data, information and documents provided by him are duly correct and acknowledges his full responsibility for what is stated therein, the extent of its legality and any matters related to it.';
// static const clientResTheCustomerAcknowledges2 =
// 'The customer acknowledges that he has seen and understood the mechanism of operation of the services and any published information and can view it.';
// static const clientResTheCustomerIsObligated =
// 'The customer is obligated to review the mobile payment instructions, the operational framework and the instructions issued by the Central Bank of Jordan in this regard and any amendments that occur to them.';
// static const clientResTheClientAgrees =
// 'The Client agrees to consider all electronic records of the Company certified, documented, conclusive evidence and binding on him. It also agrees that the electronic register maintained and extracted from the national exchange and for all movements and operations carried out through the national exchange shall be considered the approved electronic register in the event of any dispute.';
// static const clientResTheCustomerIsInformed =
// 'The customer is informed that the service will be in Jordanian Dinars only, until the legislative authorities approve otherwise.';
// static const clientResTheClientAgrees2 =
// "The Client agrees to authorize the Company to have an absolute and irrevocable general authorization to credit the value of any executed transaction to the Client's Wallet Account with the Company.";
// static const clientResTheCustomerAcknowledges3 =
// 'The customer acknowledges that the use of the service is subject to the legislation in force issued by the Central Bank of Jordan.';
// static const clientResTheCustomerAcknowledges4 =
// "The customer acknowledges with his knowledge and personal consent that the customer's subscription is linked to the national number for Jordanians, or the national number of the establishment for private/public companies, or the identity identification number accepted in accordance with the legislation in force for non-Jordanians, and as stipulated in the instructions of combating money laundering and terrorist financing.";
// static const clientResTheCustomerIsObligated2 =
// 'The customer is obligated to replenish the electronic wallet and maintain sufficient balance for the purposes of using the electronic wallet, and it is not permissible to use mobile phone recharge cards for the purposes of replenishing the balance of electronic wallets.';
// static const clientResTheCustomerAcknowledges5 =
// "The customer acknowledges with his knowledge and personal consent that the customer's subscription is linked to the national number for Jordanians, or the national number of the establishment for private/public companies, or the identity identification number accepted in accordance with the legislation in force for non-Jordanians, and as stipulated in the instructions of combating money laundering and terrorist financing.";
// static const clientResTheCustomerIsObligated3 =
// 'The customer is obligated to replenish the electronic wallet and maintain sufficient balance for the purposes of using the electronic wallet, and it is not permissible to use mobile phone recharge cards for the purposes of replenishing the balance of electronic wallets.';
// static const clientResTheCustomerAcknowledges6 =
// "The customer acknowledges that the electronic wallet is linked to the mobile phone number provided / chosen by him, so that payment is made through electronic money that is transferred by the service provider / agent to the customer's wallet against the cash received, and then those electronic money are dealt with by the customer.";
// static const clientResTheCustomerAcknowledges7 =
// 'The customer acknowledges that he has reviewed the monthly limits for mobile payment transactions as stated in the instructions issued by the system administrator and any amendments that may occur to them.';
// static const clientResTheCustomerIsCommitted =
// 'The customer is committed to the ceiling of daily movements as stipulated in the instructions issued by the system administrator and any amendments that may occur to them.';
// static const clientResTheClientIsObliged =
// 'The Client is obliged, at his own risk, to inform the Company immediately in the event of loss and/or change of the mobile number registered with the Company, through the customer service available around the clock.';
// static const clientResTheCustomerMustSend =
// "The customer must send any complaints to the company's complaints center and/or call the number of the complaints center available around the clock.";
// static const clientResTheCustomerAcknowledges8 =
// 'The Customer acknowledges that if the mobile number is linked to his account, his data will be displayed at the originator of the transfer on the payment channels of the participants on the system.';
// static const clientResTheCustomerAgrees =
// "The Customer agrees in advance to show his/her personal data (name, account number and/or service provider name) to the originator of the remittance on the participants' payment channels on the system, when making a sending, receiving and/or inquiry for any money transfer.";
// static const clientResTheCustomerMustSend2 =
// "The Customer must send any suggestion to the Company's Customer Service Center and/or call the number of the Customer Service Center available around the clock.";
// static const clientResTheCustomerIsObligated4 =
// 'The customer is obliged, on his personal responsibility, to verify the details of the transaction in terms of the phone number of the receiver of the transaction and the value before executing the transaction, ensuring the protection of the personal password and adhering to all security and confidentiality rules as approved by the company, in addition to not issuing transactions without sufficient balances in his accounts.';
// static const clientResTheCustomerAcknowledges9 =
// 'The customer acknowledges and agrees that the company / service provider reserves the right at all times to amend the terms and conditions related to this service and after being notified of this procedure at his address shown above and by all available means with reasons, and also acknowledges his commitment to those terms and conditions after being amended and agrees that if he uses this service / services after making any amendments or changes to its terms or conditions, he accepts and agrees to all new and/or amended terms, conditions and conditions.';
// static const clientResTheCustomerIsObligated5 =
// "The customer is obligated to verify the movements he has made by entering the service provider's application or communicating with customer service in this regard.";
// static const clientResTheCustomerHasTheRight =
// 'The customer has the right to submit any suggestion or submit any complaint without incurring additional fees or commissions that may hinder his right to submit a complaint.';
// static const clientResInCaseOfDeath =
// 'In the event of the death of the customer, the funds in the electronic wallet will be seized, the seizure will not be released unless all requirements under the law in force in the Hashemite Kingdom of Jordan are met.';
// static const clientResTheElectronicWalletIsConsidered =
// "The electronic wallet is considered rigid if no financial movement is made on it for a period of one year, and in the event that it is not possible to communicate with the customer who owns the wallet and exhaust all means of communication with him, a commission will be collected in accordance with the pricing policy published on the company's website.";
// static const clientResTheCompanyShallNotify =
// 'The Company shall notify the Client at his address available with the Company that his electronic wallet will be considered rigid at least one month before the expiry of the period stipulated above.';
// static const clientResItIsNotAllowed =
// 'It is not allowed to accept any withdrawal or transfer transactions from the rigid electronic wallet except through the customer personally or his representative under a judicial power of attorney or duly approved authorization, or the authorized signatory of the electronic wallet in the case of a legal person to visit the payment service provider at its headquarters.';
// static const clientResInCaseTheClientOrHisLegal =
// 'In the event that the Client or his legal representative reviews the Company with the aim of reactivating the rigid electronic wallet or withdrawing the balance, the Company is obligated to reactivate the electronic wallet or disburse the existing balance.';
// static const clientResTheClientAcknowledges =
// 'The Client acknowledges that the Company has the right, after being informed of this, and in the event of any reason or in the event that the Client breaches the terms of the contract or shows the invalidity of';
// ///company responsibilities
// static const companyResTheCompanyIsObligated =
// 'The Company / Service Provider is obligated to inform the Client about the balance of his wallet, the type of movement he made and the remaining balance in the wallet immediately after the end of any movement executed on his wallet.';
// static const companyResTheCompanyIsCommitted =
// "The company is committed to the refund mechanism to customers in the event that the company / service provider stops providing the service in accordance with the company's work procedures.";
// static const companyResTheCompanyIsCommitted2 =
// "The company is committed to taking all necessary measures and precautionary measures to ensure the security and confidentiality of the client's information.";
// static const companyResTheCompanyIsCommitted3 =
// 'The company is committed to taking all necessary measures to comply with the service with all legislation in force in the Kingdom and any instructions issued by the Central Bank of Jordan and to comply with the requirements of money laundering and terrorist financing.';
// static const companyResTheCompanyIsCommitted4 =
// 'The Company is committed to providing the Client with a list of commissions, fees and benefits collected by the payment service provider for all products and services provided by the Company, as shown in the Special tab on commissions and commission ceilings on the website.';
// static const companyResTheCompanyIsCommitted5 =
// 'The company / service provider is committed to providing the appropriate environment and safe procedures to protect data and information related to customers.';
// static const companyResTheCompanyIsCommitted6 =
// 'The Company is committed to informing the Clients of the appropriate and available methods of any amendment that may occur to the list of commissions and fees that affect the Clients, 30 days before the application of the new prices and commissions.';
// static const companyResTheCompanyIsObligated2 =
// 'The company is obligated to accept any suggestions or complaints by customers without charging the client any commissions or additional fees and without imposing any conditions that may hinder his right to submit a complaint.';
// static const companyResTheCompanyIsObligated3 =
// 'The Company is committed to following special procedures in these cases (death of the client, freezing of the wallet, closure of the electronic payment account, or suspension of any payment tools or electronic means associated with them).';
// static const companyResTheCompanyIsObligated4 =
// 'The Company is obliged to clarify or inform the Client of the financial transactions allowed to be carried out as described in the General Conditions tab.';
// static const companyResTheCompanyIsObligated5 =
// 'The Company is obligated to provide the Client with a copy of the subscription contract signed with him and any notices, data or statements related to his electronic wallet, even if there is a judicial dispute between the Customer and the Service Provider.';
// ///agents
// static const agentsFindYour = 'Find your nearest agent with\nAya Finder';
// static const agentsHowToBecome = 'HOW TO BECOME AN AGENT';
// static const agentsFindYourDetails =
// 'You can now search for the nearest agent or service provider using Google Maps in an easy and fast way';
// ///agent finder
// static const ayaFinder = 'AYA Finder';
// static const ayaFinderDetails =
// 'You can search for your nearest agent to open a new wallet or top up your wallet using the map or visit one of our agents from the table below :';
// ///how to become an agent
// static const howToBecomeAnAgent = 'How to become an agent !';
// static const howToBecomeAnAgentDetails =
// 'To apply for Aya Agency for Electronic Payment Services, please fill out the application form below and we will contact you as soon as possible.';
// ///map
// static const howToSearchByMapTitle = 'How to search by map:';
// static const howToSearchByMapDetails =
// 'To determine your location, click on a bookmark, or you can type the place in the search box, then you have to click on the search button to have the map find your nearest agents';
// ///Error 404
// static const error404 = 'Error 404';
// static const error404Details =
// 'The page you are looking for does not exist or has been moved';
// ///contact us
// static const contactUsGetInTouch = 'GET IN TOUCH WITH US';
// static const contactUsGetInTouchDetails =
// 'Dear visitors, thank you for visiting Aya.Jo website. We welcome your letters, questions and suggestions that will receive attention and welcome from the team. We are always keen to build a relationship of mutual trust between us and our visitors, and to enhance interaction through responses to your messages. Feel free to send us your questions and suggestions, and our team will get back to you as soon as possible.';
// static const contactUsPublicAdministration = 'Public Administration';
// static const contactUsPublicAdministrationDetails =
// 'Amman - Garden Street - Carrefour Building No. 90, 3rd floor\nTel: (+92) 092 55 6 962\nFax: (+19) 880 56 6 962\nToll Free : 080022068\nsupport@aya.jo\nP.O.Box:930587 , Postal Code:11193 Amman, Jordan';
// static const contactUsWorkingHours = 'working hours';
// static const contactUsWorkingHoursDetails =
// 'Official working hours are from Sunday to Thursday from half past eight in the morning until half past five in the evening or call us at any time through the customer service center available seven days a week 24 hours a day.';
// static const contactUsFollowUsOn = 'Follow us on';
// }

View File

@ -16,19 +16,19 @@ ThemeData myTheme = ThemeData(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s35, fontSize: FontSize.s35,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
displayMedium: TextStyle( displayMedium: TextStyle(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s20, fontSize: FontSize.s20,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
displaySmall: TextStyle( displaySmall: TextStyle(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s16, fontSize: FontSize.s16,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
///title ///title
@ -36,19 +36,19 @@ ThemeData myTheme = ThemeData(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s48, fontSize: FontSize.s48,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
titleMedium: TextStyle( titleMedium: TextStyle(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s30, fontSize: FontSize.s30,
fontWeight: FontsManager.regular, fontWeight: FontsManager.bold,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
titleSmall: TextStyle( titleSmall: TextStyle(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s25, fontSize: FontSize.s25,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
///body ///body
@ -56,38 +56,38 @@ ThemeData myTheme = ThemeData(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s18, fontSize: FontSize.s18,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
bodyMedium: TextStyle( bodyMedium: TextStyle(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s14, fontSize: FontSize.s14,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
bodySmall: TextStyle( bodySmall: TextStyle(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s12, fontSize: FontSize.s12,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
labelLarge: TextStyle( labelLarge: TextStyle(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s18, fontSize: FontSize.s18,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
labelMedium: TextStyle( labelMedium: TextStyle(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s16, fontSize: FontSize.s16,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
labelSmall: TextStyle( labelSmall: TextStyle(
fontFamily: FontsManager.fontFamily, fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s14, fontSize: FontSize.s14,
fontWeight: FontsManager.regular, fontWeight: FontsManager.regular,
color: Colors.black, color: ColorsManager.textPrimaryColor,
), ),
), ),

View File

@ -1,61 +1,59 @@
// import '../../imports.dart'; abstract class AppMargin {
static const m8 = 8.0;
static const m12 = 12.0;
static const m14 = 14.0;
static const m16 = 16.0;
static const m18 = 18.0;
static const m20 = 20.0;
static const m24 = 24.0;
static const m32 = 32.0;
static const m40 = 40.0;
static const m65 = 65.0;
}
// class AppMargin { abstract class AppPadding {
// static const m8 = 8.0; static const p4 = 4.0;
// static const m12 = 12.0; static const p8 = 8.0;
// static const m14 = 14.0; static const p12 = 12.0;
// static const m16 = 16.0; static const p14 = 14.0;
// static const m18 = 18.0; static const p16 = 16.0;
// static const m20 = 20.0; static const paragraphPadding = 15.0;
// static const m24 = 24.0; static const p18 = 18.0;
// static const m32 = 32.0; static const p20 = 20.0;
// static const m40 = 40.0; static const titleSmallPadding = 20.0;
// static const m65 = 65.0; static const p24 = 24.0;
// } static const p32 = 32.0;
static const p40 = 40.0;
static const p65 = 65.0;
static const p80 = 80.0;
static const p100 = 100.0;
static const p150 = 150.0;
static const deskTopPadding = 160.0;
static const tabletPadding = 100.0;
static const mobilePadding = 40.0;
}
// class AppPadding { abstract class AppSize {
// static const p4 = 4.0; static const s8 = 8.0;
// static const p8 = 8.0; static const s12 = 12.0;
// static const p12 = 12.0; static const s14 = 14.0;
// static const p14 = 14.0; static const s16 = 16.0;
// static const p16 = 16.0; static const s18 = 18.0;
// static const paragraphPadding = 15.0; static const s20 = 20.0;
// static const p18 = 18.0; static const s24 = 24.0;
// static const p20 = 20.0; static const s32 = 32.0;
// static const titleSmallPadding = 20.0; static const s40 = 40.0;
// static const p24 = 24.0;
// static const p32 = 32.0;
// static const p40 = 40.0;
// static const p65 = 65.0;
// static const p80 = 80.0;
// static const p100 = 100.0;
// static const p150 = 150.0;
// static const deskTopPadding = 160.0;
// static const tabletPadding = 100.0;
// static const mobilePadding = 40.0;
// }
// class AppSize { static const double logoHeight = 80;
// static const s8 = 8.0; static const double appBarHeight = 40;
// static const s12 = 12.0; }
// static const s14 = 14.0;
// static const s16 = 16.0;
// static const s18 = 18.0;
// static const s20 = 20.0;
// static const s24 = 24.0;
// static const s32 = 32.0;
// static const s40 = 40.0;
// static const double logoHeight = 80; abstract class AppRadius {
// static const double appBarHeight = 40; static const r4 = 4.0;
// } static const r8 = 8.0;
static const r12 = 12.0;
// class AppRadius { static const r14 = 14.0;
// static const r4 = 4.0; static const r16 = 16.0;
// static const r8 = 8.0; static const r18 = 18.0;
// static const r12 = 12.0; static const r50 = 50.0;
// static const r14 = 14.0; }
// static const r16 = 16.0;
// static const r18 = 18.0;
// static const r50 = 50.0;
// }

View File

@ -5,10 +5,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: _flutterfire_internals name: _flutterfire_internals
sha256: "1a52f1afae8ab7ac4741425114713bdbba802f1ce1e0648e167ffcc6e05e96cf" sha256: "737321f9be522620ed3794937298fb0027a48a402624fa2500f7532f94aea810"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.21" version: "1.3.22"
args:
dependency: transitive
description:
name: args
sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
url: "https://pub.dev"
source: hosted
version: "2.4.2"
async: async:
dependency: transitive dependency: transitive
description: description:
@ -101,10 +109,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: dio name: dio
sha256: "797e1e341c3dd2f69f2dad42564a6feff3bfb87187d05abb93b9609e6f1645c3" sha256: "49af28382aefc53562459104f64d16b9dfd1e8ef68c862d5af436cc8356ce5a8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.4.0" version: "5.4.1"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
@ -133,26 +141,26 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_analytics name: firebase_analytics
sha256: edb9f9eaecf0e6431e5c12b7fabdb68be3e85ce51f941ccbfa6cb71327e8b535 sha256: "54681f6a8c35ec782c86680919953edbae66517a718fe7606a7ba52cfa1b36ca"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.8.5" version: "10.8.6"
firebase_analytics_platform_interface: firebase_analytics_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_analytics_platform_interface name: firebase_analytics_platform_interface
sha256: de4a54353cf58412c6da6b660a0dbad8efacb33b345c0286bc3a2edb869124d8 sha256: cf7378f407c26fd1f1cc808c0d791f2a15dd4f1fe0626bb2ce6a96663c4d8470
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.9.5" version: "3.9.6"
firebase_analytics_web: firebase_analytics_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_analytics_web name: firebase_analytics_web
sha256: "77e4c02ffd0204ccc7856221193265c807b7e056fa62855f973a7f77435b5d41" sha256: f62c7a2514771f6e122c5b55227c0c7fdaa253cc2fe6efce768897c0fb68a5ab
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.5.5+17" version: "0.5.5+18"
firebase_core: firebase_core:
dependency: "direct main" dependency: "direct main"
description: description:
@ -181,18 +189,18 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: firebase_crashlytics name: firebase_crashlytics
sha256: efd096e4c3d2c568e128505b6e4ce5f5d5a1629f700a4d6fee6bd25b85937dde sha256: "4c754db28a7daabe03c4cbf1079dbe81e6f0681284fed6d07e0e640b7f1027c4"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.4.14" version: "3.4.15"
firebase_crashlytics_platform_interface: firebase_crashlytics_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_crashlytics_platform_interface name: firebase_crashlytics_platform_interface
sha256: "225a54d834a118be262c1f1096d407515e35b99d9b474c987abdcff7663f2b81" sha256: "08c5d7b5f93dbad7306d26702935abd8b579313ea256eb27006562a1867df249"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.6.21" version: "3.6.22"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
@ -307,6 +315,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.0" version: "3.0.0"
flutter_svg:
dependency: "direct main"
description:
name: flutter_svg
sha256: d39e7f95621fc84376bc0f7d504f05c3a41488c562f4a8ad410569127507402c
url: "https://pub.dev"
source: hosted
version: "2.0.9"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -421,6 +437,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.8.3" version: "1.8.3"
path_parsing:
dependency: transitive
description:
name: path_parsing
sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf
url: "https://pub.dev"
source: hosted
version: "1.0.1"
path_provider: path_provider:
dependency: transitive dependency: transitive
description: description:
@ -469,6 +493,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.1" version: "2.2.1"
petitparser:
dependency: transitive
description:
name: petitparser
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
url: "https://pub.dev"
source: hosted
version: "6.0.2"
platform: platform:
dependency: transitive dependency: transitive
description: description:
@ -722,6 +754,30 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.3.3" version: "4.3.3"
vector_graphics:
dependency: transitive
description:
name: vector_graphics
sha256: "4ac59808bbfca6da38c99f415ff2d3a5d7ca0a6b4809c71d9cf30fba5daf9752"
url: "https://pub.dev"
source: hosted
version: "1.1.10+1"
vector_graphics_codec:
dependency: transitive
description:
name: vector_graphics_codec
sha256: f3247e7ab0ec77dc759263e68394990edc608fb2b480b80db8aa86ed09279e33
url: "https://pub.dev"
source: hosted
version: "1.1.10+1"
vector_graphics_compiler:
dependency: transitive
description:
name: vector_graphics_compiler
sha256: "18489bdd8850de3dd7ca8a34e0c446f719ec63e2bab2e7a8cc66a9028dd76c5a"
url: "https://pub.dev"
source: hosted
version: "1.1.10+1"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
@ -754,6 +810,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.4" version: "1.0.4"
xml:
dependency: transitive
description:
name: xml
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
url: "https://pub.dev"
source: hosted
version: "6.5.0"
sdks: sdks:
dart: ">=3.2.0 <4.0.0" dart: ">=3.2.0 <4.0.0"
flutter: ">=3.16.0" flutter: ">=3.16.0"

View File

@ -18,6 +18,7 @@ dependencies:
shared_preferences: ^2.2.2 shared_preferences: ^2.2.2
flutter_animated_dialog: ^2.0.1 flutter_animated_dialog: ^2.0.1
gap: ^3.0.1 gap: ^3.0.1
flutter_svg: ^2.0.9
# Utility Packages # Utility Packages
flutter_secure_storage: ^9.0.0 flutter_secure_storage: ^9.0.0
@ -26,12 +27,12 @@ dependencies:
intl: ^0.18.1 intl: ^0.18.1
get_it: ^7.6.7 get_it: ^7.6.7
url_launcher: ^6.2.4 url_launcher: ^6.2.4
dio: ^5.4.0 dio: ^5.4.1
flutter_localization: ^0.2.0 flutter_localization: ^0.2.0
flutter_bloc: ^8.1.4 flutter_bloc: ^8.1.4
firebase_core: ^2.25.4 firebase_core: ^2.25.4
firebase_analytics: ^10.8.5 firebase_analytics: ^10.8.6
firebase_crashlytics: ^3.4.14 firebase_crashlytics: ^3.4.15
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: